Beispiel #1
0
void rOctree<T>::QueryNodesWithBox(const box_type& b , node_list& result) {
    result.clear();

    if (! m_root || ! m_root->m_volume.IntersectsBox(b))
        return;

    result.push_back(m_root);
    QueryNodesWithBoxRec(b , result , m_root);
}
Beispiel #2
0
void rOctree<T>::QueryNodesWithBoxRec(const box_type& b , node_list& result,  node_type* node) {
    for (size_t i =0; i < node->m_children.size(); i++) {

        if (node->m_children[i] && node->m_children[i]->m_volume.IntersectsBox(b)) {
            result.push_back(node->m_children[i]);
            QueryNodesWithBoxRec(b , result, node->m_children[i]);
        }
    }
}
node parent( node_list& v, node n )
{
    if( n >= v.size( ) ) {
        for( unsigned i = v.size( ); i <= n; i++ ) {
            v.push_back( i );
        }
    }
    if( v[ n ] == n ) return n;
    v[ n ] = parent( v, v[ n ] );

    return v[ n ];
}