我已经实现了基于 http://alienryderflex.com/polygon/ 的多边形点算法.
它工作正常,但是,正如文章中所说:
If the test point is on the border of the polygon, this algorithm will deliver unpredictable results
事实证明,当测试点位于多边形的边界/边缘(和顶点)时,我需要算法返回 true。
是否有:
- 一种对我有帮助的替代算法;或
- 一种修改此算法以获得我想要的东西的方法(例如,在运行算法之前稍微扩展多边形)
最佳答案
稍微扩展多边形是一种选择,但这对于凹多边形可能很棘手。
我的建议是将点向不同的方向(上/下/左/右)移动一点点,然后对每个移动的点进行计算。如果确定至少有一个移动点在内部,则将其视为在内部。
另一种选择是让计算交叉点的线沿不同方向延伸,而不仅仅是水平方向。
但是这可能不值得,因为正如您的链接文章所述: “这通常不是问题,因为多边形的边缘无论如何都是无限薄的,并且恰好落在边缘上的点可以向任一方向移动而不会损害多边形的外观。”
关于algorithm - 当测试点位于多边形边上时返回 true 的多边形算法中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35802719/