说我有一组n个线段或圆以及一条具有原点和方向的射线,并且我想知道射线首先会击中这n个对象中的哪一个,或者是否会完全击中它们中的任何一个。天真的,我只能做n次不同的检查。我首先关心的是运行时。我可以做得比O(n)好吗?我的另一个担心是数值错误。如果我试图找到射线与圆的交点,那么将会有一些平方根和除法。如何最好地找到相交点而没有太多错误?如果有帮助,我的最终目标是使这些物体(如镜子)的光线弹起。
答案 0 :(得分:0)
首先尝试天真的解决方案。我的猜测是,这对于您的目的会很好。
从那里,您可能会研究更高级的数据结构,例如quadtrees,该数据结构仅允许检查形状的子集以查找潜在的碰撞。
但是您可能仍然不需要它们。首先做简单的事情。