#include <octree_node.hpp>
Definition at line 24 of file octree_node.hpp.
enum EDGE_TYPE |
enum FACE_TYPE |
enum NODE_TYPE |
octree_node | ( | void | ) | [inline] |
Definition at line 99 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 >::depth, octree_node< Object, CELL >::F_NE, 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 >::index, octree_node< Object, CELL >::m_cell, octree_node< Object, CELL >::m_parent, and octree_node< Object, CELL >::m_type.
octree_node | ( | Object | object, | |
CELL | cl | |||
) | [inline] |
Definition at line 112 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 >::depth, octree_node< Object, CELL >::F_NE, 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 >::index, octree_node< Object, CELL >::m_cell, octree_node< Object, CELL >::m_objects, octree_node< Object, CELL >::m_parent, and octree_node< Object, CELL >::m_type.
00113 { 00114 this->m_type = F_NE ; 00115 this->m_parent = NULL ; 00116 this->m_cell = cl ; 00117 m_objects.push_back(object) ; 00118 00119 F_NEchild = NULL ; F_NWchild = NULL ; F_SEchild = NULL ; F_SWchild = NULL; 00120 B_NEchild = NULL ; B_NWchild = NULL ; B_SEchild = NULL ; B_SWchild = NULL; 00121 00122 depth = 0; 00123 index = 0; 00124 }
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] |
Definition at line 126 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 >::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_SEchild, octree_node< Object, CELL >::F_SWchild, octree_node< Object, CELL >::m_cell, and octree_node< Object, CELL >::m_parent.
00127 { 00128 this->m_parent = NULL ; 00129 this->m_cell = cl ; 00130 00131 left->type = F_NW ; left->parent = this ; F_NWchild = left ; 00132 right->type = F_NE ; right->parent = this ; F_NEchild = right ; 00133 00134 F_NWchild = left ; F_SWchild = NULL ; 00135 F_NEchild = right ; F_SEchild = NULL ; 00136 B_NEchild = NULL ; B_NWchild = NULL ; 00137 B_SEchild = NULL ; B_SWchild = NULL ; 00138 00139 depth = left->depth-1 ; 00140 }
octree_node | ( | octree_node< Object, CELL > & | node | ) | [protected] |
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] |
Definition at line 168 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, and octree_node< Object, CELL >::F_SWchild.
Referenced by octree_node< Object, CELL >::leafDistance().
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 ; }
octree_node<Object, CELL>* B_NEchild |
Definition at line 89 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::BNEchild(), octree_node< Object, CELL >::isLeaf(), octree_node< Object, CELL >::leafDistance(), octree_node< Object, CELL >::octree_node(), and octree_node< Object, CELL >::setBNEchild().
octree_node<Object, CELL>* B_NWchild |
Definition at line 90 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::BNWchild(), octree_node< Object, CELL >::isLeaf(), octree_node< Object, CELL >::leafDistance(), octree_node< Object, CELL >::octree_node(), and octree_node< Object, CELL >::setBNWchild().
octree_node<Object, CELL>* B_SEchild |
Definition at line 91 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::BSEchild(), octree_node< Object, CELL >::isLeaf(), octree_node< Object, CELL >::leafDistance(), octree_node< Object, CELL >::octree_node(), and octree_node< Object, CELL >::setBSEchild().
octree_node<Object, CELL>* B_SWchild |
Definition at line 92 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::BSWchild(), octree_node< Object, CELL >::isLeaf(), octree_node< Object, CELL >::leafDistance(), octree_node< Object, CELL >::octree_node(), and octree_node< Object, CELL >::setBSWchild().
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 |
Definition at line 85 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::FNEchild(), octree_node< Object, CELL >::isLeaf(), octree_node< Object, CELL >::leafDistance(), octree_node< Object, CELL >::octree_node(), octree_node< Object, CELL >::right(), and octree_node< Object, CELL >::setFNEchild().
octree_node<Object, CELL>* F_NWchild |
Definition at line 86 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::FNWchild(), octree_node< Object, CELL >::isLeaf(), octree_node< Object, CELL >::leafDistance(), octree_node< Object, CELL >::left(), octree_node< Object, CELL >::octree_node(), and octree_node< Object, CELL >::setFNWchild().
octree_node<Object, CELL>* F_SEchild |
Definition at line 87 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::FSEchild(), octree_node< Object, CELL >::isLeaf(), octree_node< Object, CELL >::leafDistance(), octree_node< Object, CELL >::octree_node(), and octree_node< Object, CELL >::setFSEchild().
octree_node<Object, CELL>* F_SWchild |
Definition at line 88 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::FSWchild(), octree_node< Object, CELL >::isLeaf(), octree_node< Object, CELL >::leafDistance(), octree_node< Object, CELL >::octree_node(), and octree_node< Object, CELL >::setFSWchild().
int index |
Definition at line 95 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::octree_node().
CELL m_cell |
Definition at line 80 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::get_cell(), octree_node< Object, CELL >::octree_node(), and octree_node< Object, CELL >::setCell().
std::list<Object> m_objects |
Definition at line 81 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::object(), and octree_node< Object, CELL >::octree_node().
octree_node<Object, CELL>* m_parent |
Definition at line 84 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::octree_node(), and octree_node< Object, CELL >::setParent().
Definition at line 82 of file octree_node.hpp.
Referenced by octree_node< Object, CELL >::octree_node(), and octree_node< Object, CELL >::type().