判斷兩條線段是否相交

2021-07-12 03:45:45 字數 1516 閱讀 1328

題目:給定兩條線段,判斷這兩條線段是否相交,線段ab的表示形式是a(x1,y1)b(x2,y2),線段cd的表示形式為c(x3,y3)d(x4,y4)。那麼我們如何判斷線段ab與線段cd是否相交。

解析:在介紹如何解決線段相交問題之前,我們先介紹向量的叉積。如下圖所示:

下面的圖(1)表示p1向量在p2向量的順時針方向,圖(2)表示p1向量在p2向量逆時針方向,圖(3)表示p1向量與p2向量共線,我們只畫出了同向共線的情況,反向共線的情況同理可得。

有了上面的叉積運算,很容易判斷兩條線段是否相交,比如說我們要判斷線段p1p2與線段p3p4是否相交。(1)計算p1p3向量與p1p2向量的叉積值。(2)計算p1p4向量與p1p2向量的叉積值。(3)判斷這兩個叉積值是否為異號。(4)計算p3p1向量與p3p4向量的叉積值。(5)計算p3p2向量與p3p4向量的叉積值。(6)判斷這兩個叉積值是否為異號。(7)如果這兩對叉積值都為異號,則說明兩條線段相交,否則則不想交。如下圖所示:

有一種特殊情況:比如說下圖中的左圖中線段p1p2與線段p3p4相交。向量p1p3與向量p1p2的叉積值為零。右圖中線段p1p2與線段p3p4不相交。但是向量p1p3與向量p1p2的叉積值也為零。那麼我們如何處理這種情況:我們只需要判斷p3點在p1點與p2點之間即可,也就是說x1<=x3<=x2且y1<=y3<=y2。

判斷兩條線段是否相交

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

判斷兩條線段是否相交

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

判斷兩條線段是否相交

判斷兩條線段是否相交,可以採用向量積的方式來判斷,如下圖所示 現定義乙個函式初步判斷兩線段是否相交,如下 初步根據外圍框大致判斷兩條線段是否相交 線段1的座標,長度為6 線段2的座標,長度為6 返回型別為bool,如果為true表示兩條線段可能相交,如果為false表示兩條線段不相交 private...