我正在实现四叉树结构,以简化碰撞代码。但我不确定这样做的最佳做法。目前,四叉树在设置过程中创建子树到预设的最大深度,然后我将对象插入到其适当的树中,用于对生成(实际的数学东西)。 但是,我听说过其他方法,这些方法仅在存储一定数量的对象时才生成子树。 我知道我的方法有空间开销,但在更新周期中计算速度可能更快。 处理它的最佳方法是什么?
最佳答案
一种方法是在每个节点中存储 k 个元素,从一个跨越整个碰撞空间的父节点开始。插入元素 k+1 时,您 segmentation 空间并将新元素放置在正确的象限中。
此外,假设您知道将使用的最大节点数,并且存在某个最大密度,您还可以使用这种方法来静态分配数据结构。这需要在应用程序的生命周期内分配固定的节点和元素数组,但它避免了代价高昂的动态分配,这应该会提高速度。
关于c++ - 如何有效地在四叉树中存储游戏对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20851212/