shape_doc 0.1
octree_node< Object, CELL > Class Template Reference

#include <octree_node.hpp>

List of all members.

Public Types

Public Member Functions

Public Attributes

Protected Member Functions


Detailed Description

template<class Object, class CELL>
class mmx::shape::octree_node< Object, CELL >

Definition at line 24 of file octree_node.hpp.


Member Enumeration Documentation

enum EDGE_TYPE
Enumerator:
B_E 
B_W 
B_S 
B_N 
F_E 
F_W 
F_S 
F_N 
S_E 
N_E 
S_W 
N_W 

Definition at line 29 of file octree_node.hpp.

{ B_E, B_W, B_S, B_N, F_E, F_W, F_S, F_N, S_E, N_E, S_W, N_W } ; 
enum FACE_TYPE
Enumerator:
B 
F 
W 
E 
S 
N 

Definition at line 27 of file octree_node.hpp.

{ B, F, W, E, S, N } ;
enum NODE_TYPE
Enumerator:
B_SW 
F_SW 
B_SE 
F_SE 
B_NW 
F_NW 
B_NE 
F_NE 

Definition at line 28 of file octree_node.hpp.


Constructor & Destructor Documentation

octree_node ( void  )

Definition at line 99 of file octree_node.hpp.

{ 
    m_type   = F_NE ;
    m_parent = NULL ;
    m_cell   = NULL ;

    F_NEchild = NULL ; F_NWchild = NULL ; F_SEchild = NULL ; F_SWchild = NULL ;
    B_NEchild = NULL ; B_NWchild = NULL ; B_SEchild = NULL ; B_SWchild = NULL ;

    depth = 0;
    index = 0;
} 
octree_node ( Object  object,
CELL  cl 
)

Definition at line 112 of file octree_node.hpp.

{ 
    this->m_type   = F_NE ;
    this->m_parent = NULL ;
    this->m_cell   = cl ;
    m_objects.push_back(object) ;

    F_NEchild = NULL ; F_NWchild = NULL ; F_SEchild = NULL ; F_SWchild = NULL;
    B_NEchild = NULL ; B_NWchild = NULL ; B_SEchild = NULL ; B_SWchild = NULL;

    depth = 0;
    index = 0;
} 
octree_node ( NODE_TYPE  nodeType,
octree_node< Object, CELL > *  parent,
CELL &  cl 
)

Definition at line 142 of file octree_node.hpp.

{  
    this->m_cell = cl ;
    this->m_type = type ; 
    this->m_parent = parent ;

    F_NEchild = NULL ; F_NWchild = NULL ; 
    F_SEchild = NULL ; F_SWchild = NULL ; 
    B_NEchild = NULL ; B_NWchild = NULL ; 
    B_SEchild = NULL ; B_SWchild = NULL ; 

    depth = parent->depth+1 ;

    switch(type) { 
    case F_NE: parent->setFNEchild(this) ; break ; 
    case F_NW: parent->setFNWchild(this) ; break ; 
    case F_SW: parent->setFSWchild(this) ; break ; 
    case F_SE: parent->setFSEchild(this) ; break ;
    case B_NE: parent->setBNEchild(this) ; break ;  
    case B_NW: parent->setBNWchild(this) ; break ;  
    case B_SW: parent->setBSWchild(this) ; break ;  
    case B_SE: parent->setBSEchild(this) ; break ; 
    default: std::cerr << "Error : the node's type isn't appropriate \n" ; break ;
    }
}
octree_node ( octree_node< Object, CELL > *  left,
octree_node< Object, CELL > *  right,
CELL  cl 
)

Definition at line 126 of file octree_node.hpp.

References mmx::shape_ssi::left(), and mmx::shape_ssi::right().

{
    this->m_parent = NULL ;
    this->m_cell   = cl ;

    left->type  = F_NW ;  left->parent = this ; F_NWchild =  left ;
    right->type = F_NE ; right->parent = this ; F_NEchild = right ;

    F_NWchild = left  ; F_SWchild = NULL ;
    F_NEchild = right ; F_SEchild = NULL ;
    B_NEchild = NULL  ; B_NWchild = NULL ; 
    B_SEchild = NULL  ; B_SWchild = NULL ;

    depth = left->depth-1 ;
}
octree_node ( octree_node< Object, CELL > &  node) [protected]

Member Function Documentation

octree_node<Object, CELL>* BNEchild ( void  ) [inline]

Definition at line 68 of file octree_node.hpp.

References octree_node< Object, CELL >::B_NEchild.

{ return B_NEchild ; } 
octree_node<Object, CELL>* BNWchild ( void  ) [inline]

Definition at line 69 of file octree_node.hpp.

References octree_node< Object, CELL >::B_NWchild.

{ return B_NWchild ; } 
octree_node<Object, CELL>* BSEchild ( void  ) [inline]

Definition at line 70 of file octree_node.hpp.

References octree_node< Object, CELL >::B_SEchild.

{ return B_SEchild ; } 
octree_node<Object, CELL>* BSWchild ( void  ) [inline]

Definition at line 71 of file octree_node.hpp.

References octree_node< Object, CELL >::B_SWchild.

{ return B_SWchild ; }
octree_node<Object, CELL>* FNEchild ( void  ) [inline]

Definition at line 63 of file octree_node.hpp.

References octree_node< Object, CELL >::F_NEchild.

{ return F_NEchild ; }
octree_node<Object, CELL>* FNWchild ( void  ) [inline]

Definition at line 64 of file octree_node.hpp.

References octree_node< Object, CELL >::F_NWchild.

