演算法 兩條線段求交點

2022-06-07 05:06:07 字數 504 閱讀 1458

問題情景:

驗證兩條線段是否相交時,需求兩條線段的交點

演算法詳解:

已知兩個線段分別是(x1,y1)(x2,y2)以及(x3,y3)(x4,y4)。

設線段所在的直線方程為ax+by+c=0

a1=y2-y1, b1=-(x2-x1), c1=-a1*x1-b1*y1=-x1*y2+x2*y1;

a2=y4-y3, b2=-(x4-x3), c2=-a2*x3-b2*y3=-x3*y4+x4*y3;

d=a1*b2-a2*b1

1. 判斷是否相切:a1/b1=a2/b2;

2. 判斷是否共線:a1/a2=c1/c2;

3. 求取交點:((b1*c2-b2*c1)/d,(a2*c1-a1*c2)/d)

4. 若判斷兩線段是否相交,則需要判斷交點是否在這兩條線段上(方法不限)。

**優化:

上面許多表示式都可以用以下叉乘公式來代替

func(a,b,c,d)  return a*d-b*c;

判斷兩條線段 直線相交,並求交點

一.向量基本知識 因為後面的計算需要一些向量的基本知識,這裡只是簡單的列舉如下,如果需要更加詳細的資訊,可以自行搜尋wikipedia或google。1.向量的概念 如果一條線段的端點是有次序之分的,我們把這種線段成為有向線段 directed segment 如果有向線段p1p2的起點p1在座標原...

計算幾何之求兩條線段的交點

這個圖是從知乎上儲存下來的 其實主要是利用了三角形的相似 如下 兩點式直線公式 x x1 x2 x1 y y1 y2 y1 x y2 y1 y x1 x2 x1 y1 y2 y1 x2 x1 0 a y2 y1,b x1 x2,c x1 y1 y2 y1 x2 x1 x,y d2 d1 d2 x3,...

兩條線段是否相交及交點座標

兩條線段是否相交及交點座標 思路 已知兩條線段的起點和終點座標 先分別求出兩條線段的解析式,然後分情況討論。lua 如下 function uiutil getposoftowline pointa,pointb,pointm,pointn ab線段,mn線段 local xa,ya pointa....