|
shape_doc 0.1
|
#include <mesher3d_dual.hpp>
Definition at line 27 of file mesher3d_dual.hpp.
typedef Cell::BoundingBox BoundingBox [inherited] |
Definition at line 46 of file mesher3d.hpp.
| typedef Output::Edge Edge |
Reimplemented from mesher3d< C, V, Shape, Cell >.
Definition at line 33 of file mesher3d_dual.hpp.
| typedef Output::Face Face |
Reimplemented from mesher3d< C, V, Shape, Cell >.
Definition at line 34 of file mesher3d_dual.hpp.
| typedef Cell Input |
Reimplemented from mesher3d< C, V, Shape, Cell >.
Definition at line 30 of file mesher3d_dual.hpp.
Reimplemented from mesher3d< C, V, Shape, Cell >.
Definition at line 31 of file mesher3d_dual.hpp.
| typedef Output::Point Point |
Reimplemented from mesher3d< C, V, Shape, Cell >.
Definition at line 32 of file mesher3d_dual.hpp.
typedef subdivision<C,V,Shape,Cell> Subdivisor [inherited] |
Definition at line 39 of file mesher3d.hpp.
| mesher3d_dual | ( | double | e1 = 0.1, |
| double | e2 = 0.01 |
||
| ) |
Definition at line 60 of file mesher3d_dual.hpp.
: mesher3d<C,V,Shape,Cell>(e1,e2) //m_smooth(e1), m_prec(e2) { // m_output = new Output; }
| ~mesher3d_dual | ( | void | ) |
Definition at line 66 of file mesher3d_dual.hpp.
{
// delete m_output;
}
| void clear | ( | void | ) | [inherited] |
Definition at line 106 of file mesher3d.hpp.
| double get_precision | ( | void | ) | [inline, inherited] |
Definition at line 58 of file mesher3d.hpp.
{ return m_prec; }
| double get_smoothness | ( | void | ) | [inline, inherited] |
Definition at line 57 of file mesher3d.hpp.
{ return m_smooth; }
| Input* input | ( | void | ) | [inline, inherited] |
Definition at line 61 of file mesher3d.hpp.
{ return m_input; }
| Output* output | ( | void | ) | [inline, inherited] |
Definition at line 62 of file mesher3d.hpp.
{ return m_output; }
| void run | ( | void | ) |
Reimplemented from mesher3d< C, V, Shape, Cell >.
Definition at line 70 of file mesher3d_dual.hpp.
References Cell, marching_cube::centralise(), Edge, Face, face< C, V, POINT >::insert(), subdivision< C, V, Shape, Cell >::output(), subdivision< C, V, Shape, Cell >::run(), dualize< C, V, Shape, Cell >::set_input(), and subdivision< C, V, Shape, Cell >::set_input().
{
typedef subdivision<C,V,Shape,Cell> Subdivisor;
Subdivisor* sbd = new Subdivisor(this->get_smoothness(),this->get_precision());
sbd->set_input(this->input());
sbd->run();
std::cout<< "leaves = "<< sbd->output()->m_leaves.size()<<"\n";
typedef dualize<C,V,Shape,Cell> Dualize;
Dualize* dl = new Dualize;
dl->set_input(sbd->output());
dl->run();
// this->get_adjacency();
std::cout<< "Dual edges= "<< dl->output()->m_edges.size()/2<<"\n";
std::cout<< "Dual faces= "<< dl->output()->m_faces.size()/3<<"\n";
foreach(Cell * cl, sbd->output()->m_leaves) {
marching_cube::centralise(*cl, *cl);
// marching_cube::polygonise(*cl, *cl);
foreach(Point* p, cl->m_points) this->output()->insert(p);
}
for(unsigned i=0; i< dl->output()->m_edges.size();i+=2){
Edge* e=new Edge(dl->output()->m_edges[i]->get_cell()->m_points[0],
dl->output()->m_edges[i+1]->get_cell()->m_points[0]);
this->output()->insert(e);
}
for(unsigned i=0; i< dl->output()->m_faces.size();i+=3){
Face* f=new Face;
f->insert(dl->output()->m_faces[i]->get_cell()->m_points[0]);
f->insert(dl->output()->m_faces[i+1]->get_cell()->m_points[0]);
f->insert(dl->output()->m_faces[i+2]->get_cell()->m_points[0]);
this->output()->insert(f);
}
// foreach(Cell * cl, this->m_leaves) {
// marching_cube::polygonise(*cl, *cl);
// foreach(Point* p, cl->m_points) m_output.insert(p);
// foreach(Face* f, cl->m_faces) m_output.insert(f);
// }
}
| void set_input | ( | Cell * | cl | ) | [inline, inherited] |
Definition at line 51 of file mesher3d.hpp.
{ m_input= cl; }
| void set_input | ( | Shape * | s, |
| const BoundingBox & | bx | ||
| ) | [inherited] |
Definition at line 85 of file mesher3d.hpp.
{
this->set_input(cell3d_factory<C,V>::instance()->create(s,bx));
}
| void set_precision | ( | double | e | ) | [inline, inherited] |
| void set_smoothness | ( | double | e | ) | [inline, inherited] |
Definition at line 54 of file mesher3d.hpp.
{ m_smooth = e; }