18 #ifndef itkQuadrilateralCell_h
19 #define itkQuadrilateralCell_h
41 template <
typename TCellInterface>
43 :
public TCellInterface
66 static constexpr
unsigned int NumberOfPoints = 4;
67 static constexpr
unsigned int NumberOfVertices = 4;
68 static constexpr
unsigned int NumberOfEdges = 4;
69 static constexpr
unsigned int CellDimension = 2;
70 static constexpr
unsigned int NumberOfDerivatives = 8;
79 MakeCopy(CellAutoPointer &)
const override;
83 GetDimension()
const override;
86 GetNumberOfPoints()
const override;
89 GetNumberOfBoundaryFeatures(
int dimension)
const override;
92 GetBoundaryFeature(
int dimension, CellFeatureIdentifier, CellAutoPointer &)
override;
94 SetPointIds(PointIdConstIterator first)
override;
97 SetPointIds(PointIdConstIterator first, PointIdConstIterator last)
override;
100 SetPointId(
int localId, PointIdentifier)
override;
102 PointIdsBegin()
override;
105 PointIdsBegin()
const override;
108 PointIdsEnd()
override;
111 PointIdsEnd()
const override;
114 virtual CellFeatureCount
115 GetNumberOfVertices()
const;
117 virtual CellFeatureCount
118 GetNumberOfEdges()
const;
121 GetVertex(CellFeatureIdentifier, VertexAutoPointer &);
123 GetEdge(CellFeatureIdentifier, EdgeAutoPointer &);
127 EvaluatePosition(CoordRepType * x,
128 PointsContainer * points,
129 CoordRepType * closestPoint,
130 CoordRepType[CellDimension],
132 InterpolationWeightType * weight)
override;
140 #if defined(__GNUC__)
148 ~QuadrilateralCell()
override =
default;
153 std::array<PointIdentifier, NumberOfPoints> m_PointIds{ MakeFilled<std::array<PointIdentifier, NumberOfPoints>>(
157 InterpolationDerivs(
const CoordRepType pointCoords[CellDimension], CoordRepType derivs[NumberOfDerivatives]);
159 InterpolationFunctions(
const CoordRepType pointCoords[CellDimension],
160 InterpolationWeightType weights[NumberOfPoints]);
162 EvaluateLocation(
int & itkNotUsed(subId),
163 const PointsContainer * points,
164 const CoordRepType pointCoords[PointDimension],
165 CoordRepType x[PointDimension],
166 InterpolationWeightType * weights);
170 #ifndef ITK_MANUAL_INSTANTIATION
171 # include "itkQuadrilateralCell.hxx"