指向多边形算法,当测试点位于多边形边缘时返回true

时间:2016-03-04 17:45:52

标签: algorithm polygon point-in-polygon

我实现了基于http://alienryderflex.com/polygon/的多边形点算法。

它运作正常,但正如文章中所述:

  

如果测试点位于多边形的边界上,则此算法将提供不可预测的结果

事实证明,当测试点位于多边形的边界/边缘(和顶点)上时,我需要算法返回true。

是否有:

  • 一种可以帮助我的替代算法;或
  • 修改此算法以获得所需内容的方法(例如,在运行算法之前稍微扩展多边形)

1 个答案:

答案 0 :(得分:2)

稍微扩展多边形是一个选项,但这对于凹面多边形来说可能很棘手。

我的建议是将点移动到不同方向(上/下/左/右)一小部分,并对每个移位点进行计算。如果确定至少有一个移位点位于内部,则将其计入内部。

另一种选择是让计算交叉点的线在不同方向上运行,而不仅仅是水平方向。

但是,它可能不值得,因为,正如您的链接文章所述: "这通常不是问题,因为多边形的边缘无论如何都是无限薄的,并且落在边缘上的点可以在不损害多边形外观的情况下进行。"