18#ifndef itkQuadEdgeMeshDecimationCriteria_h
19#define itkQuadEdgeMeshDecimationCriteria_h
31template <
typename TMesh,
33 typename TMeasure = double,
34 typename TPriorityQueueWrapper =
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>>>
139 const ElementType & itkNotUsed(iElement),
140 const MeasureType & itkNotUsed(iValue))
const override
142 return (iMesh->GetNumberOfPoints() <= this->m_NumberOfElements);
155template <
typename TMesh,
157 typename TMeasure = double,
158 typename TPriorityQueueWrapper =
186 const ElementType & itkNotUsed(iElement),
187 const MeasureType & itkNotUsed(iValue))
const override
189 return (iMesh->GetNumberOfFaces() <= this->m_NumberOfElements);
202template <
typename TMesh,
204 typename TMeasure = double,
205 typename TPriorityQueueWrapper =
233 const ElementType & itkNotUsed(iElement),
234 const MeasureType & iValue)
const override
236 return (iValue <= this->m_MeasureBound);
251template <
typename TMesh,
253 typename TMeasure = double,
254 typename TPriorityQueueWrapper =
281 is_satisfied(MeshType *,
const ElementType &,
const MeasureType & iValue)
const override
283 return (iValue >= this->m_MeasureBound);
Control indentation during Print() invocation.
SmartPointer< const Self > ConstPointer
~MaxMeasureBoundCriterion() override=default
MaxMeasureBoundCriterion()
QuadEdgeMeshDecimationCriterion< OutputMeshType, IdentifierType, double, MinPriorityQueueElementWrapper< typename OutputMeshType::QEType *, std::pair< bool, double > > > Superclass
SmartPointer< Self > Pointer
MaxMeasureBoundCriterion Self
typename MeshType::CellsContainerConstIterator CellsContainerConstIterator
bool is_satisfied(MeshType *iMesh, const ElementType &iElement, const MeasureType &iValue) const override
MinMeasureBoundCriterion Self
MinMeasureBoundCriterion()=default
typename MeshType::CellsContainerConstIterator CellsContainerConstIterator
SmartPointer< Self > Pointer
SmartPointer< const Self > ConstPointer
~MinMeasureBoundCriterion() override=default
bool is_satisfied(MeshType *, const ElementType &, const MeasureType &iValue) const override
QuadEdgeMeshDecimationCriterion< TMesh, TElement, TMeasure, TPriorityQueueWrapper > Superclass
NumberOfFacesCriterion Self
SmartPointer< const Self > ConstPointer
~NumberOfFacesCriterion() override=default
bool is_satisfied(MeshType *iMesh, const ElementType &iElement, const MeasureType &iValue) const override
NumberOfFacesCriterion()=default
typename MeshType::CellsContainerConstIterator CellsContainerConstIterator
QuadEdgeMeshDecimationCriterion< TMesh, TElement, TMeasure, TPriorityQueueWrapper > Superclass
SmartPointer< Self > Pointer
NumberOfPointsCriterion()=default
NumberOfPointsCriterion Self
SmartPointer< const Self > ConstPointer
bool is_satisfied(MeshType *iMesh, const ElementType &iElement, const MeasureType &iValue) const override
QuadEdgeMeshDecimationCriterion< TMesh, TElement, TMeasure, TPriorityQueueWrapper > Superclass
SmartPointer< Self > Pointer
~NumberOfPointsCriterion() override=default
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
SmartPointer< Self > Pointer
QuadEdgeMeshDecimationCriterion Self
void SetMeasureBound(const MeasureType &bound)
SmartPointer< const Self > ConstPointer
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
Implements transparent reference counting.
unsigned long IdentifierType
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
SizeValueType IdentifierType
unsigned long SizeValueType