18 #ifndef itkQuadrilateralCell_h
19 #define itkQuadrilateralCell_h
38 template<
typename TCellInterface >
61 static constexpr
unsigned int NumberOfPoints = 4;
62 static constexpr
unsigned int NumberOfVertices = 4;
63 static constexpr
unsigned int NumberOfEdges = 4;
64 static constexpr
unsigned int CellDimension = 2;
65 static constexpr
unsigned int NumberOfDerivatives = 8;
69 {
return Superclass::QUADRILATERAL_CELL; }
70 void MakeCopy(CellAutoPointer &)
const override;
73 unsigned int GetDimension()
const override;
75 unsigned int GetNumberOfPoints()
const override;
77 CellFeatureCount GetNumberOfBoundaryFeatures(
int dimension)
const override;
79 bool GetBoundaryFeature(
int dimension, CellFeatureIdentifier, CellAutoPointer &)
override;
80 void SetPointIds(PointIdConstIterator first)
override;
82 void SetPointIds(PointIdConstIterator first,
83 PointIdConstIterator last)
override;
85 void SetPointId(
int localId, PointIdentifier)
override;
86 PointIdIterator PointIdsBegin()
override;
88 PointIdConstIterator PointIdsBegin()
const override;
90 PointIdIterator PointIdsEnd()
override;
92 PointIdConstIterator PointIdsEnd()
const override;
95 virtual CellFeatureCount GetNumberOfVertices()
const;
97 virtual CellFeatureCount GetNumberOfEdges()
const;
99 virtual bool GetVertex(CellFeatureIdentifier, VertexAutoPointer &);
100 virtual bool GetEdge(CellFeatureIdentifier, EdgeAutoPointer &);
103 bool EvaluatePosition(CoordRepType * position,
104 PointsContainer * points,
105 CoordRepType * closestPoint,
106 CoordRepType[CellDimension],
108 InterpolationWeightType * weight)
override;
116 for ( PointIdentifier i = 0; i < Self::NumberOfPoints; i++ )
123 #if defined(__GNUC__) && (__GNUC__ > 5)
131 PointIdentifier m_PointIds[NumberOfPoints];
133 void InterpolationDerivs(
const CoordRepType pointCoords[CellDimension], CoordRepType derivs[NumberOfDerivatives]);
134 void InterpolationFunctions(
const CoordRepType pointCoords[CellDimension], InterpolationWeightType weights[NumberOfPoints]);
135 void EvaluateLocation(
int &itkNotUsed(subId),
const PointsContainer * points,
const CoordRepType pointCoords[PointDimension],
136 CoordRepType x[PointDimension], InterpolationWeightType * weights);
140 #ifndef ITK_MANUAL_INSTANTIATION
141 #include "itkQuadrilateralCell.hxx"
Represents a line segment for a Mesh.
Define numeric traits for std::vector.
Holds data defining the topological connections of the vertices and edges of a QuadrilateralCell.
An abstract interface for cells.
#define itkCellCommonTypedefs(celltype)
typename EdgeType::SelfAutoPointer EdgeAutoPointer
~QuadrilateralCell() override
Represents a single vertex for a Mesh.
#define itkCellVisitMacro(TopologyId)
Represents a quadrilateral for a Mesh.
#define itkCellInheritedTypedefs(superclassArg)
CellGeometry GetType() const override
typename VertexType::SelfAutoPointer VertexAutoPointer