algorithm - 是否需要在循环的每次迭代中重新创建 Barnes Hut Tree

标签 algorithm simulation physics game-physics

我正在编写一个应用程序,需要在数百个不断运动的粒子之间执行 n 体模拟。应用程序具有实时要求,因此执行仿真的算法需要快速。

我对此事进行了大量研究,得出的结论是 Barnes Hut 算法最适合我的需求,它似乎对大型粒子集非常有效。

http://arborjs.org/docs/barnes-hut对算法的工作原理给出了非常清楚的解释,但正如标题所暗示的那样,我想知道是否需要为每次迭代重新创建树,考虑到模拟中使用的粒子总是动态运动的。如果确实需要重新创建树,如何以最有效(在处理能力和内存方面)的方式进行。

最佳答案

通常对于基于移动的索引,移动发生后索引不会“更新”,您必须重建整个索引。

Barnes Hut Tree 是一样的,必须重建。这是一个 example我在网上找到了流程的代码大纲。

这是为 KD 树之类的构建优化付出如此多努力的原因之一,我相信 Barnes Hut 也是如此。另外,我确信有关于动态更新的研究,但大多数时候这些实现比简单的重建要难得多。

关于algorithm - 是否需要在循环的每次迭代中重新创建 Barnes Hut Tree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17049483/

相关文章:

java - 在 Java 中针对 Map 执行最佳 levenshtein 匹配的最佳方法

python - 改变 turtle 图形的操作

.net - 如何在 .NET 4 中模拟损坏状态异常?

r - 我应该如何计算 R 中的蒙特卡洛均方误差?

xcode - swift ,SpriteKit : Position Of Physic Body Wrong For SpriteNode When Using edgeLoopFromRect

ios - 固定距离接头无法正常工作

python - 负循环解释的 Bellman-ford 算法

performance - 大量数据的分页和排序

c - 从字符串中删除指定字符的有效方法

physics - RoboCup 3D 足球机器人示例?