我试图以递归方式细分八叉树,我正在努力解决如何允许每个节点被访问的逻辑,但是阻止无限递归。
它似乎只是访问第一个节点,然后停止,我理解它为什么这样做,但我不知道如何解决它。
我定义了一个maxDepth
的2和一个currentDepth
,它应该在所有子节点被细分后递增。我最初传入根节点,它应递归通过,直到达到最大深度。
这就是我到目前为止,深度1工作正常并且被细分,但是当我想要maxDepth
为2时,它只会访问第一个节点并离开其余节点。
这是我用来细分的代码。
private void subdivideNode(OctreeNode node)
{
if (currentDepth >= maxDepth) return;
node.subdivide();
currentDepth++;
for (int i = 0; i < node.children.Length; i++)
{
subdivideNode(node.children[i]);
}
}
subdivide
中的OctreeNode
方法创建给定节点的8个八分圆
答案 0 :(得分:0)
使用
计算出来 private void subdivideNode(OctreeNode node, int depth)
{
if (depth == maxDepth) return;
node.subdivide();
for (int i = 0; i < node.children.Length; i++)
{
subdivideNode(node.children[i], depth + 1);
}
}