如果两者之间有交叉点,如何根据坐标对确定?

时间:2013-06-01 19:40:00

标签: geometry

我有两个由两个x,y坐标表示的线段,如下所示:

[(x1,y1),(x2,y2)] //start & end of first line
[(x3,y3),(x4,y4)] //start & end of second line

确定这些线路中是否存在交叉点的最有效方法是什么?

2 个答案:

答案 0 :(得分:0)

有一个交叉点iff

<(>(X3-X1)*(Y2-Y1) - (Y3-Y1)*(X2-X1))*((X4-X1)*(Y2-Y1) - (Y4-Y1)*( X2-X1))&lt; = 0)

<(>(X1-X3)*(Y4-Y3) - (Y1-Y3)*(X4-X3))*((X2-X3)*(Y4-Y3) - (Y2-Y3)*( X4-X3))&lt; = 0)

答案 1 :(得分:0)

获取由您检查碰撞的线的第一个矢量/线和端点形成的三角形,并通过行列式获取其面积。将其面积与另一个端点形成的三角形区域进行比较。如果他们都是正面/负面,那么就没有交集。如果他们的标志不同,那么可能是一个交叉点。

如果它们的符号不同,请执行与上述相同的操作,除非使用原始矢量的端点而不是线的端点。 (并使用整行而不是原始向量)。

如果他们的标志不同,那么肯定有一个交叉点,如果它们是相同的,那么就没有交叉点。

有用的链接: 采用三角形的行列式:Here

评估决定因素:Here

如果有什么事情没有意义,请告诉我!