我正在C++中实现一个Octree,稍后应包含一个用于渲染的网格。但是目前,我正在为Octree的构建而苦苦挣扎。更准确地说,是导致问题的addNode()函数。我想到了类似于二叉树的递归实现:
Binary Tree implementation C++
但是,在八叉树中,每个节点都有8个子节点,而不仅仅是2个。此外,因此,我无法像在二叉树中那样使用简单的开关(向左/向右)来确定将节点添加到何处。我将需要检查8个儿子之一是否为空(指针为NULL),如果没有指针为null,则需要使用儿子之一作为参数调用add函数。但是,这将导致八叉树,其中总是第一个儿子将包含所有后续子八叉树。通常如何实现此添加功能并避免该问题?
最佳答案
您需要检查对象的x,y,z尺寸,八叉树也可以保存有限数量的对象。