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);
88 itkPrintSelfBooleanMacro(TopologicalChange);
89 itkPrintSelfBooleanMacro(SizeCriterion);
107template <
typename TMesh,
109 typename TMeasure = double,
110 typename TPriorityQueueWrapper =
111 MinPriorityQueueElementWrapper<typename TMesh::QEType *, std::pair<bool, TMeasure>>>
137 const ElementType & itkNotUsed(iElement),
138 const MeasureType & itkNotUsed(iValue))
const override
140 return (iMesh->GetNumberOfPoints() <= this->m_NumberOfElements);
153template <
typename TMesh,
155 typename TMeasure = double,
156 typename TPriorityQueueWrapper =
184 const ElementType & itkNotUsed(iElement),
185 const MeasureType & itkNotUsed(iValue))
const override
187 return (iMesh->GetNumberOfFaces() <= this->m_NumberOfElements);
200template <
typename TMesh,
202 typename TMeasure = double,
203 typename TPriorityQueueWrapper =
231 const ElementType & itkNotUsed(iElement),
232 const MeasureType & iValue)
const override
234 return (iValue <= this->m_MeasureBound);
249template <
typename TMesh,
251 typename TMeasure = double,
252 typename TPriorityQueueWrapper =
279 is_satisfied(MeshType *,
const ElementType &,
const MeasureType & iValue)
const override
281 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