algorithm - 当测试点位于多边形边上时返回 true 的多边形算法中的点

标签 algorithm polygon point-in-polygon

我已经实现了基于 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/

相关文章:

python - 在已知 XY 坐标时绘制像素和轮廓

visual-studio-2010 - 在行 .`` 花瓣宽度`|]) 行上出现缺少资格错误

c - 仅使用递归编写 C 函数

algorithm - 有向树的叶子到根的最短距离

algorithm - 使用不可逆的累加器进行递归 - 这可能吗?

matlab - impoly 仅在对数刻度轴上近似正确

java - 创建图像不透明部分的多边形

java - 无法使用带有Java的Morphia在Mongodb中存储GeoJson Polygon对象

mysql - 将坐标插入 MySQL - PolyFromText SQL 语法错误/返回空值

real-time - 确定一个点在哪些多边形中