|
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; }