36 #include "niftkCoreExports.h"
88 CMC33 (
const int size_x = -1,
const int size_y = -1,
const int size_z = -1 );
96 inline const int nverts()
const {
return _nverts; }
98 inline const int ntrigs()
const {
return _ntrigs; }
101 inline const int size_x()
const {
return _size_x; }
103 inline const int size_y()
const {
return _size_y; }
105 inline const int size_z()
const {
return _size_z; }
118 inline void set_method (
const bool originalMC =
false ) { _originalMC = originalMC; }
124 inline void set_input_data ( real *
data ) {
if( !_ext_data )
delete [] _data; _ext_data = data != NULL;
if( _ext_data ) _data =
data; }
151 void run( real iso = (real)0.0 );
155 void process_cube () ;
157 bool test_face ( schar
face );
159 bool test_interior( schar
s ) ;
161 bool modified_test_interior(schar
s);
163 int interior_ambiguity(
int amb_face,
int s);
165 int interior_ambiguity_verification(
int edge);
167 bool interior_test_case13();
168 bool interior_test_case13_2(
float isovalue);
177 inline const real
get_data (
const int i,
const int j,
const int k )
const {
return _data[ i + j*_size_x + k*_size_x*_size_y]; }
186 void compute_intersection_points( real iso );
194 void add_triangle (
const char* trig,
char n,
int v12 = -1 );
197 void test_vertex_addition();
213 real get_x_grad(
const int i,
const int j,
const int k )
const;
220 real get_y_grad(
const int i,
const int j,
const int k )
const;
227 real get_z_grad(
const int i,
const int j,
const int k )
const;
235 inline int get_x_vert(
const int i,
const int j,
const int k )
const {
return _x_verts[ i + j*_size_x + k*_size_x*_size_y]; }
242 inline int get_y_vert(
const int i,
const int j,
const int k )
const {
return _y_verts[ i + j*_size_x + k*_size_x*_size_y]; }
249 inline int get_z_vert(
const int i,
const int j,
const int k )
const {
return _z_verts[ i + j*_size_x + k*_size_x*_size_y]; }
258 inline void set_x_vert(
const int val,
const int i,
const int j,
const int k ) { _x_verts[ i + j*_size_x + k*_size_x*_size_y] =
val; }
266 inline void set_y_vert(
const int val,
const int i,
const int j,
const int k ) { _y_verts[ i + j*_size_x + k*_size_x*_size_y] =
val; }
274 inline void set_z_vert(
const int val,
const int i,
const int j,
const int k ) { _z_verts[ i + j*_size_x + k*_size_x*_size_y] =
val; }
280 void resizeAndAllocateConnectivity(
int index);
void set_x_vert(const int val, const int i, const int j, const int k)
Definition: niftkCMC33.h:258
const int size_y() const
Definition: niftkCMC33.h:103
int _j
Definition: niftkCMC33.h:308
int _nverts
Definition: niftkCMC33.h:299
const real get_data(const int i, const int j, const int k) const
Definition: niftkCMC33.h:177
void set_output_data(MeshData *meshData)
Definition: niftkCMC33.h:127
GLuint const GLfloat * val
Definition: glew.h:2691
std::vector< BasicVertex > m_Vertices
Definition: niftkCMC33.h:63
int _ntrigs
Definition: niftkCMC33.h:300
int get_x_vert(const int i, const int j, const int k) const
Definition: niftkCMC33.h:235
uchar _config
Definition: niftkCMC33.h:314
uchar _lut_entry
Definition: niftkCMC33.h:312
uchar _case
Definition: niftkCMC33.h:313
GLint GLenum GLsizei GLint GLsizei const GLvoid * data
Definition: glew.h:1363
int _k
Definition: niftkCMC33.h:309
int _size_x
Definition: niftkCMC33.h:290
int * _x_verts
Definition: niftkCMC33.h:295
int _Nverts
Definition: niftkCMC33.h:301
std::vector< std::vector< vcl_size_t > > m_VertexToTriangleIndices
Definition: niftkCMC33.h:65
float real
Definition: niftkCMC33.h:53
bool _ext_data
Definition: niftkCMC33.h:286
real * _data
Definition: niftkCMC33.h:293
int * _z_verts
Definition: niftkCMC33.h:297
int get_z_vert(const int i, const int j, const int k) const
Definition: niftkCMC33.h:249
const int size_x() const
Definition: niftkCMC33.h:101
GLsizei const GLfloat * value
Definition: glew.h:1833
MeshData * m_MeshDataExt
Definition: niftkCMC33.h:305
int _size_y
Definition: niftkCMC33.h:291
int _i
Definition: niftkCMC33.h:307
void set_method(const bool originalMC=false)
Definition: niftkCMC33.h:118
uchar _subconfig
Definition: niftkCMC33.h:315
Marching Cubes - CMC33 algorithm.
Definition: niftkCMC33.h:76
int * _y_verts
Definition: niftkCMC33.h:296
const int size_z() const
Definition: niftkCMC33.h:105
void set_y_vert(const int val, const int i, const int j, const int k)
Definition: niftkCMC33.h:266
std::vector< std::vector< vcl_size_t > > m_VertexToVertexIndices
Definition: niftkCMC33.h:66
GLuint index
Definition: glew.h:1798
void set_z_vert(const int val, const int i, const int j, const int k)
Definition: niftkCMC33.h:274
unsigned char uchar
Definition: niftkCMC33.h:49
bool _originalMC
Definition: niftkCMC33.h:285
std::vector< BasicTriangle > m_Triangles
Definition: niftkCMC33.h:64
bool _computeNormals
Definition: niftkCMC33.h:288
int _Ntrigs
Definition: niftkCMC33.h:302
GLclampd n
Definition: glew.h:6789
void enable_normal_computing(bool value)
Definition: niftkCMC33.h:130
int _size_z
Definition: niftkCMC33.h:292
int get_y_vert(const int i, const int j, const int k) const
Definition: niftkCMC33.h:242
const int nverts() const
Definition: niftkCMC33.h:96
const int ntrigs() const
Definition: niftkCMC33.h:98
Container class for passing around data structures containing a mesh.
Definition: niftkCMC33.h:61
void set_input_data(real *data)
Definition: niftkCMC33.h:124
GLdouble s
Definition: glew.h:1374
Definition: niftkExceptionObject.h:21
GLenum GLuint GLint GLenum face
Definition: glew.h:3832
signed char schar
Definition: niftkCMC33.h:51