【发布时间】:2023-03-22 04:29:01
【问题描述】:
最简单的方法是删除和插入对象,但可能有更快的方法。 (如果我想太多了,我应该用简单的方法来做,请告诉我)
这里有一些关于我的 QuadTree 的注释
- 正在移动的对象是 AABB,可能大于 最小的 QuadTree 节点。
- 创建子 QuadTree 时不会删除对象。那 意味着根四叉树有一个指向内部每个对象的指针 四叉树。
- 对象作为指针存储在 QuadTree 之外的向量中。
到目前为止,每次对象移动时,它都会在根 QuadTree 上调用一个名为 Update() 的函数。它在参数中移动之前包括它自己和它过去的边界框。不过,我不确定如何制作该功能。
在这里将整个代码发布到我的 QuadTree 会使我的帖子很长,因此我创建了一个 GitHub repository 以便于阅读。
编辑:对于任何寻找答案的人this 似乎通过删除和删除对象来更新对象,并且从他在 cmets 中所做的测试来看非常有效。
【问题讨论】:
-
这可能太多了,无法要求。如果你有任何特定的代码并且它不起作用,你可以把它放在这里..
-
最简单的方法是删除然后重新添加对象。如果您想为移动的对象提供更好的空间分区方案,请查看“松散四叉树”
标签: c++ recursion data-structures quadtree recursive-datastructures