求兩直線的交點

2021-07-29 21:32:51 字數 980 閱讀 3792

**

一般方程法:

直線的一般方程為f(x) = ax + by + c = 0。既然我們已經知道直線的兩個點,假設為(x0,y0), (x1, y1),那麼可以得到a = y0 – y1, b = x1 – x0, c = x0y1 – x1y0。

因此我們可以將兩條直線分別表示為

f0(x) = a0*x + b0*y + c0 = 0, f1(x) = a1*x + b1*y + c1 = 0

那麼兩條直線的交點應該滿足

a0*x + b0*y +c0 = a1*x + b1*y + c1

由此可推出

x = (b0*c1 – b1*c0)/d

y = (a1*c0 – a0*c1)/d

d = a0*b1 – a1*b0, (d為0時,表示兩直線平行,因此在求交點之前應先檢查斜率是否相等)

二者實際上就是連立方程組f0(x) = a0*x + b0*y + c0 = 0, f1(x) = a1*x + b1*y + c1 = 0的叉積應用

i     j     k

a0 b0 c0

a1 b1 c1

[cpp]view plain

copy

#include"iostream"

#include"stdio.h"

#include"math.h"

using

namespace

std;  

struct

point  

;  struct

line  

;  void

getlinepara(line *l)  

point getcrosspoint(line *l1,line *l2)  

intmain()  

return

0;  

}  

求兩直線交點 判斷兩線段相交 求線段交點

點的結構 struct point point double x,double y 線段的結構 struct egde egde point a,point b 建立的邊,存在的線段求兩直線 線段 交點 void getpoint point p1,point p2,point p3 point p...

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

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

求兩條直線的關係及交點

給你兩條直線,判斷這兩條直線是否共線,相交,不相交 即平行 相交的話輸出交點。判斷平行,然後通過叉積判斷是否共線。平行判斷可以判斷兩條直線的斜率是否相等。交點的話,相當於聯立方程組求解了。這些方程看模板理解的,剛才搜了下,有人講得比較清楚,借鑑下 如何判斷是否同線?由叉積的原理知道如果p1,p2,p...