18#ifndef itkQuadEdgeMesh_h
19#define itkQuadEdgeMesh_h
50template <
typename TPixel,
51 unsigned int VDimension,
52 typename TTraits = QuadEdgeMeshTraits<TPixel, VDimension, bool, bool>>
69 static constexpr unsigned int PointDimension = Traits::PointDimension;
70 static constexpr unsigned int MaxTopologicalDimension = Traits::MaxTopologicalDimension;
73 using typename Superclass::CellPixelType;
74 using typename Superclass::CoordRepType;
75 using typename Superclass::PointIdentifier;
76 using typename Superclass::PointHashType;
78 using typename Superclass::CellTraits;
84 using typename Superclass::PointsContainer;
85 using typename Superclass::PointsContainerPointer;
89 using typename Superclass::PointDataContainer;
90 using typename Superclass::PointDataContainerPointer;
91 using typename Superclass::PointDataContainerIterator;
92 using typename Superclass::PointsContainerConstIterator;
93 using typename Superclass::PointsContainerIterator;
96 using typename Superclass::CellIdentifier;
97 using typename Superclass::CellType;
98 using typename Superclass::CellAutoPointer;
99 using typename Superclass::CellFeatureIdentifier;
100 using typename Superclass::CellFeatureCount;
101 using typename Superclass::CellMultiVisitorType;
102 using typename Superclass::CellsContainer;
103 using typename Superclass::CellsContainerPointer;
105 using typename Superclass::CellsContainerConstIterator;
106 using typename Superclass::CellsContainerIterator;
108 using typename Superclass::CellLinksContainer;
109 using typename Superclass::CellLinksContainerPointer;
110 using typename Superclass::CellLinksContainerIterator;
113 using typename Superclass::CellDataContainer;
114 using typename Superclass::CellDataContainerPointer;
115 using typename Superclass::CellDataContainerIterator;
118 using typename Superclass::PointCellLinksContainer;
119 using typename Superclass::PointCellLinksContainerIterator;
122 using typename Superclass::BoundaryAssignmentsContainer;
123 using typename Superclass::BoundaryAssignmentsContainerPointer;
124 using typename Superclass::BoundaryAssignmentsContainerVector;
127 using typename Superclass::BoundingBoxPointer;
128 using typename Superclass::BoundingBoxType;
130 using typename Superclass::InterpolationWeightType;
137 using QEType =
typename Traits::QEPrimal;
155#ifndef ITK_FUTURE_LEGACY_REMOVE
156 using EdgeListPointerType [[deprecated(
"Please just use `EdgeListType *` instead!")]] =
EdgeListType *;
172#if !defined(ITK_WRAPPING_PARSER)
195 return m_EdgeCellsContainer;
197 const CellsContainer *
200 return m_EdgeCellsContainer;
205 m_EdgeCellsContainer = edgeCells;
210 m_EdgeCellsContainer->InsertElement(cellId, cellPointer.ReleaseOwnership());
234#if !defined(ITK_WRAPPING_PARSER)
241 BoundaryAssignmentsContainerPointer
248 const BoundaryAssignmentsContainerPointer
298 std::set<CellIdentifier> * itkNotUsed(cellSet))
390 return (Superclass::GetPoint(pid, pt));
430#ifdef ITK_USE_CONCEPT_CHECKING
439 while (!this->m_FreePointIndexes.empty())
441 this->m_FreePointIndexes.pop();
443 while (!this->m_FreeCellIndexes.empty())
445 this->m_FreeCellIndexes.pop();
452 return (m_NumberOfFaces);
457 return (m_NumberOfEdges);
482#ifndef ITK_MANUAL_INSTANTIATION
483# include "itkQuadEdgeMesh.hxx"
Base class for all data objects in ITK.
A wrapper of the STL "map" container.
Implements the N-dimensional mesh structure.
typename MeshTraits::CellFeatureIdentifier CellFeatureIdentifier
typename CellsContainer::Pointer CellsContainerPointer
typename MeshTraits::CellIdentifier CellIdentifier
typename MeshTraits::CellsContainer CellsContainer
typename CellType::CellAutoPointer CellAutoPointer
Base class for most ITK classes.
typename PointType::CoordRepType CoordRepType
typename MeshTraits::PointIdentifier PointIdentifier
typename MeshTraits::PointType PointType
Class that connects the QuadEdgeMesh with the Mesh.
Mesh class for 2D manifolds embedded in ND space.
void BuildCellLinks() const
bool RemoveBoundaryAssignment(int, CellIdentifier, CellFeatureIdentifier)
typename CellTraits::PointIdInternalIterator PointIdInternalIterator
CellIdentifier GetCellBoundaryFeatureNeighbors(int, CellIdentifier, CellFeatureIdentifier, std::set< CellIdentifier > *)
void SetCell(CellIdentifier cId, CellAutoPointer &cell)
CellIdentifier GetNumberOfEdges() const
virtual QEPrimal * FindEdge(const PointIdentifier &pid0) const
virtual QEPrimal * GetEdge(const CellIdentifier &eid) const
virtual void AddFace(QEPrimal *entry)
CellIdentifier ComputeNumberOfFaces() const
virtual void DeleteEdge(const PointIdentifier &orgPid, const PointIdentifier &destPid)
virtual QEPrimal * FindEdge(const PointIdentifier &pid0, const PointIdentifier &pid1) const
bool GetCellBoundaryFeature(int, CellIdentifier, CellFeatureIdentifier, CellAutoPointer &) const
const CellsContainer * GetEdgeCells() const
virtual QEPrimal * AddFaceTriangle(const PointIdentifier &aPid, const PointIdentifier &bPid, const PointIdentifier &cPid)
virtual VectorType GetVector(const PointIdentifier &pid) const
virtual void DeletePoint(const PointIdentifier &pid)
BoundaryAssignmentsContainerPointer GetBoundaryAssignments(int)
virtual void LightWeightDeleteEdge(EdgeCellType *edgeCell)
typename Traits::VertexRefType VertexRefType
virtual void DeleteFace(FaceRefType faceToDelete)
typename Traits::QEPrimal QEType
std::vector< PointIdentifier > PointIdList
virtual QEPrimal * AddFaceWithSecurePointList(const PointIdList &points, bool CheckEdges)
typename Traits::PrimalDataType PrimalDataType
CellsContainer * GetEdgeCells()
virtual CellIdentifier FindFirstUnusedCellIndex()
CellIdentifier GetNumberOfFaces() const
const BoundaryAssignmentsContainerPointer GetBoundaryAssignments(int) const
void SetEdgeCell(CellIdentifier cellId, CellAutoPointer &cellPointer)
virtual void PushOnContainer(EdgeCellType *newEdge)
typename CellTraits::PointIdIterator PointIdIterator
virtual QEPrimal * AddFace(const PointIdList &points)
virtual PointIdentifier AddPoint(const PointType &p)
typename Traits::DualDataType DualDataType
bool GetBoundaryAssignment(int, CellIdentifier, CellFeatureIdentifier, CellIdentifier *)
virtual PointIdentifier FindFirstUnusedPointIndex()
void Graft(const DataObject *data) override
CoordRepType ComputeEdgeLength(QEPrimal *e)
Compute the euclidean length of argument edge.
std::list< QEPrimal * > EdgeListType
virtual PointType GetPoint(const PointIdentifier &pid) const
virtual void LightWeightDeleteEdge(QEPrimal *e)
CellIdentifier ComputeNumberOfEdges() const
virtual QEPrimal * AddFaceWithSecurePointList(const PointIdList &points)
PointIdentifier ComputeNumberOfPoints() const
std::queue< CellIdentifier > FreeCellIndexesType
bool GetAssignedCellBoundaryIfOneExists(int, CellIdentifier, CellFeatureIdentifier, CellAutoPointer &) const
std::queue< PointIdentifier > FreePointIndexesType
PointIdentifier Splice(QEPrimal *a, QEPrimal *b)
static const PointIdentifier m_NoPoint
typename Traits::QEPrimal QEPrimal
void SetBoundaryAssignment(int, CellIdentifier, CellFeatureIdentifier, CellIdentifier)
virtual void DeleteEdge(QEPrimal *e)
void Initialize() override
typename Traits::VectorType VectorType
void SetBoundaryAssignments(int, BoundaryAssignmentsContainer *)
virtual void ClearCellsContainer()
virtual QEPrimal * AddEdge(const PointIdentifier &orgPid, const PointIdentifier &destPid)
static const CellIdentifier m_NoFace
void ClearFreePointAndCellIndexesLists()
typename Traits::FaceRefType FaceRefType
void SetEdgeCells(CellsContainer *edgeCells)
void CopyInformation(const DataObject *) override
virtual QEPrimal * AddEdgeWithSecurePointList(const PointIdentifier &orgPid, const PointIdentifier &destPid)
typename Traits::QEDual QEDual
CellIdentifier GetCellNeighbors(CellIdentifier, std::set< CellIdentifier > *)
virtual QEPrimal * GetEdge() const
virtual EdgeCellType * FindEdgeCell(const PointIdentifier &pid0, const PointIdentifier &pid1) const
bool RequestedRegionIsOutsideOfTheBufferedRegion() override
CoordRepType[Self::PointDimension] CoordRepArrayType
itkQEDefineFrontIteratorMethodsMacro(Self)
bool GetPoint(PointIdentifier pid, PointType *pt) const
MeshClassCellsAllocationMethod
ImageBaseType::RegionType RegionType
ImageBaseType::PointType PointType
ImageBaseType::SpacingType VectorType
static constexpr double e
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....