有关光线追踪算法的建议

时间:2015-09-15 15:55:16

标签: python python-2.7 numpy scipy raytracing

我有一个显示世界及其海岸线的网格。此处显示了英国周边地区的摘录 Coastline grid around UK

从海洋中任意位置的任意原点,我想找到那些原点视线的海岸线点,而不必穿过另一个海岸线点。例如,如果起源位于英国的西侧,我希望能够获得爱尔兰西部和英国西部的许多海岸线点,但不会来自丹麦,因为它覆盖了#34;由英国。

我需要一个快速算法的建议,该算法可以“射出”#34;射线并探测这些射线穿过第一条海岸线的位置(海岸线地图以二进制格式提供)。

或者,我可以想象沿着所有海岸线像素移动,在原点和海岸线点之间建立连接线,并检查连接线上是否没有其他海岸线点。是否有任何算法能够有效地完成对海岸线穿越的检查?

我意识到这个问题是一个蓝色的镜头,但也许有一个聪明的人在这方面有所了解。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用DDA算法将像素从感兴趣的点走向图像边缘上的点。假设第一次点击停止,对于5000x10000地图,这导致数百万次迭代的非常简单的循环。

如果计算量太大,您可以使用空间分区方案之一(例如四叉树,均匀网格,BSP树)来跳过大的空白区域。