我一直在苦苦挣扎,但到目前为止都没有比朴素方法更好的解决办法:
给定N个圆,它们按线性规律移动。对于每个圆,我们有其初始(在0.0时刻)半径、初始坐标以及在1.0时刻(终止时刻)的半径和坐标。我们还有k条射线,给出其起点坐标和沿射线的向量。每条射线只存在于给定时刻tk。我需要能够找到任何一个圆与射线的第一个交点。预期的k数量非常大(数百万或数十亿),圆的数量也很大(数千个)。我需要比逐个检查所有射线与所有圆更快的解决方案。
我已经在互联网上搜索了一段时间,但没有找到好的解决方案。即使是对于不移动的圆的简单问题的想法也会受到赞赏。
我感觉kd树应该适用于静态情况,也许动态kd树可以解决更难的问题。但我甚至无法想象如何在更简单的情况下使用kd树。