我绝不是专业程序员,所以请不要期待这里有复杂的方法或语言。不过,我会感谢您的建议和建议,以实现一个算法,在稍后阶段,我可以以编程方式添加到我的项目...这是问题:不规则形状内的点
想象一下任意点(点X)以下属性:
- 具有坐标
- 位于一个2D表面
- 是静止
- 属于单个区域(其中边界坐标也是已知的)在任何给定的时间。也就是说,它是其“父”元素的唯一“孩子”。再一次,如果它不坐在一个区域,它肯定坐在另一个区域内!
一个区域不是简单的正方形,四边形或圆形,而是一个不规则的形状。我现在的问题是:我如何确定: (i)如果X点位于特定区域内而不是邻近区域; (ii)该点属于哪个特定区域(在一组区域A,B或C中)?见链接的图像更好地看到问题:
PS:我仔细研读处理Point in Polygon问题(特别是“光线投射算法”,听起来很聪明!)的可能性,但它似乎没有因为(i)区域可能彼此相邻; (ii)我需要确定一个点所属的区域多于它位于其内部/外部的区域。
非常感谢您提前!
如果区域的边界可能有曲率,区域的“边界坐标”如何表示该区域的实际边界?您是使用某种曲线参数化还是使用多边形逼近区域? –
光线投射算法的变体可能会起作用。如果你从你的观点投射出一束光线,并观察它发出的第一个边缘,你就会知道你的观点是在分享这一边缘的(最多)两个区域之一内。然后,您可以对两个候选区域的每一个使用两次光线投射算法。 –
对不起,我的错 - 我进一步编辑了我的问题:在2D中定义了形状(面)段的坐标,没有曲率! –