从一开始,碰撞检测就好像是一个 O(n^2) 问题。
您有一堆对象,您需要检查每个对象是否与任何其他对象发生碰撞。但是,我知道将每个对象与所有其他对象进行检查是非常低效的。如果两个球甚至彼此不靠近,为什么要在两个球之间进行相对昂贵的碰撞检查?
这是我正在处理的简单程序的示例:
如果您有 1000 个球,那么如果您使用简单的碰撞检测,您将有 1000^2 次收集检查(一百万)!这种碰撞检查很快成为我的应用程序的瓶颈。我需要实施一些广泛的阶段修剪。
使用 2d 圆形对象时,应该使用哪些技术来修剪碰撞检查?我读过关于 QuadTrees、BSP、空间散列等的信息,但很难找出最适合这个用例的方法。
有没有人知道什么可能最有效?