多个不相交多边形的光线投射算法仍然有效吗?

计算科学 算法 计算几何
2021-11-30 22:02:59

我们正在处理国家边界,即由多边形组成的多个不相交域的集合。

为了提取给定国家在地图上的不同点,据说我们实现了光线投射算法,这绝对没问题,但国家很难成为简单连接的域。例如,意大利由许多不相交的域(岛屿)组成。

在这种情况下,交叉数算法或奇偶规则算法仍然是验证问题点是否在国家边界内的有效方法?

编辑

经过几天的研究终于找到了一个讨论:MySQL实现光线投射算法?它给出了用代码实现算法的大量链接、答案和代码片段(伪代码:http ://rosettacode.org/wiki/Ray-casting_algorithm )。

谢谢!

1个回答

是的,奇偶规则适用于任何封闭的多边形集。

唯一需要注意的是光线击中顶点,因为在这种情况下,没有配备处理退化的代码可能会返回不正确的结果。最省力的解决方案通常是(1)首先检查你是否在多边形的边界上,(2)尝试随机方向的射线,直到没有顶点被击中。