計算線段或直線與線段的交點

1. 使用矢量叉乘積判斷線段與線段(或直線)是否相交。若是結果是相交,那麼在後面就能夠將線段所有看作直線來考慮。.net

2.兩條線段共線狀況須要單獨考慮。blog

3.使用直線或線段方程計算,能夠把方程式改成ax + by + c = 0。get

 

設一條線段爲L0 = P1P2,另外一條線段或直線爲L1 = Q1Q2:(步驟4和步驟5與步驟二、步驟3類似,只是橫縱方向不一樣)it

第一步:判斷L0和L1是否相交,若是沒有相交就沒有交點,不然L0,L1必定有交點,下面就能夠看作直線來考慮。im

第二步:若P1和P2的橫座標相同,即L0平行於y軸:img

1. 若L1也平行於y軸,則L0L1共線或平行。(P1和Q1橫座標相同共線,不相同平行)360

2. 交點橫座標爲P1或P2橫座標,帶入L1方程求出縱座標。ps

第三步:若P1P2橫座標不一樣,可是Q1Q2的橫座標相同,即L1平行於y軸,則交點橫座標爲Q的橫座標,帶入到L0的直線方程中便可計算交點縱座標。tar

第四步:若是P1P2縱座標相同,即L0平行於x軸:

1. 若L1也平行於x軸,則L0L1平行或共線。

2. 交點縱座標P1或P2的縱座標,帶入L1方程式求出交點橫座標。

第五步:如P1P2的縱座標不一樣,可是Q1Q2的縱座標相同,即L1平行於x,則交點縱座標爲Q1的縱座標,帶入L0直線方程計算交點橫座標。

第六步:剩下步驟爲L0L1斜率均不爲0的狀況。

1.計算L0斜率K0,L1斜率K1。

2. 若K0=K1, 若Q1在L0上,則L0L1共線,若是不在L0上則平行。

3. 聯立兩直線的方程組能夠解出交點。

相關文章
相關標籤/搜索