18#ifndef itkQuadEdgeMeshDecimationCriteria_h
19#define itkQuadEdgeMeshDecimationCriteria_h
31template <
typename TMesh,
33 typename TMeasure = double,
34 typename TPriorityQueueWrapper =
35 MinPriorityQueueElementWrapper<typename TMesh::QEType *, std::pair<bool, TMeasure>>>
53 using PriorityType =
typename PriorityQueueWrapperType::ElementPriorityType;
69 itkBooleanMacro(TopologicalChange);
70 itkGetConstMacro(TopologicalChange,
bool);
71 itkSetMacro(TopologicalChange,
bool);
90 itkPrintSelfBooleanMacro(TopologicalChange);
91 itkPrintSelfBooleanMacro(SizeCriterion);
109template <
typename TMesh,
111 typename TMeasure = double,
112 typename TPriorityQueueWrapper =
113 MinPriorityQueueElementWrapper<typename TMesh::QEType *, std::pair<bool, TMeasure>>>
140 return (iMesh->GetNumberOfPoints() <= this->m_NumberOfElements);
153template <
typename TMesh,
155 typename TMeasure = double,
156 typename TPriorityQueueWrapper =
185 const MeasureType & itkNotUsed(iValue))
const override
187 return (iMesh->GetNumberOfFaces() <= this->m_NumberOfElements);
200template <
typename TMesh,
202 typename TMeasure = double,
203 typename TPriorityQueueWrapper =
234 return (iValue <= this->m_MeasureBound);
249template <
typename TMesh,
251 typename TMeasure = double,
252 typename TPriorityQueueWrapper =
281 return (iValue >= this->m_MeasureBound);
Control indentation during Print() invocation.
Light weight base class for most itk classes.
~MaxMeasureBoundCriterion() override=default
MaxMeasureBoundCriterion()
bool is_satisfied(MeshType *, const ElementType &, const MeasureType &iValue) const override
typename MeshType::CellsContainerConstIterator CellsContainerConstIterator
MinMeasureBoundCriterion()=default
~MinMeasureBoundCriterion()=default
typename MeshType::CellsContainerConstIterator CellsContainerConstIterator
bool is_satisfied(MeshType *, const ElementType &, const MeasureType &iValue) const
bool is_satisfied(MeshType *iMesh, const ElementType &, const MeasureType &) const override
~NumberOfFacesCriterion() override=default
NumberOfFacesCriterion()=default
typename MeshType::CellsContainerConstIterator CellsContainerConstIterator
NumberOfPointsCriterion()=default
~NumberOfPointsCriterion()=default
bool is_satisfied(MeshType *iMesh, const ElementType &, const MeasureType &) const
Base class for most ITK classes.
void PrintSelf(std::ostream &os, Indent indent) const override
QuadEdgeMeshDecimationCriterion()
void PrintSelf(std::ostream &os, Indent indent) const override
~QuadEdgeMeshDecimationCriterion() override=default
SizeValueType m_NumberOfElements
void SetMeasureBound(const MeasureType &bound)
void SetNumberOfElements(const SizeValueType &numberOfElements)
virtual bool is_satisfied(MeshType *iMesh, const ElementType &iElement, const MeasureType &iValue) const =0
MeasureType m_MeasureBound
typename PriorityQueueWrapperType::ElementPriorityType PriorityType
TPriorityQueueWrapper PriorityQueueWrapperType
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
SizeValueType IdentifierType
unsigned long SizeValueType