algorithm - 为什么在非凸多边形中找到点比在凸多边形中更难?

标签 algorithm geospatial

我听很多人说,以编程方式在非凸多边形中查找点比在凸多边形中查找点更难。我无法解决这个问题。这是真的?如果是,为什么?

最佳答案

所以你想检查点 P 是在多边形内部还是外部。

如果多边形是凸的,那么您可以遍历构成多边形的每条线段,并检查该线 P 位于哪一侧。如果 P 位于每条线段的右侧,顺时针方向,则 P 位于多边形的内部。

如果多边形是凹的,这个算法就不起作用。一种适用于凹多边形的算法是从 P 沿任意方向追踪到无穷大,并计算多边形边缘被交叉的次数。当且仅当交叉数为奇数时,P 才位于多边形内。该算法需要考虑很多边缘情况,而且通常比较复杂,因此编写该算法需要程序员付出更多的努力。

从某种意义上说,算法更难正确编写,是的,它更难。

在计算复杂度的意义上,两种算法都具有 Θ(N) 渐近运行时间。从这个意义上说,这两个问题同样困难。

关于algorithm - 为什么在非凸多边形中找到点比在凸多边形中更难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18264682/

相关文章:

algorithm - 有什么方法可以找到算术平均值 "better"而不是 sum()/N?

algorithm - 傅里叶处理算法如何处理 "data edges"

MongoDB $geoNear 聚合管道(使用查询选项并使用 $match 管道操作)给出不同的结果

javascript - 根据用户位置查询数据库值

algorithm - Firebug 算法: How to understand the movement formula

r - 优化(最小化)文件 : an optimization problem in line with permutations and agenda scheduling 中的行数

algorithm - 寻找偏序集子集的最大元素

language-agnostic - 用弧度计算地理空间距离

r - 使用 R 将纬度/经度点的数据框空间连接到多边形 shapefil

mysql - 如何在 HibernateSpatial API 中从多边形对象数据类型更改几何对象数据类型?