我的解决方案存在严重错误,标记为删除。
答案 0 :(得分:1)
在不知道你认为“不可靠”的情况下,这里有两个错误:
1)您正在将线段扩展为无限线,找到它们的交点,然后查看该交点的x和y值是否位于段的一个的x和y值之间。您应该将它与两个段的x和y值进行比较。
考虑这两个部分:(1,0) - (0,1)和(1,1) - (2,2)。您的公式计算xi
和yi
都为0.5,这是完全正确的。你检查0.5和0,1之间的0.5位 - 它确实如此。但它不在1和2之间。
换句话说,您的交叉点位于段的一个上,但它不在其他段上。
2)您还应该考虑x1
并不总是小于x2
等。如上例所示,y1< y2但是x1> X2。如果你翻转端点,则反之亦然。