多边形自相交测试的数值精度

时间:2011-11-18 11:17:19

标签: javascript computational-geometry

我已经实现了多边形自相交的测试。因为性能不是那么重要,我只是使用蛮力方法并检查每个部分相互之间。要测试线路交叉,我使用发布的here函数。这样做很安静。详细地说,线交叉测试的结果还将多边形本身的顶点作为交叉点。在这里我的问题发挥作用。有时候这个测试失败了,因为计算交点只是和javascript一样精确,并且不可能将交叉点与顶点区分开来。这会导致错误的测试结果,告诉我多边形自相交,即使它没有。

我该如何解决这个问题?舍入此测试的值也会导致错误的结果吗?我怎样才能正确克服这个问题?

1 个答案:

答案 0 :(得分:2)

我完全避免此类问题的唯一选择是使用精确的数学库或一组精确的几何谓词。我假设这些东西存在于javascript中,但它们在服务器端可能更实用。

CGAL,最好的计算几何库之一(无论语言如何),在philosophy page及其FAQ中详细讨论了这个问题。