Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在四叉树中高效地存储游戏对象_C++_Quadtree - Fatal编程技术网

C++ 如何在四叉树中高效地存储游戏对象

C++ 如何在四叉树中高效地存储游戏对象,c++,quadtree,C++,Quadtree,我正在实现一个四叉树结构,用于简化冲突代码,。但我不确定这样做的最佳实践。目前,四叉树在设置过程中创建子树,直到预设的最大深度,然后我将对象插入到相应的树中,用于成对生成(实际的数学内容)。 然而,我听说过其他方法,它们只在存储一定数量的对象时生成子树。 我知道我的方法有空间开销,但在更新周期中计算速度可能更快。 最好的处理方法是什么 一种方法是在每个节点中存储k个元素,从跨越整个碰撞空间的一个父节点开始。插入图元k+1时,可以细分空间并将新元素放置在正确的象限中 此外,您可以使用这种方法静态分

我正在实现一个四叉树结构,用于简化冲突代码,。但我不确定这样做的最佳实践。目前,四叉树在设置过程中创建子树,直到预设的最大深度,然后我将对象插入到相应的树中,用于成对生成(实际的数学内容)。 然而,我听说过其他方法,它们只在存储一定数量的对象时生成子树。 我知道我的方法有空间开销,但在更新周期中计算速度可能更快。
最好的处理方法是什么

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


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

就像溢出机制一样?是的,因此四叉树可以自适应扩展。这也很好,因为您可以定义树中的每个节点,使其只包含一定数量的元素。在我自己的代码中,我有一个完全静态分配的四叉树,它假设有一些最大数量的节点。我的版本也运行得很好,但我想知道哪种方法应该有更高的性能。你的方法听起来已经很静态了,所以可能没有什么好处。我用更多的信息更新了我的帖子,特别是我的方法并没有提高空间性能。它是关于避免动态内存分配的。但是,树将根据数据的密度增长,因此要遍历的结构可能会稍微少一些。