|
shape_doc 0.1
|
#include <marching_cube.hpp>
Definition at line 11 of file marching_cube.hpp.
| marching_cube | ( | void | ) | [inline] |
Definition at line 15 of file marching_cube.hpp.
{};
| ~marching_cube | ( | void | ) | [inline] |
Definition at line 16 of file marching_cube.hpp.
{};
| bool centralise | ( | Mesh & | res, |
| const Cell & | grid | ||
| ) | [static] |
Definition at line 58 of file marching_cube.hpp.
References Face, mmx::shape::marching_cube_edge_table, and mmx::shape::marching_cube_tri_table.
Referenced by mesher3d_dual< C, V, Shape, Cell >::run().
{
typedef typename Mesh::Point Point;
typedef typename Mesh::Face Face;
int CubeIndex=cell.mc_index();
// std::cout<<CubeIndex<<std::endl;
if (marching_cube_edge_table[CubeIndex] == 0) return false;
Point* CELL[12];
if(cell.edge_point(CELL, marching_cube_edge_table[CubeIndex])) {
Point* c=new Point(0,0,0);
unsigned ntr=0;
for (int i=0;marching_cube_tri_table[CubeIndex][i]!=-1;i+=3)
ntr++;
ntr/=2;
for(int j=0;j<3;j++) {
Point* p=CELL[marching_cube_tri_table[CubeIndex][3*ntr+j]];
c->x()+= p->x();
c->y()+= p->y();
c->z()+= p->z();
}
c->x()/=3.;
c->y()/=3.;
c->z()/=3.;
// c->x()=(cell.xmin()+cell.xmax())/2;
// c->y()=(cell.ymin()+cell.ymax())/2;
// c->z()=(cell.zmin()+cell.zmax())/2;
//std::cout<<*c<<std::endl;
res.insert(c);
return true;
} else
return false;
}
| bool polygonise | ( | Mesh & | res, |
| const Cell & | grid | ||
| ) | [static] |
Definition at line 29 of file marching_cube.hpp.
References Face, mmx::shape::marching_cube_edge_table, and mmx::shape::marching_cube_tri_table.
Referenced by cell3d_surface_algebraic< C, V >::polygonise(), and use< subdivision_def, with_tpl3d< K > >::process_regular().
{
typedef typename Mesh::Point Point;
typedef typename Mesh::Face Face;
int CubeIndex=cell.mc_index();
if (marching_cube_edge_table[CubeIndex] == 0) return false;
Point* CELL[12];
if(cell.edge_point(CELL, marching_cube_edge_table[CubeIndex])) {
for (int i=0;marching_cube_tri_table[CubeIndex][i]!=-1;i+=3) {
Face* F= new Face;
for(int j=0;j<3;j++) {
Point* p=CELL[marching_cube_tri_table[CubeIndex][i+j]];
res.insert(p);
F->insert(p);
}
res.insert(F);
}
return true;
} else
return false;
}