00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __mitkQEMSimplification_h
00012 #define __mitkQEMSimplification_h
00013
00014 #include "mitkTriangleMeshSimplification.h"
00015
00031 class MITK_COMMON_API mitkQEMSimplification : public mitkTriangleMeshSimplification
00032 {
00033 public:
00034 MITK_TYPE(mitkQEMSimplification, mitkTriangleMeshSimplification)
00035
00036 virtual void PrintSelf(ostream &os);
00037
00038 mitkQEMSimplification();
00039
00045 void SetMeshingPenalty(double mp) { m_MeshingPenalty = mp; }
00046
00051 double GetMeshingPenalty() { return m_MeshingPenalty; }
00052
00058 void SetVertexDegreeLimit(size_type vdl) { m_VertexDegreeLimit = vdl; }
00059
00064 size_type GetVertexDegreeLimit() { return m_VertexDegreeLimit; }
00065
00071 void SetCompactnessRatio(double cr) { m_CompactnessRatio = cr; }
00072
00077 double GetCompactnessRatio() { return m_CompactnessRatio; }
00078
00084 void SetLocalValidityThreshold(double lvt) { m_LocalValidityThreshold = lvt; }
00085
00090 double GetLocalValidityThreshold() { return m_LocalValidityThreshold; }
00091
00092 protected:
00093 virtual ~mitkQEMSimplification();
00094
00095 virtual bool _simplificationProcess(mitkHETriangleMesh *mesh);
00096
00097 double m_MeshingPenalty;
00098 double m_CompactnessRatio;
00099 double m_LocalValidityThreshold;
00100 size_type m_VertexDegreeLimit;
00101
00102 private:
00103 mitkQEMSimplification(const mitkQEMSimplification&);
00104 void operator = (const mitkQEMSimplification&);
00105
00106 };
00107
00108 #endif
00109