1
我已经实现了基于http://alienryderflex.com/polygon/的点中多边形算法。多边形算法中的点,当测试点位于多边形边上时返回true
它工作正常,但是,因为它在文章中说:
如果测试点在多边形的边界,该算法将提供不可预知的结果
原来我当测试点位于多边形的边界/边(以及顶点)时,需要算法返回true。
有两种:
- 另一种算法,这将帮助我。或
- 一种方法来修改这个算法,得到我想要的东西(例如,通过运行算法之前扩大多边形一点点)
该算法适用于浮点数,所以通常“边上”的概念比看起来更棘手。请参阅[每个计算机科学家应了解的浮点算术知识](https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)和[几何学中的健壮性问题的课堂示例计算](https://people.mpi-inf.mpg.de/~mehlhorn/ftp/classroomExamplesNonrobustness.pdf)。 –
无论如何,您可以对您关心的情况进行预检。即如果点在多边形的边的ε内,则返回true。如果你的坐标是整数,那么你甚至可以用epsilon = 0来做到这一点。但即使对于多边形之外的距离为epsilon的点,该算法也可能返回true,因为它可能适用于浮点数 –