00001 //============================================================================== 00018 #ifndef MDS_TETRAMESHISOTROPICEDGESPLITTING_H 00019 #define MDS_TETRAMESHISOTROPICEDGESPLITTING_H 00020 00021 // MDSTk 00022 #include <MDSTk/Base/mdsSetup.h> 00023 #include <MDSTk/Module/mdsModule.h> 00024 #include <MDSTk/System/mdsEvent.h> 00025 #include <MDSTk/Image/mdsDensityVolume.h> 00026 00027 // MDSTk Extensions 00028 #include <MDSTk/VectorSegmentation/mdsTetraMesh.h> 00029 00030 00031 //============================================================================== 00036 class CTetraMeshIsotropicEdgeSplitting : public mds::mod::CModule 00037 { 00038 public: 00041 MDS_SHAREDPTR(CTetraMeshIsotropicEdgeSplitting); 00042 00043 public: 00045 CTetraMeshIsotropicEdgeSplitting(const std::string& sDescription); 00046 00048 virtual ~CTetraMeshIsotropicEdgeSplitting(); 00049 00050 protected: 00052 virtual bool startup(); 00053 00055 virtual bool main(); 00056 00058 virtual void shutdown(); 00059 00061 virtual void writeExtendedUsage(std::ostream& Stream); 00062 00063 protected: 00065 mds::seg::CTetraMeshPtr m_spMesh; 00066 00068 mds::img::CDensityVolumePtr m_spVolume, m_spEdgeVolume, m_spControlSpace; 00069 00071 double m_dMinLength, m_dThreshold; 00072 bool m_bBoundary, m_bCDT; 00073 }; 00074 00075 00076 //============================================================================== 00080 typedef CTetraMeshIsotropicEdgeSplitting::tSmartPtr CTetraMeshIsotropicEdgeSplittingPtr; 00081 00082 00083 #endif // MDS_TETRAMESHISOTROPICEDGESPLITTING_H 00084