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;
171#if !defined(ITK_WRAPPING_PARSER)
194 return m_EdgeCellsContainer;
196 const CellsContainer *
199 return m_EdgeCellsContainer;
204 m_EdgeCellsContainer = edgeCells;
209 m_EdgeCellsContainer->InsertElement(cellId, cellPointer.ReleaseOwnership());
236#if !defined(ITK_WRAPPING_PARSER)
247 BoundaryAssignmentsContainerPointer
256 const BoundaryAssignmentsContainerPointer
326 std::set<CellIdentifier> * cellSet)
427 return (Superclass::GetPoint(pid, pt));
467#ifdef ITK_USE_CONCEPT_CHECKING
476 while (!this->m_FreePointIndexes.empty())
478 this->m_FreePointIndexes.pop();
480 while (!this->m_FreeCellIndexes.empty())
482 this->m_FreeCellIndexes.pop();
489 return (m_NumberOfFaces);
494 return (m_NumberOfEdges);
519#ifndef ITK_MANUAL_INSTANTIATION
520# include "itkQuadEdgeMesh.hxx"
Base class for all data objects in ITK.
A wrapper of the STL "map" container.
MeshClassCellsAllocationMethod
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 MeshTraits::PointIdentifier PointIdentifier
typename MeshTraits::CoordRepType CoordRepType
typename MeshTraits::PointType PointType
Class that connects the QuadEdgeMesh with the Mesh.
Mesh class for 2D manifolds embedded in ND space.
void BuildCellLinks() const
typename CellTraits::PointIdInternalIterator PointIdInternalIterator
void SetBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellIdentifier boundaryId)
void SetCell(CellIdentifier cId, CellAutoPointer &cell)
CellIdentifier GetNumberOfEdges() const
virtual QEPrimal * FindEdge(const PointIdentifier &pid0) const
const BoundaryAssignmentsContainerPointer GetBoundaryAssignments(int dimension) const
virtual QEPrimal * GetEdge(const CellIdentifier &eid) const
virtual void AddFace(QEPrimal *entry)
bool GetAssignedCellBoundaryIfOneExists(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellAutoPointer &cellAP) const
CellIdentifier ComputeNumberOfFaces() const
virtual void DeleteEdge(const PointIdentifier &orgPid, const PointIdentifier &destPid)
virtual QEPrimal * FindEdge(const PointIdentifier &pid0, const PointIdentifier &pid1) 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)
virtual void LightWeightDeleteEdge(EdgeCellType *edgeCell)
typename Traits::VertexRefType VertexRefType
void SetBoundaryAssignments(int dimension, BoundaryAssignmentsContainer *container)
virtual void DeleteFace(FaceRefType faceToDelete)
bool RemoveBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId)
typename Traits::QEPrimal QEType
bool GetCellBoundaryFeature(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellAutoPointer &cellAP) const
std::vector< PointIdentifier > PointIdList
virtual QEPrimal * AddFaceWithSecurePointList(const PointIdList &points, bool CheckEdges)
typename Traits::PrimalDataType PrimalDataType
CellsContainer * GetEdgeCells()
virtual CellIdentifier FindFirstUnusedCellIndex()
CellIdentifier GetNumberOfFaces() const
CellIdentifier GetCellBoundaryFeatureNeighbors(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, std::set< CellIdentifier > *cellSet)
void SetEdgeCell(CellIdentifier cellId, CellAutoPointer &cellPointer)
virtual void PushOnContainer(EdgeCellType *newEdge)
typename CellTraits::PointIdIterator PointIdIterator
virtual QEPrimal * AddFace(const PointIdList &points)
EdgeListType * EdgeListPointerType
virtual PointIdentifier AddPoint(const PointType &p)
BoundaryAssignmentsContainerPointer GetBoundaryAssignments(int dimension)
typename Traits::DualDataType DualDataType
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
std::queue< PointIdentifier > FreePointIndexesType
PointIdentifier Splice(QEPrimal *a, QEPrimal *b)
static const PointIdentifier m_NoPoint
typename Traits::QEPrimal QEPrimal
virtual void DeleteEdge(QEPrimal *e)
void Initialize() override
typename Traits::VectorType VectorType
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)
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
void CopyInformation(const DataObject *data) override
bool GetBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellIdentifier *boundaryId) const
bool RequestedRegionIsOutsideOfTheBufferedRegion() override
CoordRepType[Self::PointDimension] CoordRepArrayType
itkQEDefineFrontIteratorMethodsMacro(Self)
bool GetPoint(PointIdentifier pid, PointType *pt) const
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....