当测试点位于多边形边上时,多边形算法中的点 returns 为真
Point in polygon algorithm that returns true when the test point is on a polygon edge
我实现了一个基于 http://alienryderflex.com/polygon/ 的多边形点算法。
它工作正常,但正如文章中所说:
If the test point is on the border of the polygon, this algorithm will deliver unpredictable results
事实证明,当测试点位于多边形的 border/edge(和顶点)上时,我需要算法 return 为真。
是否有:
- 一种对我有帮助的替代算法;或
- 一种修改此算法以获得我想要的东西的方法(例如,通过在 运行 算法之前稍微扩展多边形)
稍微扩展多边形是一种选择,但这对于凹多边形可能很棘手。
我的建议是将点稍微移动到不同的方向 (up/down/left/right),然后对每个移动的点进行计算。如果确定至少有一个移动点在内部,则将其视为在内部。
另一种选择是让计算交点的线 运行 在不同方向,而不仅仅是水平方向。
但是,这可能不值得,因为正如您的链接文章所述:
"That is not generally a problem, since the edge of the polygon is infinitely thin anyway, and points that fall right on the edge can go either way without hurting the look of the polygon."
我实现了一个基于 http://alienryderflex.com/polygon/ 的多边形点算法。
它工作正常,但正如文章中所说:
If the test point is on the border of the polygon, this algorithm will deliver unpredictable results
事实证明,当测试点位于多边形的 border/edge(和顶点)上时,我需要算法 return 为真。
是否有:
- 一种对我有帮助的替代算法;或
- 一种修改此算法以获得我想要的东西的方法(例如,通过在 运行 算法之前稍微扩展多边形)
稍微扩展多边形是一种选择,但这对于凹多边形可能很棘手。
我的建议是将点稍微移动到不同的方向 (up/down/left/right),然后对每个移动的点进行计算。如果确定至少有一个移动点在内部,则将其视为在内部。
另一种选择是让计算交点的线 运行 在不同方向,而不仅仅是水平方向。
但是,这可能不值得,因为正如您的链接文章所述: "That is not generally a problem, since the edge of the polygon is infinitely thin anyway, and points that fall right on the edge can go either way without hurting the look of the polygon."