看板 Math 關於我們 聯絡資訊
※ 引述《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
VVVVii :對,是線段 02/11 14:55
VVVVii :挖靠你這樣好聰明喔!不用解兩個方程還要算range 02/11 14:57
FF16 :好方法....我想了兩分鐘才搞懂.... 02/11 16:20
ostrichw :還是得算到兩條直線方程式..這樣子code好像也沒較少 02/11 19:08
ostrichw :不過這很好的idea 02/11 19:09
robertshih :這個方法也是只能求直線 對線段無效 而且求出方程式 02/12 14:08
^^^^^^^^^^ 你再想一下
robertshih :已經有點殺雞用牛刀了 02/12 14:08
VVVVii :有沒有不用求方程式直接用投影法判斷的方法? 02/12 16:32
※ 編輯: PaulErdos 來自: 219.71.38.45 (02/12 21:39)
VVVVii :我覺得對線段有效阿 02/13 06:34
PaulErdos :我不清楚code寫起來如何,如果利用斜率:AB在AC AD間 02/13 15:55
PaulErdos :且CD斜率在 CA CB 之間 這樣寫不知會不會比較簡便 02/13 15:56
PaulErdos :這也是類似同側異側的概念 沒用到直線方程式 02/13 15:56