兩線段相交的相關演算法
徐明龍2013-01-24
前提:1)
點的大小比較a)設
p1(x1,y1),p2(x2,y2)
b)如果
x1 > x2
則p1 > p2
c)如果
x1 = x2
且大小由y1與
y2的關係決定
d)如果
x1 則
p1 2)
線的大小比較a)設
l1(p1,p2),l2(p3,p4)
b)如果
p1 則
l1c)
如果p1 = p3
則大小有
p2,p4
關係決定
d)如果
p1 > p3
則l1>l2
3)線的約束,線
p1始終小於p2且
p1 <> p2
演算法:獲取線的直線斜率(
x軸垂直時返回無窮大
,x軸平行時為零。
(p2.y
p1.y)/(p2.x-p1.x)
a)2中特殊情況需要先考慮,一直垂直於
x軸,和平行於x軸。
如果垂直於
x軸,則
p.x=p1.x
即可。如果平行於
x軸,則
p.y=p1.y
即可。b)
其他情況根據點斜公式判斷(
p.y-p1.y
斜率*(p.x-p1.x)
a)b)p1且
p在p1>p2
的直線上,如果
p>=p1
且p <=p2則p
必定在p1
p2的線段上。
兩點的向量公式:
x=p1.x-p2.x
y=p1.y-p2.y
向量的叉積(即向量相乘
v1*v2
v1*v2=v1.x*v2.y-v1.y*v2.x
獲取兩線段相交的型別。方法如下:
a)先判斷是否端點相交的情況
端點相交有以下幾種模式:p3在
p1p2
的線段上,
p4不在
p1p2
的直線上
兩直線平行交叉相乘 十字交叉法解析
十字交叉雙乘法沒有公式,一定要說的話 那就是利用 x 2 p q x pq x q x p 其中pq 為常數。x 2是 x的平方 1.因式分解 即和差化積,其最後結果要分解到不能再分為止。而且可以肯定乙個多項式要能分解因式,則結果唯一,因為 數域 f上的次數大於零的多項式 f x 如果不計零次因式的...
兩直線平行交叉相乘 十字交叉雙乘法沒有公式
十字交叉雙乘法沒有公式,一定要說的話 那就是利用 x 2 p q x pq x q x p 其中pq 為常數。x 2是 x的平方 1.因式分解 即和差化積,其最後結果要分解到不能再分為止。而且可以肯定乙個多項式要能 分解因式,則結果唯一,因為 數域 f上的次數大於零的多項式 f x 如果不計零 次因...
求兩直線交點 判斷兩線段相交 求線段交點
點的結構 struct point point double x,double y 線段的結構 struct egde egde point a,point b 建立的邊,存在的線段求兩直線 線段 交點 void getpoint point p1,point p2,point p3 point p...