【问题标题】:Quadtree vs just a grid for collision detection四叉树与仅用于碰撞检测的网格
【发布时间】:2013-10-30 07:58:31
【问题描述】:

我正在考虑使用四叉树来检测 2D 中的矩形的碰撞,但是当所有不同的大小或什至计算出每个象限应该有多少个象限时,试图找到一个矩形所接触的每个象限似乎有点过于复杂.

我决定改为在整个区域上设置一个小网格,并通过对 4 个角中的每一个执行行 = x/单元格宽度、列 = y/单元格高度然后检查碰撞来查找每个对象所在的单元格与这些单元格中的每个其他对象。我还对其进行了一些优化,以防止它重新检查相同的对象

我使用 32x32 网格和 5000 个移动物体对它进行了蛮力测试,它的速度提高了大约 20 倍,碰撞检查减少了 200 倍。所以我想知道使用四叉树比我做的方式有什么优势?真的会快很多吗?

【问题讨论】:

    标签: collision-detection rectangles quadtree


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 2013-05-30
      • 2017-04-26
      • 1970-01-01
      • 2016-02-24
      相关资源
      最近更新 更多