{ return F_NWchild ; }
octree_node<Object, CELL>* FSEchild ( void  ) [inline]

Definition at line 65 of file octree_node.hpp.

References octree_node< Object, CELL >::F_SEchild.

{ return F_SEchild ; }
octree_node<Object, CELL>* FSWchild ( void  ) [inline]

Definition at line 66 of file octree_node.hpp.

References octree_node< Object, CELL >::F_SWchild.

{ return F_SWchild ; } 
const CELL& get_cell ( void  ) const [inline]

Definition at line 55 of file octree_node.hpp.

References octree_node< Object, CELL >::m_cell.

{ return m_cell; } 
CELL& get_cell ( void  ) [inline]

Definition at line 56 of file octree_node.hpp.

References octree_node< Object, CELL >::m_cell.

{ return m_cell ; }
bool isLeaf ( void  ) const

Definition at line 168 of file octree_node.hpp.

{
    if((F_NEchild == NULL) && (F_NWchild == NULL) &&
       (F_SEchild == NULL) && (F_SWchild == NULL) && 
       (B_NEchild == NULL) && (B_NWchild == NULL) &&
       (B_SEchild == NULL) && (B_SWchild == NULL) )
        return true; 
    return false; 
} 
size_t leafDistance ( void  ) const

Definition at line 178 of file octree_node.hpp.

References mmx::min(), and Node.

{
        if ( this->isLeaf() )
                return 0;

        struct inner {
                size_t operator()( const Node* node ) {
                        if ( node == 0 )
                                return 0;
                        else
                                return node->leafDistance();
                }
        } I;

        size_t d = 0;
        d = std::min( d, I(B_NEchild) );
        d = std::min( d, I(B_NWchild) );
        d = std::min( d, I(B_SEchild) );
        d = std::min( d, I(B_SWchild) );
        d = std::min( d, I(F_NEchild) );
        d = std::min( d, I(F_NWchild) );
        d = std::min( d, I(F_SEchild) );
        d = std::min( d, I(F_SWchild) );

        return d+1;
}
octree_node<Object, CELL>* left ( void  ) [inline]

Definition at line 73 of file octree_node.hpp.

References octree_node< Object, CELL >::F_NWchild.

{ return F_NWchild ; }
Object object ( void  ) [inline]

Definition at line 59 of file octree_node.hpp.

References octree_node< Object, CELL >::m_objects.

{ return m_objects.front() ; }
octree_node<Object, CELL>* right ( void  ) [inline]

Definition at line 74 of file octree_node.hpp.

References octree_node< Object, CELL >::F_NEchild.

{ return F_NEchild ; }
void setBNEchild ( octree_node< Object, CELL > *  n) [inline]

Definition at line 50 of file octree_node.hpp.

References octree_node< Object, CELL >::B_NEchild.

{ B_NEchild = n ; } 
void setBNWchild ( octree_node< Object, CELL > *  n) [inline]

Definition at line 51 of file octree_node.hpp.

References octree_node< Object, CELL >::B_NWchild.

{ B_NWchild = n ; } 
void setBSEchild ( octree_node< Object, CELL > *  n) [inline]

Definition at line 52 of file octree_node.hpp.

References octree_node< Object, CELL >::B_SEchild.

{ B_SEchild = n ; } 
void setBSWchild ( octree_node< Object, CELL > *  n) [inline]

Definition at line 53 of file octree_node.hpp.

References octree_node< Object, CELL >::B_SWchild.

{ B_SWchild = n ; } 
void setCell ( const CELL &  c) [inline]

Definition at line 41 of file octree_node.hpp.

References octree_node< Object, CELL >::m_cell.

{ m_cell = c ; }
void setFNEchild ( octree_node< Object, CELL > *  n) [inline]

Definition at line 45 of file octree_node.hpp.

References octree_node< Object, CELL >::F_NEchild.

{ F_NEchild = n ; }
void setFNWchild ( octree_node< Object, CELL > *  n) [inline]

Definition at line 46 of file octree_node.hpp.

References octree_node< Object, CELL >::F_NWchild.

{ F_NWchild = n ; }
void setFSEchild ( octree_node< Object, CELL > *  n) [inline]

Definition at line 47 of file octree_node.hpp.

References octree_node< Object, CELL >::F_SEchild.

{ F_SEchild = n ; }
void setFSWchild ( octree_node< Object, CELL > *  n) [inline]

Definition at line 48 of file octree_node.hpp.

References octree_node< Object, CELL >::F_SWchild.

{ F_SWchild = n ; } 
void setParent ( octree_node< Object, CELL > *  n) [inline]

Definition at line 43 of file octree_node.hpp.

References octree_node< Object, CELL >::m_parent.

Referenced by quadtree< Object, CELL >::quadtree().

{ m_parent = n ; }
NODE_TYPE type ( void  ) [inline]

Definition at line 61 of file octree_node.hpp.

References octree_node< Object, CELL >::m_type.

{ return m_type ; }

Member Data Documentation

int depth

Definition at line 94 of file octree_node.hpp.

int index

Definition at line 95 of file octree_node.hpp.

std::list<Object> m_objects

Definition at line 81 of file octree_node.hpp.

Referenced by octree_node< Object, CELL >::object().

octree_node<Object, CELL>* m_parent

Definition at line 84 of file octree_node.hpp.

Referenced by octree_node< Object, CELL >::setParent().

Definition at line 82 of file octree_node.hpp.

Referenced by octree_node< Object, CELL >::type().


The documentation for this class was generated from the following file: