用于检查2个线段之间的交叉点的Java实现?

时间:2015-03-10 12:39:03

标签: java geometry

我的解决方案存在严重错误,标记为删除。

1 个答案:

答案 0 :(得分:1)

在不知道你认为“不可靠”的情况下,这里有两个错误:

1)您正在将线段扩展为无限线,找到它们的交点,然后查看该交点的x和y值是否位于段的一个的x和y值之间。您应该将它与两个段的x和y值进行比较。

考虑这两个部分:(1,0) - (0,1)和(1,1) - (2,2)。您的公式计算xiyi都为0.5,这是完全正确的。你检查0.5和0,1之间的0.5位 - 它确实如此。但它不在1和2之间。

换句话说,您的交叉点位于段的一个上,但它不在其他段上。

2)您还应该考虑x1并不总是小于x2等。如上例所示,y1< y2但是x1> X2。如果你翻转端点,则反之亦然。