29 #ifndef MARCHING_CUBES_INCLUDED
30 #define MARCHING_CUBES_INCLUDED
34 #define NEW_ORDERING 1
43 static int EdgeIndex (
int orientation,
int i);
58 static int EdgeIndex (
int orientation ,
int i ,
int j );
59 static void FactorEdgeIndex (
int idx ,
int& orientation ,
int& i ,
int &j);
60 static int FaceIndex (
int dir ,
int offSet );
61 static int FaceIndex (
int x ,
int y ,
int z );
75 static void EdgeCorners(
int idx ,
int& c1 ,
int &c2 );
76 static void FaceCorners(
int idx ,
int& c1 ,
int &c2 ,
int& c3 ,
int& c4 );
84 static double Interpolate(
double v1,
double v2);
85 static void SetVertex(
int e,
const double values[
Square::CORNERS],
double iso);
99 static bool HasRoots(
unsigned char mcIndex );
101 static bool HasEdgeRoots(
unsigned char mcIndex ,
int edgeIndex );
110 static void SetVertex(
int e,
const double values[
Cube::CORNERS],
double iso);
111 static unsigned char GetFaceIndex(
const double values[
Cube::CORNERS] ,
double iso ,
int faceIndex );
113 static void SetVertex(
int e,
const float values[
Cube::CORNERS],
float iso);
114 static unsigned char GetFaceIndex(
const float values[
Cube::CORNERS] ,
float iso ,
int faceIndex );
117 static unsigned char GetFaceIndex(
unsigned char mcIndex ,
int faceIndex );
142 static bool IsAmbiguous(
unsigned char mcIndex ,
int faceIndex );
143 static bool HasRoots(
unsigned char mcIndex );
144 static bool HasFaceRoots(
unsigned char mcIndex ,
int faceIndex );
145 static bool HasEdgeRoots(
unsigned char mcIndex ,
int edgeIndex );
static bool IsEdgeCorner(int cIndex, int e)
static int CornerIndex(int x, int y, int z)
static int FaceReflectEdgeIndex(int idx, int faceIndex)
static bool IsFaceCorner(int cIndex, int f)
static const unsigned int EDGES
static int FaceReflectCornerIndex(int idx, int faceIndex)
static int FaceAdjacentToEdges(int eIndex1, int eIndex2)
static int FaceReflectFaceIndex(int idx, int faceIndex)
static const unsigned int FACES
static int AntipodalCornerIndex(int idx)
static int EdgeIndex(int orientation, int i, int j)
static int EdgeReflectCornerIndex(int idx, int edgeIndex)
static const unsigned int CORNERS
static void FactorEdgeIndex(int idx, int &orientation, int &i, int &j)
static int EdgeReflectEdgeIndex(int edgeIndex)
static void FacesAdjacentToEdge(int eIndex, int &f1Index, int &f2Index)
static void FactorFaceIndex(int idx, int &x, int &y, int &z)
static void FaceCorners(int idx, int &c1, int &c2, int &c3, int &c4)
static void EdgeCorners(int idx, int &c1, int &c2)
static int FaceIndex(int dir, int offSet)
static void FactorCornerIndex(int idx, int &x, int &y, int &z)
static bool IsAmbiguous(const double v[Cube::CORNERS], double isoValue, int faceIndex)
static const int cornerMap[Cube::CORNERS]
static const int triangles[1<< Cube::CORNERS][3 *MAX_TRIANGLES+1]
static const unsigned int MAX_TRIANGLES
static bool HasEdgeRoots(unsigned char mcIndex, int edgeIndex)
static double vertexList[Cube::EDGES][3]
static unsigned char GetIndex(const double values[Cube::CORNERS], double iso)
static bool HasRoots(const double v[Cube::CORNERS], double isoValue)
static bool HasFaceRoots(unsigned char mcIndex, int faceIndex)
static double Interpolate(double v1, double v2)
static int AddTriangles(const double v[Cube::CORNERS], double isoValue, Triangle *triangles)
static int AddTriangleIndices(int mcIndex, int *triangles)
static const int edgeMask[1<< Cube::CORNERS]
static bool HasEdgeRoots(unsigned char mcIndex, int edgeIndex)
static bool IsAmbiguous(const double v[Square::CORNERS], double isoValue)
static double vertexList[Square::EDGES][2]
static unsigned char GetIndex(const float values[Square::CORNERS], float iso)
static bool HasRoots(unsigned char mcIndex)
static const int cornerMap[Square::CORNERS]
static const int edges[1<< Square::CORNERS][2 *MAX_EDGES+1]
static const unsigned int MAX_EDGES
static const int edgeMask[1<< Square::CORNERS]
static int AddEdges(const double v[Square::CORNERS], double isoValue, Edge *edges)
static int AddEdgeIndices(const double v[Square::CORNERS], double isoValue, int *edges)
static int ReflectCornerIndex(int idx, int edgeIndex)
static int AntipodalCornerIndex(int idx)
static void FactorCornerIndex(int idx, int &x, int &y)
static void FactorEdgeIndex(int idx, int &orientation, int &i)
static int ReflectEdgeIndex(int idx, int edgeIndex)
static void EdgeCorners(int idx, int &c1, int &c2)
static int EdgeIndex(int orientation, int i)
static const unsigned int CORNERS
static const unsigned int FACES
static const unsigned int EDGES
static int CornerIndex(int x, int y)