八分木探索

octree.png

こんなかんじ?で再帰的に呼ぶ。

void Lod::OctreeTraversal(const Block& _parent_block, list<Block>* _dst){
    if(_parent_block.IsBestResolution(m_modelview,m_proj_matrix,m_win_size)){
        Block children;
        for(int z=0;z<2;z++){
            for(int y=0;y<2;y++){
                for(int x=0;x<2;x++){
                    OctreeTraversal(_parent_block.getChildren(x,y,z),_dst);
                }
            }
        }
    }else{
        _dst->push_back(_parent_block);
    }
 
}

サポートサイト Wikidot.com