递归细分八叉树的逻辑是什么?

时间:2018-02-10 12:27:55

标签: recursion octree

我试图以递归方式细分八叉树,我正在努力解决如何允许每个节点被访问的逻辑,但是阻止无限递归。

它似乎只是访问第一个节点,然后停止,我理解它为什么这样做,但我不知道如何解决它。

我定义了一个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]);
    }
}

enter image description here

subdivide中的OctreeNode方法创建给定节点的8个八分圆

1 个答案:

答案 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);
        }
    }