18#ifndef itkQuadricDecimationQuadEdgeMeshFilter_h
19#define itkQuadricDecimationQuadEdgeMeshFilter_h
31template <
typename TInput,
typename TOutput,
typename TCriterion>
102 id[0] = iEdge->GetOrigin();
103 id[1] = iEdge->GetDestination();
104 id[2] = iEdge->GetOnext()->GetDestination();
108 for (
int i = 0; i < 3; ++i)
110 p[i] = outputMesh->GetPoint(
id[i]);
132 mid.SetToMidPoint(org, dest);
160#ifndef ITK_MANUAL_INSTANTIATION
161# include "itkQuadricDecimationQuadEdgeMeshFilter.hxx"
OutputMeshType * m_OutputMesh
typename PriorityQueueType::Pointer PriorityQueuePointer
typename OperatorType::Pointer OperatorPointer
PriorityQueueContainer< PriorityQueueItemType *, ElementWrapperPointerInterface< PriorityQueueItemType * >, PriorityType > PriorityQueueType
std::map< OutputQEType *, PriorityQueueItemType * > QueueMapType
QuadEdgeMeshEulerOperatorJoinVertexFunction< OutputMeshType, OutputQEType > OperatorType
typename QueueMapType::iterator QueueMapIterator
typename CriterionType::PriorityType PriorityType
typename CriterionType::PriorityQueueWrapperType PriorityQueueItemType
EdgeDecimationQuadEdgeMeshFilter()
TODO explicit specification for VDimension=3!!!
CoordType ComputeError(const PointType &iP) const
TODO this method should be really optimized!!!
PointType ComputeOptimalLocation(const PointType &iP)
void AddTriangle(const PointType &iP1, const PointType &iP2, const PointType &iP3, const CoordType &iWeight=static_cast< CoordType >(1.))
void QuadricAtOrigin(OutputQEType *iEdge, QuadricElementType &oQ, OutputMeshType *outputMesh)
Compute the quadric error at the origin of the edge.
typename OutputMeshType::Pointer OutputMeshPointer
QuadricDecimationQuadEdgeMeshFilter Self
typename CriterionType::MeasureType MeasureType
typename OutputMeshType::QEType OutputQEType
QuadEdgeMeshDecimationQuadricElementHelper< OutputPointType > QuadricElementType
QuadricDecimationQuadEdgeMeshFilter()=default
Constructor.
typename OutputMeshType::PointsContainerIterator OutputPointsContainerIterator
void Initialize() override
Compute Quadric error for all edges.
SmartPointer< Self > Pointer
SmartPointer< const Self > ConstPointer
~QuadricDecimationQuadEdgeMeshFilter() override=default
Destructor.
void DeletePoint(const OutputPointIdentifier &iIdToBeDeleted, const OutputPointIdentifier &iRemaining) override
Delete point.
typename OutputMeshType::CellsContainerIterator OutputCellsContainerIterator
typename OutputMeshType::PointsContainerPointer OutputPointsContainerPointer
std::map< OutputPointIdentifier, QuadricElementType > QuadricElementMapType
typename OutputMeshType::EdgeCellType OutputEdgeCellType
static constexpr unsigned int OutputPointDimension
typename OutputMeshType::PointIdentifier OutputPointIdentifier
typename QuadricElementMapType::iterator QuadricElementMapIterator
typename InputMeshType::Pointer InputMeshPointer
typename OutputPointType::CoordinateType OutputCoordType
OutputPointType Relocate(OutputQEType *iEdge) override
Compute the optimal position for a given edge iEdge.
MeasureType MeasureEdge(OutputQEType *iEdge) override
Compute the measure value for iEdge.
EdgeDecimationQuadEdgeMeshFilter< TInput, TOutput, TCriterion > Superclass
typename OutputMeshType::PointType OutputPointType
QuadricElementMapType m_Quadric
Implements transparent reference counting.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....