計算幾何之 判斷兩個線段是否相交

2021-07-23 23:01:25 字數 1050 閱讀 1079

1. 判斷兩個線段是否相交,需要檢測線段是否兩兩橫跨。所謂橫跨,即是點p1 位於向量n 的一邊,且另一點p2 位於向量n 的另一邊; 

2. 此外, 還需考慮邊界情況,即一條線段的某個端點位於另一條線段上。

判斷線段p1p2, p3p4 是否相交, 演算法流程如下:

segment-intersect(p1, p2, p3, p4)

// 計算三個點構成的兩個向量的叉積;

1. d1 = dir (p3, p4, p1)

2. d2 = dir (p3, p4, p2)

3. d3 = dir (p1, p2, p3)

4. d4 = dir (p1, p2, p4)

5. if ((d1d2 < 0 and d3d4 < 0)

return true;

6. else if d1 == 0 and  on_polygon (p3, p4, p1)  

return true;

7. else if d2 == 0 and  on_polygon (p3, p4, p2)  

return true;

8. else if d3 == 0 and  on_polygon (p1, p2, p3)  

return true;

9. else if d4 == 0 and  on_polygon (p1, p2, p4)  

return true;

//  計算向量pipk 和向量pipj 的叉積;

1. dir (pi, pj, pk)

return (pk - pi) * (pj - pi);

// 判斷 pk 是否在以pi, pj 為對角線的矩形內;

2. on_polygon (pi, pj, pk)

if min(xi, xj) <= xk <= max(xi, xj) and min(yi, yj) <= yk <= max(yi, yj)

return true;

else  return false;

//  by 我執可破.  2016.10.23 於上海浦東.

判斷兩個線段是否相交

html xmlns lang en charset utf 8 判斷兩個線段是否相交問題title rel stylesheet href css reset.css rel stylesheet href css style.css head class wrap 判斷兩個線段是否相交h2 br...

計算幾何 判斷兩矩形是否相交

問題定義 給定兩個邊與座標軸平行的矩形,分別由左上角與右下角兩點指定 以此同時,我們可以用右上和左下的兩個點來進行推出同樣的結果。即矩形 p1,p2 與 p3,p4 判斷兩矩形是否相交。我的思路 如下圖所示,首先求出p1與p3點在x方向較大值與y方向較大值的交點,在下圖中就是p3,用紅點 記為m點 ...

判斷兩個線段相交

我們首先將問題分成如下幾個小問題討論 首先要解決的第乙個問題是判斷直線是否平行,我們首先假設四個點的座標為 前兩個點為a x1,y1 b x2,y2 後兩個點為 c x3,y3 d x4,y4 求出兩個直線的方向向量e1 x 1 x2 y1 y2 e2 x 3 x4 y3 y4 通過e 1 e2 求...