判斷直角座標系中兩條線段是否相交

2021-08-16 04:25:41 字數 875 閱讀 3733

已知:其中一條線段兩個端點為(x1,y1),(x2,y2),另一條線段的兩個端點為(x3,y3),(x4,y4)

問題:判斷兩條線段是否相交

解題思路:

方法1:利用向量的叉積判斷

(向量叉積得到的非零係數與0比較大小)

向量ab×向量ac>0    ----->    c在直線ab上方

向量ab×向量ad<0     ----->    d在直線ab下方

對於線段ab和線段bd,判斷他們是否相交,只需利用上述原理,判斷c和d是否位於ab所在直線的兩側以及判斷

a和b是否位於cd所在直線的兩側即可,若是,則兩條線段相交

具體**:

#include#includeusing namespace std;

#define temp 1e-10

int main()

else

else if( (x3-x1)*(x4-x1)<=temp ) flag++;

if(flag)

else if( (x1-x3)*(x2-x3)<=temp ) flag++;

} }if(flag==2) printf("yes\n");

else printf("no\n");

return 0;

}

(第一次發部落格,如有錯誤還請指正,不勝感激)

判斷兩條線段是否相交

如上圖,判斷線段ab和線段cd相交。分析 如果線段ab和線段cd相交,只能是圖中的兩種相交情況。可以用向量叉乘來判斷。如果 向量ab叉乘向量ac 向量ab叉乘向量ad 0 並且 向量cd叉乘向量ca 向量cd叉乘向量cb 0,那麼說明線段ab與線段cd相交。設a x1,y1 b x2,y2 c x3...

判斷兩條線段是否相交

題目 給定兩條線段,判斷這兩條線段是否相交,線段ab的表示形式是a x1,y1 b x2,y2 線段cd的表示形式為c x3,y3 d x4,y4 那麼我們如何判斷線段ab與線段cd是否相交。解析 在介紹如何解決線段相交問題之前,我們先介紹向量的叉積。如下圖所示 下面的圖 1 表示p1向量在p2向量...

判斷兩條線段是否相交

1.必備知識 向量積 矢積 與數量積 標積 的區別 名稱標積 內積 數量積 點積 矢積 外積 向量積 叉積 表示式 a,b和c粗體字,表示向量 a b a b cos a b c,其中 c a b sin c的方向遵守右手定則 幾何意義 向量a在向量b方向上的投影與向量b的模的乘積 c是垂直a b所...