#include <dualize.hpp>
Definition at line 27 of file dualize.hpp.
typedef kdtree_cell<Cell> Input |
Definition at line 31 of file dualize.hpp.
Definition at line 30 of file dualize.hpp.
Definition at line 46 of file dualize.hpp.
dualize | ( | void | ) | [inline] |
Definition at line 70 of file dualize.hpp.
00070 { 00071 m_output = new Output; 00072 }
Definition at line 74 of file dualize.hpp.
~dualize | ( | void | ) | [inline] |
Definition at line 79 of file dualize.hpp.
void clear | ( | void | ) | [inline] |
Definition at line 281 of file dualize.hpp.
void get_dual_cell | ( | Node * | n1, | |
Node * | n2, | |||
Node * | n3, | |||
Node * | n4, | |||
Node * | n5, | |||
Node * | n6, | |||
Node * | n7, | |||
Node * | n8 | |||
) | [inline] |
Definition at line 183 of file dualize.hpp.
References node< _CELL >::get_cell(), mmx::shape::is_adjacent(), node< _CELL >::is_leaf(), node< _CELL >::left(), and node< _CELL >::right().
00184 { 00185 00186 if(!n1->get_cell()->is_active() && 00187 !n2->get_cell()->is_active() && 00188 !n3->get_cell()->is_active() && 00189 !n4->get_cell()->is_active() && 00190 !n5->get_cell()->is_active() && 00191 !n6->get_cell()->is_active() && 00192 !n7->get_cell()->is_active() && 00193 !n8->get_cell()->is_active()) return; 00194 00195 // std::cout<<"\nCell "; 00196 // if(!is_adjacent(n1,n2) || 00197 // !is_adjacent(n2,n3) || 00198 // !is_adjacent(n3,n4) || 00199 // !is_adjacent(n4,n1) || 00200 // !is_adjacent(n1,n5) || 00201 // !is_adjacent(n2,n6) || 00202 // !is_adjacent(n3,n7) || 00203 // !is_adjacent(n4,n8) 00204 // ) return; 00205 // else 00206 // std::cout<<" OK "; 00207 00208 if(!n1->is_leaf()) { 00209 if (is_adjacent(n1->left(),n2) && is_adjacent(n1->left(),n4) && is_adjacent(n1->left(),n5)) 00210 get_dual_cell(n1->left(), n2,n3,n4,n5,n6,n7,n8); 00211 if (is_adjacent(n1->right(),n2) && is_adjacent(n1->right(),n4) && is_adjacent(n1->right(),n5)) 00212 get_dual_cell(n1->right(),n2,n3,n4,n5,n6,n7,n8); 00213 return; 00214 } 00215 00216 if(!n2->is_leaf()) { 00217 if (is_adjacent(n1,n2->left()) && is_adjacent(n2->left(),n3) && is_adjacent(n2->left(),n6)) 00218 get_dual_cell(n1,n2->left(), n3,n4,n5,n6,n7,n8); 00219 if (is_adjacent(n1,n2->right()) && is_adjacent(n2->right(),n3) && is_adjacent(n2->right(),n6)) 00220 get_dual_cell(n1,n2->right(),n3,n4,n5,n6,n7,n8); 00221 return; 00222 } 00223 00224 if(!n3->is_leaf()) { 00225 if (is_adjacent(n2,n3->left()) && is_adjacent(n3->left(),n4) && is_adjacent(n3->left(),n7)) 00226 get_dual_cell(n1,n2,n3->left(), n4,n5,n6,n7,n8); 00227 if (is_adjacent(n2,n3->right()) && is_adjacent(n3->right(),n4) && is_adjacent(n3->right(),n7)) 00228 get_dual_cell(n1,n2,n3->right(),n4,n5,n6,n7,n8); 00229 return; 00230 } 00231 00232 if(!n4->is_leaf()) { 00233 if (is_adjacent(n3,n4->left()) && is_adjacent(n4->left(),n1) && is_adjacent(n4->left(),n8)) 00234 get_dual_cell(n1,n2,n3,n4->left(), n5,n6,n7,n8); 00235 if (is_adjacent(n3,n4->right()) && is_adjacent(n4->right(),n1) && is_adjacent(n4->right(),n8)) 00236 get_dual_cell(n1,n2,n3,n4->right(),n5,n6,n7,n8); 00237 return; 00238 } 00239 00240 00241 if(!n8->is_leaf()) { 00242 if (is_adjacent(n4,n8->left()) && is_adjacent(n7,n8->left()) && is_adjacent(n8->left(),n5)) 00243 get_dual_cell(n1,n2,n3,n4,n5,n6,n7,n8->left() ); 00244 if (is_adjacent(n4,n8->right()) && is_adjacent(n7,n8->right()) && is_adjacent(n8->right(),n5)) 00245 get_dual_cell(n1,n2,n3,n4,n5,n6,n7,n8->right()); 00246 return; 00247 } 00248 00249 if(!n7->is_leaf()) { 00250 if (is_adjacent(n3,n7->left()) && is_adjacent(n6,n7->left()) && is_adjacent(n7->left(),n8)) 00251 get_dual_cell(n1,n2,n3,n4,n5,n6,n7->left(), n8); 00252 if (is_adjacent(n3,n7->right()) && is_adjacent(n6,n7->right()) && is_adjacent(n7->right(),n8)) 00253 get_dual_cell(n1,n2,n3,n4,n5,n6,n7->right(),n8); 00254 return; 00255 } 00256 00257 if(!n6->is_leaf()) { 00258 if (is_adjacent(n2,n6->left()) && is_adjacent(n5,n6->left()) && is_adjacent(n6->left(),n7)) 00259 get_dual_cell(n1,n2,n3,n4,n5,n6->left(), n7,n8); 00260 if (is_adjacent(n2,n6->right()) && is_adjacent(n5,n6->right()) && is_adjacent(n6->right(),n7)) 00261 get_dual_cell(n1,n2,n3,n4,n5,n6->right(),n7,n8); 00262 return; 00263 } 00264 00265 if(!n5->is_leaf()) { 00266 if (is_adjacent(n1,n5->left()) && is_adjacent(n5->left(),n6) && is_adjacent(n8,n5->left())) 00267 get_dual_cell(n1,n2,n3,n4,n5->left(), n6,n7,n8); 00268 if (is_adjacent(n1,n5->right()) && is_adjacent(n5->right(),n6) && is_adjacent(n8,n5->right())) 00269 get_dual_cell(n1,n2,n3,n4,n5->right(),n6,n7,n8); 00270 return; 00271 } 00272 00273 use<dualize_def,C,V >::insert_cell(this, n1,n2,n3,n4, n5,n6,n7,n8); 00274 }
Definition at line 96 of file dualize.hpp.
References node< _CELL >::get_cell(), mmx::shape::is_adjacent(), node< _CELL >::is_leaf(), node< _CELL >::left(), and node< _CELL >::right().
00096 { 00097 00098 if(!is_adjacent(n1,n2)) return; 00099 00100 if(!n1->get_cell()->is_active() && !n2->get_cell()->is_active()) return; 00101 00102 if(!n1->is_leaf()) { 00103 if (is_adjacent(n1->left(), n2)) get_dual_edge(n1->left(), n2); 00104 if (is_adjacent(n1->right(),n2)) get_dual_edge(n1->right(), n2); 00105 //use<dualize_def,C,V>::dual_face(this, n1->right(), n1->left(), n2, n2); 00106 return; 00107 } 00108 00109 if(!n2->is_leaf()){ 00110 if (is_adjacent(n1,n2->left())) get_dual_edge(n1,n2->left()); 00111 if (is_adjacent(n1,n2->right())) get_dual_edge(n1,n2->right()); 00112 //use<dualize_def,C,V>::dual_face(this, n1, n1, n2->left(), n2->right()); 00113 return; 00114 } 00115 00116 use<dualize_def,C,V>::insert_edge(this, n1,n2); 00117 }
Definition at line 120 of file dualize.hpp.
References node< _CELL >::get_cell(), mmx::shape::is_adjacent(), node< _CELL >::is_leaf(), node< _CELL >::left(), and node< _CELL >::right().
00120 { 00121 if(!n1->get_cell()->is_active() && 00122 !n2->get_cell()->is_active() && 00123 !n3->get_cell()->is_active() && 00124 !n4->get_cell()->is_active()) return; 00125 00126 if(!is_adjacent(n1,n2) || 00127 !is_adjacent(n2,n3) || 00128 !is_adjacent(n3,n4) || 00129 !is_adjacent(n4,n1) ) return; 00130 00131 if(!n1->is_leaf()) { 00132 if (is_adjacent(n1->left(),n2) && is_adjacent(n1->left(),n4)) 00133 get_dual_face(n1->left(),n2,n3,n4); 00134 if (is_adjacent(n1->right(),n2) && is_adjacent(n1->right(),n4)) 00135 get_dual_face(n1->right(),n2,n3,n4); 00136 00137 if (is_adjacent(n1->left() ,n2) && is_adjacent(n1->left() ,n4) && 00138 is_adjacent(n1->right(),n2) && is_adjacent(n1->right(),n4) ) 00139 use<dualize_def,C,V>::dual_cell(this, n1->left(), n2,n3,n4, n1->right(),n2,n3,n4); 00140 return; 00141 } 00142 00143 if(!n2->is_leaf()) { 00144 if (is_adjacent(n1,n2->left()) && is_adjacent(n2->left(),n3)) 00145 get_dual_face(n1,n2->left(), n3,n4); 00146 if (is_adjacent(n1,n2->right()) && is_adjacent(n2->right(),n3)) 00147 get_dual_face(n1,n2->right(),n3,n4); 00148 00149 if (is_adjacent(n1,n2->left() ) && is_adjacent(n2->left() ,n3) && 00150 is_adjacent(n1,n2->right()) && is_adjacent(n2->right(),n3) ) 00151 use<dualize_def,C,V>::dual_cell(this, n1,n2->left(), n3,n4, n1,n2->right(),n3,n4); 00152 return; 00153 } 00154 00155 if(!n3->is_leaf()) { 00156 if (is_adjacent(n2,n3->left()) && is_adjacent(n3->left(),n4)) 00157 get_dual_face(n1,n2,n3->left(), n4); 00158 if (is_adjacent(n2,n3->right()) && is_adjacent(n3->right(),n4)) 00159 get_dual_face(n1,n2,n3->right(),n4); 00160 00161 if (is_adjacent(n2,n3->left() ) && is_adjacent(n3->left() ,n4) && 00162 is_adjacent(n2,n3->right()) && is_adjacent(n3->right(),n4) ) 00163 use<dualize_def,C,V>::dual_cell(this, n1,n2,n3->left(),n4, n1,n2,n3->right(),n4); 00164 return; 00165 } 00166 00167 if(!n4->is_leaf()) { 00168 if (is_adjacent(n3,n4->left()) && is_adjacent(n4->left(),n1)) 00169 get_dual_face(n1,n2,n3,n4->left()); 00170 if (is_adjacent(n3,n4->right()) && is_adjacent(n4->right(),n1)) 00171 get_dual_face(n1,n2,n3,n4->right()); 00172 00173 if (is_adjacent(n3,n4->left() ) && is_adjacent(n4->left() ,n1) && 00174 is_adjacent(n3,n4->right()) && is_adjacent(n4->right(),n1) ) 00175 use<dualize_def,C,V>::dual_cell(this, n1,n2,n3, n4->left(), n1,n2,n3, n4->right()); 00176 return; 00177 } 00178 00179 use<dualize_def,C,V>::insert_face(this,n1,n2,n3,n4); 00180 return; 00181 }
void get_dual_vertex | ( | Node * | n | ) | [inline] |
Definition at line 83 of file dualize.hpp.
References node< _CELL >::get_cell(), node< _CELL >::is_leaf(), node< _CELL >::left(), and node< _CELL >::right().
Referenced by dualize< C, V, Cell >::run().
00083 { 00084 if(!n->get_cell()->is_active()) return; 00085 00086 if(!n->is_leaf()) { 00087 this->get_dual_vertex(n->left()); 00088 this->get_dual_vertex(n->right()); 00089 use<dualize_def,C,V>::dual_edge(this, n->left(), n->right()); 00090 return; 00091 } 00092 use<dualize_def,C,V>::insert_vertex(this, n); 00093 }
Input* get_input | ( | void | ) | [inline] |
Definition at line 53 of file dualize.hpp.
Output* get_output | ( | void | ) | [inline] |
Definition at line 54 of file dualize.hpp.
void run | ( | void | ) | [inline] |
Definition at line 277 of file dualize.hpp.
References dualize< C, V, Cell >::get_dual_vertex(), and kdtree_cell< CELL >::root().
00277 { 00278 this->get_dual_vertex(m_input->root()); 00279 }
void set_input | ( | Input * | i | ) | [inline] |
Definition at line 52 of file dualize.hpp.