当测试点位于多边形边上时,多边形算法中的点 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."