指向不规则形状

时间:2012-09-08 16:30:24

标签: algorithm 2d shape

我绝不是一名专业的程序员,所以请不要指望这里有复杂的方法或语言。但是,我将非常感谢您提出的建议和建议,以便在稍后阶段,我可以通过编程方式添加到我的项目......这就是问题所在:

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

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

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

现在,我的问题是:我如何确定: (i)如果X点位于该特定区域内而不是相邻区域内; (ii)该点属于哪个特定区域(在一组区域A,B或C中)?查看链接的图像以更好地显示问题:

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

非常感谢你提前!!!

1 个答案:

答案 0 :(得分:0)

程序员会这样做:

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

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

    如果该点属于那里,请通过光线投射algorythm进行检查。

    如果不是,请继续循环,

    如果是,请完成返回当前区域编号的功能。

  3. 如果您不在地区,请返回-1。

  4. 当然,你可以考虑到常见的边界来改善算法,而不是重复对它们进行角度计数,但是现在这些算法显然超出了你的可能性。甚至一个优秀的程序员也会从简单的事情开始,但是正在工作。