c++ - 如何有效地在四叉树中存储游戏对象

标签 c++ quadtree

我正在实现四叉树结构,以简化碰撞代码。但我不确定这样做的最佳做法。目前,四叉树在设置过程中创建子树到预设的最大深度,然后我将对象插入到其适当的树中,用于对生成(实际的数学东西)。 但是,我听说过其他方法,这些方法仅在存储一定数量的对象时才生成子树。 我知道我的方法有空间开销,但在更新周期中计算速度可能更快。 处理它的最佳方法是什么?

最佳答案

一种方法是在每个节点中存储 k 个元素,从一个跨越整个碰撞空间的父节点开始。插入元素 k+1 时,您 segmentation 空间并将新元素放置在正确的象限中。

此外,假设您知道将使用的最大节点数,并且存在某个最大密度,您还可以使用这种方法来静态分配数据结构。这需要在应用程序的生命周期内分配固定的节点和元素数组,但它避免了代价高昂的动态分配,这应该会提高速度。

关于c++ - 如何有效地在四叉树中存储游戏对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20851212/

相关文章:

c++ - C中.h文件的不寻常用法

c++ - 与 openmp 的 10 维蒙特卡洛集成

java - 需要有关 Quadtrees java 的帮助

c++ - 寻找基于四叉树的 LOD 地形示例

c++ - 在模板化类型的 CRTP 中定义类型

c++ - 拆分 STL 列表?

c++ - 在 gdb 中调试 map<int, unique_ptr<A>>

java - 如何使用四叉树对图进行分区?

c++ - 快速查找点到多边形最近边的距离的方法

algorithm - 从莫顿有序点构建四叉树