c++ - 如何在C++中构建八叉树

标签 c++ tree construction octree

我正在用 C++ 实现一个八叉树,它稍后应该包含一个用于渲染的网格。但目前我正在为八叉树的构建而苦苦挣扎。更准确地说,是 addNode() 函数导致了问题。我想到了类似二叉树的递归实现: Binary Tree implementation C++

但是,在八叉树中,每个节点都有 8 个儿子,而不仅仅是 2 个。此外,因此我不能像在二叉树中那样使用简单的开关(左/右)来决定在何处添加节点。我需要检查 8 个儿子中的一个是否为空(指针为 NULL),如果没有指针为空,我需要用其中一个儿子作为参数调用 add 函数。然而,这将导致一个八叉树,其中第一个儿子总是包含所有后续的子八叉树。这个add函数一般是怎么实现的,又是如何避免这个问题的呢?

最佳答案

需要检查对象的x,y,z维度,八叉树只能保存有限数量的对象。

关于c++ - 如何在C++中构建八叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22156966/

相关文章:

c++ - 链接时, "grab what you need"和 "grab all"(-Wl,--whole-archive) 之间有什么东西吗?

c++ - 如何在C++中实现一个唯一id的队列,其中元素可以是 "bumped"到顶部?

c++ - 如何调试用 C++ 编写的内核?

java - 带有 Action 监听器的多个选择列表?

python - 解析 ad-hoc 树

c++ - 在打印 "Here"之前,临时 A(3) 不应该被销毁吗?

c++ - 如何在 Travis CI 中使用最新的 Boost 版本

c - malloc(sizeof(struct Node)) 与 malloc(sizeof(nodeptr)) 的不同行为

c++ - 将构造函数标记为需要对象类型的 __explicitly__