0%

02 - 在 2D 中两条隐式直线的相交性检测

在 2D 中两条隐式直线的相交性检测

计算两条直线的交点。

1
2
3
4
5
6
bool intersection(float a1, float b1, float c1, float a2, float b2, float c2) {
if((a1*b2 - a2*b1) == 0)
return false;

return true;
}

定义:

{L1:a1x+b1y+c1=0L2:a2x+b2y+c2=0{x=b1c2b2c1a1b2a2b1y=a2c1a1c2a1b2a2b1\begin{cases} L_1 : a_1x + b_1y + c_1 = 0 \\[3ex] L_2 : a_2x + b_2y + c_2 = 0 \end{cases} \Rightarrow \begin{cases} x = \cfrac {b_1c_2 - b_2c_1} {a_1b_2 - a_2b_1} \\[3ex] y = \cfrac {a_2c_1 - a_1c_2} {a_1b_2 - a_2b_1} \end{cases}

  • 唯一解:分母 (a1b2a2b1)(a_1b_2 - a_2b_1) 为非零值。
  • 无解:分母为零,两条直线平行。
  • 无穷多解:分母为零,两条直线重合。