00001 //============================================================================== 00018 #ifndef MDS_TETRAMESHEDGESPLITTING_H 00019 #define MDS_TETRAMESHEDGESPLITTING_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 #include <MDSTk/VectorSegmentation/mdsTetraEdgeIterator.h> 00030 00031 00032 //============================================================================== 00037 class CTetraMeshEdgeSplitting : public mds::mod::CModule 00038 { 00039 public: 00042 MDS_SHAREDPTR(CTetraMeshEdgeSplitting); 00043 00044 public: 00046 CTetraMeshEdgeSplitting(const std::string& sDescription); 00047 00049 virtual ~CTetraMeshEdgeSplitting(); 00050 00051 protected: 00053 virtual bool startup(); 00054 00056 virtual bool main(); 00057 00059 virtual void shutdown(); 00060 00062 virtual void writeExtendedUsage(std::ostream& Stream); 00063 00064 protected: 00066 mds::seg::CTetraMeshPtr m_spMesh; 00067 00069 mds::img::CDensityVolumePtr m_spVolume, m_spEdgeVolume; 00070 00072 double m_dMinLength, m_dOrientThreshold; 00073 }; 00074 00075 00076 //============================================================================== 00080 typedef CTetraMeshEdgeSplitting::tSmartPtr CTetraMeshEdgeSplittingPtr; 00081 00082 00083 #endif // MDS_TETRAMESHEDGESPLITTING_H 00084