**
一般方程法:
直線的一般方程為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...