求兩條直線的關係及交點

2021-06-19 03:58:40 字數 831 閱讀 7970

給你兩條直線,判斷這兩條直線是否共線,相交,不相交(即平行),相交的話輸出交點。

判斷平行,然後通過叉積判斷是否共線。

平行判斷可以判斷兩條直線的斜率是否相等。

交點的話,相當於聯立方程組求解了。

這些方程看模板理解的,剛才搜了下,有人講得比較清楚,借鑑下

如何判斷是否同線?由叉積的原理知道如果p1,p2,p3共線的話那麼(p2-p1)x(p3-p1)=0。因此如果p1,p2,p3共線,p1,p2,p4共線,那麼兩條直線共線。direction()求叉積,叉積為0說明共線。

如何判斷是否平行?由向量可以判斷出兩直線是否平行。如果兩直線平行,那麼向量p1p2、p3p4也是平等的。即((p1.x-p2.x)*(p3.y-p4.y)-(p1.y-p2.y)*(p3.x-p4.x))==0說明向量平等。

如何求出交點?這裡也用到叉積的原理。假設交點為p0(x0,y0)。則有:

(p1-p0)x(p2-p0)=0

(p3-p0)x(p2-p0)=0

展開後即是

(y1-y2)x0+(x2-x1)y0+x1y2-x2y1=0

(y3-y4)x0+(x4-x3)y0+x3y4-x4y3=0

將x0,y0作為變數求解二元一次方程組。

假設有二元一次方程組

a1x+b1y+c1=0;

a2x+b2y+c2=0

那麼x=(c1*b2-c2*b1)/(a2*b1-a1*b2);

y=(a2*c1-a1*c2)/(a1*b2-a2*b1);

因為此處兩直線不會平行,所以分母不會為0。

求兩條直線(線段)的交點

如圖,如何求得直線 ab 與直線 cd的交點p?以上內容摘自 演算法藝術與資訊學競賽 思路就是利用叉積求得點p分線段dc的比,然後利用高中學習的定比分點座標公式求得分點p的座標。看不懂的可以去複習下 定比分點 的知識。include include include include using nam...

計算兩條直線的交點 C

ps 從其他地方看到的原始碼是有問題的。下面是修正後的 計算兩條直線的交點 l1的點1座標 l1的點2座標 l2的點1座標 l2的點2座標 public static pointf getintersection pointf linefirststar,pointf linefirstend,po...

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

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