31 #ifndef ATBMARCHINGCUBES_HH 32 #define ATBMARCHINGCUBES_HH 38 #include <blitz/array.h> 73 typedef blitz::TinyVector<SurfaceGeometry::VertexT,3>
Triangle;
79 blitz::TinyVector<SurfaceGeometry::VertexT,8> cornerCoordinates;
80 blitz::TinyVector<double,8> cornerValues;
83 static int edgeTable[256];
84 static int triangleTable[256][16];
86 static int computeTrianglesForGridCell(
87 GridCell
const &gridCell, std::vector<Triangle> &triangles,
88 double isoLevel = 0.0);
90 static void computeTrianglesForGridCell(
91 GridCell
const &gridCell, blitz::TinyVector<int,12> &cellIndices,
120 template<
typename DataT>
123 double isoLevel = 0.0,
double simplifyTolerance = 0.0);
146 template<
typename DataT>
148 blitz::Array<DataT,3>
const &data,
149 blitz::TinyVector<double,3>
const &elementSizeUm,
151 double simplifyTolerance = 0.0);
170 static double _computeEdgeRemovalCost(
172 std::vector< std::set<size_t> >
const &triangles);
180 #include "MarchingCubes.icc" Array class derived from blitz++ Arrays for handling microscopic datasets with associated element siz...
The Array class is an extension to the blitz++ Array class providing additional parameters element si...
blitz::TinyVector< float, 3 > VertexT
VertexT is the type used to store a 3D vertex position.
Storage and rendering of Triangulated surfaces.
Neighborhoods for local operators.
static void triangulate(Array< DataT, 3 > const &data, SurfaceGeometry &surface, double isoLevel=0.0, double simplifyTolerance=0.0)
The triangulate function computes a vertex mesh from a given levelset Array.
blitz::TinyVector< SurfaceGeometry::VertexT, 3 > Triangle
A triangle in 3-D space.
static void simplifyMesh(SurfaceGeometry &surface, double simplifyTolerance)
Simplify the given mesh by merging vertices as long as the given tolerance is not exceeded...
The SurfaceGeometry struct provides data structures required for the storage of triangulated surface ...
The MarchingCubes class provides the Marching Cubes Algorithm for isosurface tesselation of real scal...