0

-こんにちは。シーングラフの「深さ優先探索」を実装しようとしています。これは私がこれまでに持っているものです-しかし、現在の要素がグラフ内にどれだけ深いかを追跡する方法を理解するのに行き詰まっています。order.size()を最初のブランチの深さとして数えることができるとしましょう-しかし、コードが再びジャンプして次のブランチにジャンプしたときに要素をポップするにはどうすればよいですか?ヒントをいただければ幸いです。よろしくお願いします。

//======================================================================
//depth first search
//======================================================================
// clean start - init visited flags in joints
for (int i = 0 ; i < m_joints.size(); i++){m_joints[i]->visited = false;}

// joint indices 
vector<int> stack;
vector<int> order;

for(int i = 0; i < m_joints.size(); i++)
{
    if(!m_joints[i]->visited)
    {
        stack.push_back(i);
        while(!stack.empty())
        {
            int top = stack.back();
            stack.pop_back();
            if(m_joints[top]->visited)
            {
                continue;
            }

            m_joints[top]->visited = true;
            order.push_back(top);
            // need to know how deep I am inside of the scene graph here
            // update transformation matrix here 
            // draw joint here

            for(int j = 0 ; j < m_joints[top]->children.size();j++)//all neighbours of top
            {
                if(!m_joints[top]->children[j]->visited)
                {
                    stack.push_back(m_joints[top]->children[j]->listPosition); 
                }
            }
        }
    }
}
4

1 に答える 1

2

私があなたの問題をよく理解していれば、整数変数「depth」を各要素に追加し、要素の深さが変化するたびにそれを更新することができます。さらに、要素に現在どの深さであるかをいつでも尋ねることができます

于 2012-10-03T10:18:59.540 に答える