作者PaulErdos (My brain is open)
看板Math
標題Re: [運算] 怎算出兩條線有沒有交叉?
時間Fri Feb 11 12:10:45 2011
※ 引述《VVVVii (aa)》之銘言:
: ※ [本文轉錄自 MATLAB 看板 #1DL9pjiq ]
: 作者: VVVVii (aa) 看板: MATLAB
: 標題: [運算] 怎算出兩條線有沒有交叉?
: 時間: Fri Feb 11 10:20:27 2011
: 我有點a,b,c,d座標都已知
: a=(ax,ay),
: b=(bx,by),
: c=(cx,cy),
: d=(dx,dy),
: 這四點都在第一象限,不考慮座標等於零的情況
: 我要怎麼知道a,b連線(稱作M),與c,d連線(稱作N)有沒有交叉?
: 畫出來雖然一看就知道,但是我必須自動處理大量類似問題。
: 懇請賜教
你的意思大概是指"線段"有沒有交叉
對於一條直線 如果我們把兩個線外的點代入直線方程式
代入的結果一正一負 則兩個點在直線的異側
_ _
只要C D 在AB的異側 且 A B 在CD的異側 這樣就行了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.71.37.62
1F:→ VVVVii :對,是線段 02/11 14:55
2F:→ VVVVii :挖靠你這樣好聰明喔!不用解兩個方程還要算range 02/11 14:57
3F:推 FF16 :好方法....我想了兩分鐘才搞懂.... 02/11 16:20
4F:推 ostrichw :還是得算到兩條直線方程式..這樣子code好像也沒較少 02/11 19:08
5F:→ ostrichw :不過這很好的idea 02/11 19:09
6F:推 robertshih :這個方法也是只能求直線 對線段無效 而且求出方程式 02/12 14:08
^^^^^^^^^^
你再想一下
7F:→ robertshih :已經有點殺雞用牛刀了 02/12 14:08
8F:推 VVVVii :有沒有不用求方程式直接用投影法判斷的方法? 02/12 16:32
※ 編輯: PaulErdos 來自: 219.71.38.45 (02/12 21:39)
9F:推 VVVVii :我覺得對線段有效阿 02/13 06:34
10F:→ PaulErdos :我不清楚code寫起來如何,如果利用斜率:AB在AC AD間 02/13 15:55
11F:→ PaulErdos :且CD斜率在 CA CB 之間 這樣寫不知會不會比較簡便 02/13 15:56
12F:→ PaulErdos :這也是類似同側異側的概念 沒用到直線方程式 02/13 15:56