兩條線段有且僅有乙個公共點,且這個點不是任何一條線段的端點時,稱這兩條線段是嚴格相交的。
也就是說線段不嚴格相交時可以將端點作為交點,但本文不討論不嚴格相交,只討論嚴格相交的情況(即使它們在演算法實現上差別不大)。
在判斷兩條線段是否相交時,我們常用快速排斥實驗跟跨立實驗這兩種方法,快速排斥實驗能很快的排除掉線段不相交的情況,但並沒法成為線段相交的充要條件,在快速排斥實驗之後接上跨立實驗就能完全的判斷兩線段是否相交,但其實只用跨立實驗這一種辦法也能作為判斷線段相交的充要條件。
1.快速排斥實驗:
假設以線段p1,p2為對角線作一矩形r,再以q1,q2為對角線作矩形t,當兩個矩形不相交的時候兩條線段肯定不相交,即線段相交的必要條件時矩形相交。
p1座標為(p1x,p1y),p2座標為(p2x,p2y),q1的座標為(q1x,q1y),q2的座標為(q2x,q2y)。
那矩形相交的條件就是:
min(p1x,p2x) <= max(q1x,q2x) &&
min(q1x,q2x) <= max(p1x,p2x) &&
min(p1y,p2y) <= max(q1y,q2y) &&
min(q1y,q2y) <= max(p1y,p2y);
程式設計裡只要寫出min(int a,int b)跟max(int a,int b)這兩個函式,再將上面的條件放進if() 語句就能初步確定線段有沒有相交的可能性。
向量叉積
判斷兩線段是否相交
判斷兩線段是否相交 我們分兩步確定兩條線段是否相交 1 快速排斥試驗 設以線段 p1p2 為對角線的矩形為r,設以線段 q1q2 為對角線的矩形為t,如果r和t不相交,顯然兩線段不會相交。2 跨立試驗 如果兩線段相交,則兩線段必然相互跨立對方。若p1p2跨立q1q2 則向量 p1 q1 和 p2 q...
python判斷兩線段是否相交 判斷兩線段是否相交
演算法一 1.快速排斥實驗 設一線段p1p2為對角線的矩形為p,設一線段q1q2為對角線的矩形為q,如果p和q不相交,顯然兩線段不會相交。以下2種 方法1 方法2 方法判斷矩形是否相交僅限於正矩形。方法1 已知2個正矩形rect1 rect2 設兩個正矩形相交一定得到乙個正矩形rect 如果minx...
判斷兩個線段是否相交
html xmlns lang en charset utf 8 判斷兩個線段是否相交問題title rel stylesheet href css reset.css rel stylesheet href css style.css head class wrap 判斷兩個線段是否相交h2 br...