18#ifndef itkQuadEdgeMeshPolygonCell_h
19#define itkQuadEdgeMeshPolygonCell_h
38template <
typename TCellInterface>
54 using typename Superclass::PixelType;
55 using CellType =
typename Superclass::CellType;
56 using typename Superclass::CellAutoPointer;
57 using typename Superclass::CellConstAutoPointer;
58 using typename Superclass::CellRawPointer;
59 using typename Superclass::CellConstRawPointer;
61 using typename Superclass::CoordRepType;
62 using typename Superclass::InterpolationWeightType;
63 using typename Superclass::PointIdentifier;
64 using typename Superclass::CellIdentifier;
65 using typename Superclass::CellFeatureIdentifier;
68 using typename Superclass::PointsContainer;
69 using typename Superclass::UsingCellsContainer;
70 using typename Superclass::ParametricCoordArrayType;
71 using typename Superclass::ShapeFunctionsArrayType;
72 static constexpr unsigned int PointDimension = Superclass::PointDimension;
73 static constexpr unsigned int CellDimension = 2;
93 using QEDual =
typename QuadEdgeType::DualType;
122 return (m_EdgeRingEntry);
127 m_EdgeRingEntry = entry;
155 return (Self::CellDimension);
171 const PointIdentifier numberOfPoints = this->GetNumberOfPoints();
172 auto * newPolygonCell =
new Self(numberOfPoints);
175 cell.TakeOwnership(newPolygonCell);
178 PointIdentifier i = 0;
185 newPolygonCell->SetPointId(i, it.Value()->GetOrigin());
202 virtual PointIdentifier
210 if (m_PointIds.empty())
216 return &m_PointIds.front();
224 if (m_PointIds.empty())
230 return &m_PointIds.back() + 1;
239 if (m_PointIds.empty())
245 return &m_PointIds.front();
253 if (m_PointIds.empty())
259 return &m_PointIds.back() + 1;
300 m_PointIds.push_back(it.Value()->GetOrigin());
308 CellIdentifier m_Ident{};
322#ifndef ITK_MANUAL_INSTANTIATION
323# include "itkQuadEdgeMeshPolygonCell.hxx"
Implements an Automatic Pointer to an object.
Class that connects the QuadEdgeMesh with the Mesh.
QuadEdgeMeshPolygonCell(PointIdentifier nPoints=0)
void MakePointIds() const
PointIdConstIterator PointIdsEnd() const override
void SetPointId(int localId, PointIdentifier pId) override
CellIdentifier GetIdent()
void MakeCopy(CellAutoPointer &cell) const override
typename CellTraits::QuadEdgeType QuadEdgeType
virtual PointIdentifier GetPointId(int localId) const
void SetEdgeRingEntry(QuadEdgeType *entry)
typename QuadEdgeType::DualType QEDual
virtual PointIdInternalConstIterator InternalPointIdsBegin() const
QuadEdgeType * GetEdgeRingEntry() const
typename CellTraits::PointIdInternalConstIterator PointIdInternalConstIterator
typename CellTraits::PointIdInternalIterator PointIdInternalIterator
void Accept(CellIdentifier cellId, MultiVisitor *mv) override
typename CellType::MultiVisitor MultiVisitor
std::vector< PointIdentifier > PointIDListType
typename Superclass::CellType CellType
virtual PointIdInternalConstIterator InternalPointIdsEnd() const
bool GetBoundaryFeature(int dimension, CellFeatureIdentifier cellId, CellAutoPointer &cell) override
PointIdConstIterator PointIdsBegin() const override
QuadEdgeMeshPolygonCell(QuadEdgeType *e)
virtual PointIdInternalIterator InternalPointIdsEnd()
typename QuadEdgeType::DualOriginRefType FaceRefType
typename Superclass::CellTraits CellTraits
typename QuadEdgeType::PrimalDataType PrimalDataType
typename QuadEdgeType::DualDataType DualDataType
void SetIdent(CellIdentifier cid)
PointIdIterator PointIdsEnd() override
typename CellTraits::PointIdIterator PointIdIterator
typename CellTraits::PointIdConstIterator PointIdConstIterator
CellFeatureCount GetNumberOfBoundaryFeatures(int dimension) const override
void SetPointIds(PointIdConstIterator first, PointIdConstIterator last) override
PointIdIterator PointIdsBegin() override
typename QuadEdgeType::OriginRefType VertexRefType
unsigned int GetNumberOfPoints() const override
virtual PointIdInternalConstIterator InternalGetPointIds() const
CellGeometryEnum GetType() const override
virtual void InternalSetPointIds(PointIdInternalConstIterator first)
unsigned int GetDimension() const override
virtual void InternalSetPointIds(PointIdInternalConstIterator first, PointIdInternalConstIterator last)
std::vector< EdgeCellType * > EdgeCellListType
virtual PointIdInternalIterator InternalPointIdsBegin()
void SetPointIds(PointIdConstIterator first) override
typename Superclass::CellFeatureIdentifier CellFeatureCount
TCellInterface Superclass
~QuadEdgeMeshPolygonCell() override
static constexpr CellGeometryEnum GetTopologyId()
ImageBaseType::PointType PointType
static constexpr double e
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....