18 #ifndef itkHexahedronCell_h
19 #define itkHexahedronCell_h
49 template <
typename TCellInterface>
51 :
public TCellInterface
78 static constexpr
unsigned int NumberOfPoints = 8;
79 static constexpr
unsigned int NumberOfVertices = 8;
80 static constexpr
unsigned int NumberOfEdges = 12;
81 static constexpr
unsigned int NumberOfFaces = 6;
82 static constexpr
unsigned int CellDimension = 3;
89 static constexpr
unsigned int CellDimension3D = 3;
90 static constexpr
unsigned int PointDimension3D = 3;
99 MakeCopy(CellAutoPointer &)
const override;
103 GetDimension()
const override;
106 GetNumberOfPoints()
const override;
109 GetNumberOfBoundaryFeatures(
int dimension)
const override;
112 GetBoundaryFeature(
int dimension, CellFeatureIdentifier, CellAutoPointer &)
override;
114 SetPointIds(PointIdConstIterator first)
override;
117 SetPointIds(PointIdConstIterator first, PointIdConstIterator last)
override;
120 SetPointId(
int localId, PointIdentifier)
override;
122 PointIdsBegin()
override;
125 PointIdsBegin()
const override;
128 PointIdsEnd()
override;
131 PointIdsEnd()
const override;
134 virtual CellFeatureCount
135 GetNumberOfVertices()
const;
137 virtual CellFeatureCount
138 GetNumberOfEdges()
const;
140 virtual CellFeatureCount
141 GetNumberOfFaces()
const;
144 GetVertex(CellFeatureIdentifier, VertexAutoPointer &);
146 GetEdge(CellFeatureIdentifier, EdgeAutoPointer &);
148 GetFace(CellFeatureIdentifier, FaceAutoPointer &);
152 EvaluatePosition(CoordRepType *,
157 InterpolationWeightType *)
override;
164 std::array<PointIdentifier, NumberOfPoints> m_PointIds{ MakeFilled<std::array<PointIdentifier, NumberOfPoints>>(
168 InterpolationDerivs(CoordRepType pcoords[Self::CellDimension],
169 CoordRepType derivs[Self::CellDimension * Self::NumberOfPoints]);
171 InterpolationFunctions(CoordRepType pcoords[Self::CellDimension], InterpolationWeightType sf[Self::NumberOfPoints]);
173 EvaluateLocation(
int & itkNotUsed(subId),
174 PointsContainer * points,
175 CoordRepType pcoords[Self::CellDimension],
176 CoordRepType x[Self::CellDimension],
177 InterpolationWeightType * weights);
186 #ifndef ITK_MANUAL_INSTANTIATION
187 # include "itkHexahedronCell.hxx"