Lous Blog

两线段相交判断

已知两线段 $AB$ 和 $CD$ 四个端点的坐标,判断其是否相交。

其中$A(x_a,y_a)$、$B(x_b,y_b)$、$C(x_c,y_c)$、$D(x_d,y_d)$

直接拟合求解方程

根据$AB$计算直线表达式

$k_{AB}x+b_{AB}=y$

$k_{CD}x+b_{CD}=y$

求解两方程 若平行则判断是否有重合部分

不平行则判断交点$I(x,y)$是否都在$AB$和$CD$上

向量叉乘判断

假设$AB$和$CD$不是平行或者端点相交

那么$A$和$B$必须分别处于$CD$的两边,同理$C$和$D$也必须处于$AB$两边

则$\overrightarrow{AC} \times \overrightarrow{AB}$和$\overrightarrow{AB} \times \overrightarrow{AD}$同向,同理$\overrightarrow{CA} \times \overrightarrow{CD}$和$\overrightarrow{CD} \times \overrightarrow{CB}$同向。

假如$AB$和$CD$平行,先判断$ABCD$四点是否有重合。若无重合点,则计算 $\overrightarrow{AB} \times \overrightarrow{AC}$是否为$0$。

为$0$说明共线,才有相交的可能性。

共线完了后再判断$C$或$D$是否在$AB$上