Quadtree vs一个用于碰撞检测的网格

时间:2013-10-21 17:34:24

标签: collision-detection rectangles quadtree

我正在考虑使用四叉树来对2D中的矩形进行碰撞检测,但是当有各种不同的尺寸甚至计算出每个象限应该有多少象限时,尝试找到矩形正在触摸的每个象限似乎有点过于复杂。 。

我决定只在整个区域上放一个小网格,并通过对4个角中的每个角进行row = x / cell width,column = y / cell height然后检查碰撞来找到每个对象所在的单元格与这些单元格中的每个其他对象一起使用。我还对它进行了一些优化,以防止它重新检查相同的对象

我使用32x32网格测试它,使用强力方法测试5000个移动物体,并且碰撞检查减少了200倍,速度提高了约20倍。所以我想知道使用四叉树有什么优势呢?真的会更快吗?

1 个答案:

答案 0 :(得分:4)

当对象的大小变化很大时(由于需要在单个对象移动时更新许多网格单元),或者当它们非常小且非常稀疏(需要大量网格内存)时,网格会出现问题存储大多数空单元格)。这些是基于树的分区结构(如四叉树)闪耀的情况。