18 #ifndef itkHexahedronCell_h
19 #define itkHexahedronCell_h
46 template <
typename TCellInterface>
48 :
public TCellInterface
75 static constexpr
unsigned int NumberOfPoints = 8;
76 static constexpr
unsigned int NumberOfVertices = 8;
77 static constexpr
unsigned int NumberOfEdges = 12;
78 static constexpr
unsigned int NumberOfFaces = 6;
79 static constexpr
unsigned int CellDimension = 3;
86 static constexpr
unsigned int CellDimension3D = 3;
87 static constexpr
unsigned int PointDimension3D = 3;
96 MakeCopy(CellAutoPointer &)
const override;
100 GetDimension()
const override;
103 GetNumberOfPoints()
const override;
106 GetNumberOfBoundaryFeatures(
int dimension)
const override;
109 GetBoundaryFeature(
int dimension, CellFeatureIdentifier, CellAutoPointer &)
override;
111 SetPointIds(PointIdConstIterator first)
override;
114 SetPointIds(PointIdConstIterator first, PointIdConstIterator last)
override;
117 SetPointId(
int localId, PointIdentifier)
override;
119 PointIdsBegin()
override;
122 PointIdsBegin()
const override;
125 PointIdsEnd()
override;
128 PointIdsEnd()
const override;
131 virtual CellFeatureCount
132 GetNumberOfVertices()
const;
134 virtual CellFeatureCount
135 GetNumberOfEdges()
const;
137 virtual CellFeatureCount
138 GetNumberOfFaces()
const;
141 GetVertex(CellFeatureIdentifier, VertexAutoPointer &);
143 GetEdge(CellFeatureIdentifier, EdgeAutoPointer &);
145 GetFace(CellFeatureIdentifier, FaceAutoPointer &);
149 EvaluatePosition(CoordRepType *,
154 InterpolationWeightType *)
override;
161 PointIdentifier m_PointIds[NumberOfPoints];
164 InterpolationDerivs(CoordRepType pcoords[Self::CellDimension],
165 CoordRepType derivs[Self::CellDimension * Self::NumberOfPoints]);
167 InterpolationFunctions(CoordRepType pcoords[Self::CellDimension], InterpolationWeightType sf[Self::NumberOfPoints]);
169 EvaluateLocation(
int & itkNotUsed(subId),
170 PointsContainer * points,
171 CoordRepType pcoords[Self::CellDimension],
172 CoordRepType x[Self::CellDimension],
173 InterpolationWeightType * weights);
178 for (
unsigned int i = 0; i < Self::NumberOfPoints; i++)
188 #ifndef ITK_MANUAL_INSTANTIATION
189 # include "itkHexahedronCell.hxx"