3

我绝不是专业的程序员,所以请不要指望这里有复杂的方法或语言。但是,我将感谢您提出的实现算法的建议和建议,在以后的阶段,我可以以编程方式将其添加到我的项目中......这是问题所在:

想象空间中具有以下属性的任意点(点 X):

  • 有坐标
  • 位于二维表面上
  • 是静止的
  • 在任何给定时间属于单个区域(其边界坐标也是已知的)。也就是说,它是其“父”元素的唯一“子”。同样,如果它不在一个区域内,它肯定在另一个区域内!

区域不是简单的正方形、四边形或圆形,而是不规则的形状。

现在,我的问题是:我如何确定:(i)点 X 是否位于该特定区域内而不是相邻区域内;(ii) 该点属于哪个特定区域(在一组区域 A、B 或 C 中)?!?请参阅链接图像以更好地可视化问题:

PS:我仔细研究了处理Point in Polygon问题的可能性(特别是“光线投射算法”听起来很聪明!)但这似乎不是一个解决方案,因为(i)区域可能彼此相邻;(ii) 我需要确定一个点所属的区域,而不是它位于它内部/外部的区域。

非常感谢您提前!!!

4

1 回答 1

0

程序员会这样做:

  1. 一个函数将一个区域数组和一个点作为参数。

  2. 制作一个循环 - 检查您的所有区域和每个区域

    通过射线投射算法检查该点是否属于那里。

    如果没有,继续循环,

    如果是,则完成返回当前区域编号的函数。

  3. 如果您不在区域内,则返回 -1。

当然,你可以改进算法,考虑到共同的边界,而不是重复计算它们的角度,但现在这样的算法显然是不可能的。即使是一个优秀的程序员也会从一些简单但有效的事情开始

于 2012-11-27T10:01:22.283 回答