![]() |
TAPs 0.7.7.3
|
00001 /****************************************************************************** 00002 TAPsMarchingCube.cpp 00003 ******************************************************************************/ 00007 /****************************************************************************** 00008 SUKITTI PUNAK (10/11/2006) 00009 UPDATE (10/12/2006) 00010 ******************************************************************************/ 00011 #include "TAPsMarchingCube.hpp" 00012 // Using Inclusion Model (i.e. definitions are included in declarations) 00013 // (this name.cpp is included in name.hpp) 00014 // Each friend is defined directly inside its declaration. 00015 00016 BEGIN_NAMESPACE_TAPs 00017 //============================================================================= 00018 //----------------------------------------------------------------------------- 00019 // Constructor 00020 template <typename T> 00021 MarchingCube<T>::MarchingCube ( GridGenerator<T> * pGridGenerator ) 00022 // : m_pGridGenerator( pGridGenerator ) 00023 00024 { 00025 if ( pGridGenerator ) { 00026 GenerateIsosurface( pGridGenerator ); 00027 } 00028 } 00029 //----------------------------------------------------------------------------- 00030 // Destructor 00031 template <typename T> 00032 MarchingCube<T>::~MarchingCube () 00033 { 00034 DeleteIsosurface(); 00035 } 00036 /* 00037 //----------------------------------------------------------------------------- 00038 // Generate Grids with Input Dimension 00039 template <typename T> 00040 bool GridGenerator<T>::GenerateGridsWithDimension ( 00041 T iGridWidth, T iGridHeight, T iGridDepth ) 00042 { 00043 if ( !m_pModel ) return false; 00044 //------------------------------------------------------------------ 00045 if ( iGridWidth == m_atGridDimension[0] 00046 && iGridHeight == m_atGridDimension[1] 00047 && iGridDepth == m_atGridDimension[2] ) 00048 { 00049 return false; 00050 } 00051 //------------------------------------------------------------------ 00052 DeleteGrids(); 00053 //------------------------------------------------------------------ 00054 // Set Dimension 00055 m_atGridDimension[0] = iGridWidth; 00056 m_atGridDimension[1] = iGridHeight; 00057 m_atGridDimension[2] = iGridDepth; 00058 //------------------------------------------------------------------ 00059 // Set Size 00060 T xSize = ( m_tAABBMax[0] - m_tAABBMin[0] ) / m_atGridDimension[0]; 00061 T ySize = ( m_tAABBMax[1] - m_tAABBMin[1] ) / m_atGridDimension[1]; 00062 T zSize = ( m_tAABBMax[2] - m_tAABBMin[2] ) / m_atGridDimension[2]; 00063 m_auiGridSize[0] = ceil( xSize ) + 1; 00064 m_auiGridSize[1] = ceil( ySize ) + 1; 00065 m_auiGridSize[2] = ceil( zSize ) + 1; 00066 //m_auiGridSize[0] = static_cast< unsigned int >( ceil( xSize ) ) + 1; 00067 //m_auiGridSize[1] = static_cast< unsigned int >( ceil( ySize ) ) + 1; 00068 //m_auiGridSize[2] = static_cast< unsigned int >( ceil( zSize ) ) + 1; 00069 //------------------------------------------------------------------ 00070 GenerateGrids(); 00071 //------------------------------------------------------------------ 00072 #ifdef TAPs_DEBUG_MODE 00073 #ifdef TAPs_USE_WXWIDGETS 00074 wxLogError( wxT( "Grid Generator:" ) ); 00075 wxLogError( wxT( " w/ size: %i, %i, %i" ), m_auiGridSize[0], m_auiGridSize[1], m_auiGridSize[2] ); 00076 wxLogError( wxT( " w/ dim: %g, %g, %g" ), m_atGridDimension[0], m_atGridDimension[1], m_atGridDimension[2] ); 00077 #else 00078 // std::cerr << "Error: " << glewGetErrorString( err ) << std::endl; 00079 #endif 00080 #endif 00081 //------------------------------------------------------------------ 00082 return true; 00083 } 00084 //*/ 00085 //----------------------------------------------------------------------------- 00086 // Generate Isosurface 00087 template <typename T> 00088 bool MarchingCube<T>::GenerateIsosurface ( GridGenerator<T> * pGridGenerator ) 00089 { 00090 if ( !pGridGenerator ) return false; 00091 //--------------------------------------------------------------- 00092 00093 } 00094 //----------------------------------------------------------------------------- 00095 // Delete Isosurface 00096 template <typename T> 00097 void MarchingCube<T>::DeleteIsosurface () 00098 { 00099 m_vXVertex.~vector<T>(); 00100 m_vFace.~vector<T>(); 00101 for ( int i = 0; i < m_vviVertexRing1List.size(); ++i ) { 00102 m_vviVertexRing1List[i].~vector<T>(); 00103 } 00104 m_vviVertexRing1List.~vector<T>(); 00105 } 00106 //----------------------------------------------------------------------------- 00107 #if defined(__gl_h_) || defined(__GL_H__) 00108 //============================================================================= 00109 // DrawByOpenGL 00110 //----------------------------------------------------------------------------- 00111 template <typename T> 00112 void MarchingCube<T>::DrawByOpenGL ( GLenum drawStyle ) 00113 { 00114 } 00115 //----------------------------------------------------------------------------- 00116 #endif 00117 //============================================================================= 00118 END_NAMESPACE_TAPs 00119 //----------------------------------------------------------------------------- 00120 //34567890123456789012345678901234567890123456789012345678901234567890123456789 00121 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----