shape_doc 0.1
|
#include <dualize.hpp>
Definition at line 35 of file dualize.hpp.
typedef kdtree_cell<Shape,Cell> Input |
Definition at line 39 of file dualize.hpp.
Definition at line 38 of file dualize.hpp.
typedef graph_dual<Shape,Cell> Output |
Definition at line 40 of file dualize.hpp.
dualize | ( | void | ) |
Definition at line 64 of file dualize.hpp.
{ m_output = new Output; }
~dualize | ( | void | ) |
Definition at line 68 of file dualize.hpp.
{
delete m_output;
}
void clear | ( | void | ) |
Definition at line 220 of file dualize.hpp.
{ }
Definition at line 83 of file dualize.hpp.
References node< _Object, _CELL >::get_cell(), mmx::shape::is_adjacentpl3d(), node< _Object, _CELL >::is_leaf(), node< _Object, _CELL >::left(), and node< _Object, _CELL >::right().
{ if(!n1->get_cell()->is_active()) return; if(!n2->get_cell()->is_active()) return; if(!is_adjacentpl3d(n1->get_cell(),n2->get_cell())) return; if(!n1->is_leaf()) { get_dual_edge(n1->left(), n2); get_dual_edge(n1->right(), n2); get_dual_face(n1->left(), n1->right(), n2); return; } if(!n2->is_leaf()){ get_dual_edge(n1, n2->left()); get_dual_edge(n1, n2->right()); get_dual_face(n1, n2->left(), n2->right()); return; } this->output()->m_edges<<n1<<n2; return; }
Definition at line 177 of file dualize.hpp.
References node< _Object, _CELL >::get_cell(), mmx::shape::is_adjacentpl3d(), node< _Object, _CELL >::is_leaf(), node< _Object, _CELL >::left(), and node< _Object, _CELL >::right().
{ if(!n1->get_cell()->is_active()) return; if(!n2->get_cell()->is_active()) return; if(!n3->get_cell()->is_active()) return; if(!n4->get_cell()->is_active()) return; if(!is_adjacentpl3d(n1->get_cell(),n2->get_cell()) || !is_adjacentpl3d(n2->get_cell(),n3->get_cell()) || !is_adjacentpl3d(n3->get_cell(),n4->get_cell()) || !is_adjacentpl3d(n4->get_cell(),n1->get_cell()) ) return; if(!n1->is_leaf()){ get_dual_face(n1->left(), n2,n3,n4); get_dual_face(n1->right(),n2,n3,n4); return; } if(!n2->is_leaf()){ get_dual_face(n1,n2->left(), n3,n4); get_dual_face(n1,n2->right(),n3,n4); return; } if(!n3->is_leaf()){ get_dual_face(n1,n2,n3->left(), n4); get_dual_face(n1,n2,n3->right(),n4); return; } if(!n4->is_leaf()){ get_dual_face(n1,n2,n3,n4->left()); get_dual_face(n1,n2,n3,n4->right()); return; } this->output()->m_faces<<n1<<n2<<n3; this->output()->m_faces<<n1<<n4<<n3; return; }
Definition at line 107 of file dualize.hpp.
References node< _Object, _CELL >::get_cell(), mmx::shape::is_adjacentpl3d(), node< _Object, _CELL >::is_leaf(), node< _Object, _CELL >::left(), and node< _Object, _CELL >::right().
{ if(!n1->get_cell()->is_active()) return; if(!n2->get_cell()->is_active()) return; if(!n3->get_cell()->is_active()) return; if(!is_adjacentpl3d(n1->get_cell(),n2->get_cell()) || !is_adjacentpl3d(n2->get_cell(),n3->get_cell()) || !is_adjacentpl3d(n3->get_cell(),n1->get_cell()) ) return; if(!n1->is_leaf()){ if(is_adjacentpl3d(n1->left()->get_cell(),n2->get_cell())) { if(is_adjacentpl3d(n1->left()->get_cell(),n3->get_cell())) get_dual_face(n1->left(),n2,n3); else if(is_adjacentpl3d(n1->right()->get_cell(),n3->get_cell())) get_dual_face(n1->right(),n1->left(),n2,n3); } if(is_adjacentpl3d(n1->right()->get_cell(),n2->get_cell())) { if(is_adjacentpl3d(n1->right()->get_cell(),n3->get_cell())) get_dual_face(n1->right(),n2,n3); else if(is_adjacentpl3d(n1->left()->get_cell(),n3->get_cell())) get_dual_face(n1->left(),n1->right(),n2,n3); } return; } if(!n2->is_leaf()){ if(is_adjacentpl3d(n2->left()->get_cell(),n3->get_cell())) { if(is_adjacentpl3d(n2->left()->get_cell(),n1->get_cell())) get_dual_face(n1, n2->left(),n3); else if(is_adjacentpl3d(n2->right()->get_cell(),n1->get_cell())) get_dual_face(n1, n2->right(),n2->left(),n3); } if(is_adjacentpl3d(n2->right()->get_cell(),n3->get_cell())) { if(is_adjacentpl3d(n2->right()->get_cell(),n1->get_cell())) get_dual_face(n1, n2->right(),n3); else if(is_adjacentpl3d(n2->left()->get_cell(),n1->get_cell())) get_dual_face(n1,n2->left(),n2->right(),n3); } return; } if(!n3->is_leaf()){ if(is_adjacentpl3d(n3->left()->get_cell(),n1->get_cell())) { if(is_adjacentpl3d(n3->left()->get_cell(),n2->get_cell())) get_dual_face(n1,n2,n3->left()); else if(is_adjacentpl3d(n3->right()->get_cell(),n2->get_cell())) get_dual_face(n1,n2,n3->right(),n3->left()); } if(is_adjacentpl3d(n3->right()->get_cell(),n1->get_cell())) { if(is_adjacentpl3d(n3->right()->get_cell(),n2->get_cell())) get_dual_face(n1,n2,n3->right()); else if(is_adjacentpl3d(n3->left()->get_cell(),n2->get_cell())) get_dual_face(n1,n2,n3->left(),n3->right()); } return; } this->output()->m_faces<<n1<<n2<<n3; return; }
void get_dual_vertex | ( | Node * | n | ) |
Definition at line 72 of file dualize.hpp.
References node< _Object, _CELL >::get_cell(), node< _Object, _CELL >::is_leaf(), node< _Object, _CELL >::left(), and node< _Object, _CELL >::right().
{ if(!n->get_cell()->is_active()) return; if(!n->is_leaf()) { this->get_dual_vertex(n->left()); this->get_dual_vertex(n->right()); this->get_dual_edge(n->left(),n->right()); } return; }
Input* input | ( | void | ) | [inline] |
Definition at line 47 of file dualize.hpp.
{ return m_input; }
Output* output | ( | void | ) | [inline] |
Definition at line 48 of file dualize.hpp.
{ return m_output; }
void run | ( | void | ) |
Definition at line 216 of file dualize.hpp.
{ this->get_dual_vertex(m_input->root()); }
void set_input | ( | Input * | i | ) | [inline] |
Definition at line 45 of file dualize.hpp.
Referenced by mesher3d_dual< C, V, Shape, Cell >::run().
{ m_input = i; }