我实现了基于http://alienryderflex.com/polygon/的多边形点算法。
它运作正常,但正如文章中所述:
如果测试点位于多边形的边界上,则此算法将提供不可预测的结果
事实证明,当测试点位于多边形的边界/边缘(和顶点)上时,我需要算法返回true。
是否有:
答案 0 :(得分:2)
稍微扩展多边形是一个选项,但这对于凹面多边形来说可能很棘手。
我的建议是将点移动到不同方向(上/下/左/右)一小部分,并对每个移位点进行计算。如果确定至少有一个移位点位于内部,则将其计入内部。
另一种选择是让计算交叉点的线在不同方向上运行,而不仅仅是水平方向。
但是,它可能不值得,因为,正如您的链接文章所述: "这通常不是问题,因为多边形的边缘无论如何都是无限薄的,并且落在边缘上的点可以在不损害多边形外观的情况下进行。"