00001
00015 #ifndef MDS_TETRAVERTEXDETECTOR_H
00016 #define MDS_TETRAVERTEXDETECTOR_H
00017
00018 #include "mdsTetraBase.h"
00019
00020
00021 #include <MDSTk/Base/mdsAssert.h>
00022 #include <MDSTk/Base/mdsIdentifier.h>
00023 #include <MDSTk/Math/mdsBase.h>
00024 #include <MDSTk/Image/mdsVolumeFunctions.h>
00025
00026
00027 #include <VectorEntity/mcvertices.h>
00028
00029
00030 #include <sstream>
00031
00032
00033 namespace mds
00034 {
00035 namespace seg
00036 {
00037
00038
00039
00040
00041
00042
00044 MDS_DECLARE_ID(CELL_MAX);
00045
00046
00047
00052 template <typename Id>
00053 class CTetraVertexDetector : public CTetraBase
00054 {
00055 public:
00058 bool operator()(tVolume *pVolume,
00059 vctl::MCVerticeS *pVertices,
00060 tScale *pScale
00061 );
00062 };
00063
00064
00065
00071 template <>
00072 class CTetraVertexDetector<CELL_MAX> : public CTetraBase
00073 {
00074 public:
00081 CTetraVertexDetector(double dThreshold,
00082 mds::tSize CellSize,
00083 mds::tSize CellMargin
00084 )
00085 : m_dThreshold(dThreshold)
00086 , m_CellSize(CellSize)
00087 , m_CellMargin(CellMargin)
00088 {
00089 MDS_ASSERT(m_CellSize > 0 && m_CellMargin > 0);
00090 }
00091
00094 bool operator()(tVolume *pVolume,
00095 vctl::MCVerticeS *pVertices,
00096 tScale *pScale
00097 );
00098
00099 protected:
00101 double m_dThreshold;
00102
00104 mds::tSize m_CellSize, m_CellMargin;
00105 };
00106
00107
00108
00109
00110
00111
00112
00113
00114 #include "mdsTetraVertexDetector.hxx"
00115
00116
00117 }
00118 }
00119
00120 #endif // MDS_TETRAVERTEXDETECTOR_H
00121