文章目录
一、原理推导和公式说明
1.1 两条线段求交的数学原理
设有两条线段 A B AB AB 和 C D CD CD,它们的端点坐标分别为 A ( x a , y a ) A(x_a, y_a) A(xa,ya), B ( x b , y b ) B(x_b, y_b) B(xb,yb) 和 C ( x c , y c ) C(x_c, y_c) C(xc,yc), D ( x d , y d ) D(x_d, y_d) D(xd,yd)。要找出这两条线段是否相交,我们可以使用参数方程和行列式的概念。
首先,
-
线段 A B AB AB 的方程:
{ x = x a + t ( x b − x a ) y = y a + t ( y b − y a ) \begin{cases} x = x_a + t(x_b - x_a) \\ y = y_a + t(y_b - y_a) \end{cases} { x=xa+t(xb−xa)y=ya+t(yb−ya)
其中, t t t在 [ 0 , 1 ] [0, 1] [0,1] 范围内变化,表示从点 A A A 到点 B B B 的相对位置。 -
线段 C D CD CD 的方程:
{ x = x c + u ( x d − x c ) y = y c + u ( y d − y c ) \begin{cases} x = x_c + u(x_d - x_c) \\ y = y_c + u(y_d - y_c) \end{cases} { x=xc+u(xd−xc)y=yc+u(yd−yc)
其中, u u u 在 [ 0 , 1 ] [0, 1] [0,1] 范围内变化,表示从点 C C C 到点 D D D 的相对位置。
要使两个方程组表示同一个点,则交点的参数应满足:
{ x a + t ( x b − x a ) = x c + u ( x d − x c ) y a + t ( y b −