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.

00029 { 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.

00027 { 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.

00028 { B_SW, F_SW, B_SE, F_SE, B_NW, F_NW, B_NE, F_NE } ;


Constructor & Destructor Documentation

octree_node ( void   )  [inline]
octree_node ( Object  object,
CELL  cl 
) [inline]
octree_node ( NODE_TYPE  nodeType,
octree_node< Object, CELL > *  parent,
CELL &  cl 
) [inline]

Definition at line 142 of file octree_node.hpp.

References octree_node< Object, CELL >::B_NE, octree_node< Object, CELL >::B_NEchild, octree_node< Object, CELL >::B_NW, octree_node< Object, CELL >::B_NWchild, octree_node< Object, CELL >::B_SE, octree_node< Object, CELL >::B_SEchild, octree_node< Object, CELL >::B_SW, octree_node< Object, CELL >::B_SWchild, octree_node< Object, CELL >::depth, octree_node< Object, CELL >::F_NE, octree_node< Object, CELL >::F_NEchild, octree_node< Object, CELL >::F_NW, octree_node< Object, CELL >::F_NWchild, octree_node< Object, CELL >::F_SE, octree_node< Object, CELL >::F_SEchild, octree_node< Object, CELL >::F_SW, octree_node< Object, CELL >::F_SWchild, octree_node< Object, CELL >::m_cell, octree_node< Object, CELL >::m_parent, and octree_node< Object, CELL >::m_type.

00143 {  
00144     this->m_cell = cl ;
00145     this->m_type = type ; 
00146     this->m_parent = parent ;
00147 
00148     F_NEchild = NULL ; F_NWchild = NULL ; 
00149     F_SEchild = NULL ; F_SWchild = NULL ; 
00150     B_NEchild = NULL ; B_NWchild = NULL ; 
00151     B_SEchild = NULL ; B_SWchild = NULL ; 
00152 
00153     depth = parent->depth+1 ;
00154 
00155     switch(type) { 
00156     case F_NE: parent->setFNEchild(this) ; break ; 
00157     case F_NW: parent->setFNWchild(this) ; break ; 
00158     case F_SW: parent->setFSWchild(this) ; break ; 
00159     case F_SE: parent->setFSEchild(this) ; break ;
00160     case B_NE: parent->setBNEchild(this) ; break ;  
00161     case B_NW: parent->setBNWchild(this) ; break ;  
00162     case B_SW: parent->setBSWchild(this) ; break ;  
00163     case B_SE: parent->setBSEchild(this) ; break ; 
00164     default: std::cerr << "Error : the node's type isn't appropriate \n" ; break ;
00165     }
00166 }

octree_node ( octree_node< Object, CELL > *  left,
octree_node< Object, CELL > *  right,
CELL  cl 
) [inline]
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.

00068 { 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.

00069 { 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.

00070 { 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.

00071 { 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.

00063 { 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.

00064 { 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.

00065 { 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.

00066 { return F_SWchild ; } 

CELL& get_cell ( void   )  [inline]

Definition at line 56 of file octree_node.hpp.

References octree_node< Object, CELL >::m_cell.

00056 { return m_cell ; }

const CELL& get_cell ( void   )  const [inline]

Definition at line 55 of file octree_node.hpp.

References octree_node< Object, CELL >::m_cell.

00055 { return m_cell; } 

bool isLeaf ( void   )  const [inline]
size_t leafDistance ( void   )  const [inline]

Definition at line 178 of file octree_node.hpp.

References octree_node< Object, CELL >::B_NEchild, octree_node< Object, CELL >::B_NWchild, octree_node< Object, CELL >::B_SEchild, octree_node< Object, CELL >::B_SWchild, octree_node< Object, CELL >::F_NEchild, octree_node< Object, CELL >::F_NWchild, octree_node< Object, CELL >::F_SEchild, octree_node< Object, CELL >::F_SWchild, octree_node< Object, CELL >::isLeaf(), mmx::min(), and Node.

00179 {
00180         if ( this->isLeaf() )
00181                 return 0;
00182 
00183         struct inner {
00184                 size_t operator()( const Node* node ) {
00185                         if ( node == 0 )
00186                                 return 0;
00187                         else
00188                                 return node->leafDistance();
00189                 }
00190         } I;
00191 
00192         size_t d = 0;
00193         d = std::min( d, I(B_NEchild) );
00194         d = std::min( d, I(B_NWchild) );
00195         d = std::min( d, I(B_SEchild) );
00196         d = std::min( d, I(B_SWchild) );
00197         d = std::min( d, I(F_NEchild) );
00198         d = std::min( d, I(F_NWchild) );
00199         d = std::min( d, I(F_SEchild) );
00200         d = std::min( d, I(F_SWchild) );
00201 
00202         return d+1;
00203 }

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

Definition at line 73 of file octree_node.hpp.

References octree_node< Object, CELL >::F_NWchild.

00073 { return F_NWchild ; }

Object object ( void   )  [inline]

Definition at line 59 of file octree_node.hpp.

References octree_node< Object, CELL >::m_objects.

00059 { 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.

00074 { 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.

00050 { 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.

00051 { 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.

00052 { 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.

00053 { 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.

00041 { 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.

00045 { 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.

00046 { 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.

00047 { 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.

00048 { 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.

00043 { m_parent = n ; }

NODE_TYPE type ( void   )  [inline]

Definition at line 61 of file octree_node.hpp.

References octree_node< Object, CELL >::m_type.

00061 { return m_type ; }


Member Data Documentation

octree_node<Object, CELL>* B_NEchild
octree_node<Object, CELL>* B_NWchild
octree_node<Object, CELL>* B_SEchild
octree_node<Object, CELL>* B_SWchild
int depth

Definition at line 94 of file octree_node.hpp.

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

octree_node<Object, CELL>* F_NEchild
octree_node<Object, CELL>* F_NWchild
octree_node<Object, CELL>* F_SEchild
octree_node<Object, CELL>* F_SWchild
int index

Definition at line 95 of file octree_node.hpp.

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

CELL m_cell
std::list<Object> m_objects
octree_node<Object, CELL>* m_parent

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

Generated on 6 Dec 2012 for shape by  doxygen 1.6.1