00001 00002 00003 #ifndef _MC_GRID_3D_SCALAR_MARCHING_CUBE_HPP_ 00004 #define _MC_GRID_3D_SCALAR_MARCHING_CUBE_HPP_ 00005 00006 #include <MC_grid_3d_scalar.hpp> 00007 #include <vector> 00008 #include <algorithm> 00009 00010 namespace mesh_conv 00011 { 00012 class MC_mesh_index_vector; 00013 class MC_int_vector; 00014 00016 class MC_grid_3d_scalar_marching_cube 00017 { 00018 00019 public: 00020 00021 // ************************************************ // 00022 // ************************************************ // 00023 // SLICE 00024 // ************************************************ // 00025 // ************************************************ // 00026 00028 static MC_mesh_index_vector marching_cube(const MC_grid_3d_scalar& values,const double& isovalue=0.0); 00029 00030 private: 00031 00033 static void create_polygon(const std::vector<double>& cell_value,const int& type_of_cube,const MC_int_vector& x,MC_mesh_index_vector* mesh, std::map<MC_int_pair,unsigned int,MC_int_pair_less>* edge_to_vertex_index,const MC_grid_3d_scalar& potential); 00034 00036 static int EdgeTable[256]; 00038 static int TriangulationTable[256][16]; 00039 }; 00040 00041 } 00042 00043 #endif
1.6.1