18 #ifndef itkHexahedronCell_h
19 #define itkHexahedronCell_h
44 template <
typename TCellInterface>
46 :
public TCellInterface
73 static constexpr
unsigned int NumberOfPoints = 8;
74 static constexpr
unsigned int NumberOfVertices = 8;
75 static constexpr
unsigned int NumberOfEdges = 12;
76 static constexpr
unsigned int NumberOfFaces = 6;
77 static constexpr
unsigned int CellDimension = 3;
84 static constexpr
unsigned int CellDimension3D = 3;
85 static constexpr
unsigned int PointDimension3D = 3;
94 MakeCopy(CellAutoPointer &)
const override;
98 GetDimension()
const override;
101 GetNumberOfPoints()
const override;
104 GetNumberOfBoundaryFeatures(
int dimension)
const override;
107 GetBoundaryFeature(
int dimension, CellFeatureIdentifier, CellAutoPointer &)
override;
109 SetPointIds(PointIdConstIterator first)
override;
112 SetPointIds(PointIdConstIterator first, PointIdConstIterator last)
override;
115 SetPointId(
int localId, PointIdentifier)
override;
117 PointIdsBegin()
override;
120 PointIdsBegin()
const override;
123 PointIdsEnd()
override;
126 PointIdsEnd()
const override;
129 virtual CellFeatureCount
130 GetNumberOfVertices()
const;
132 virtual CellFeatureCount
133 GetNumberOfEdges()
const;
135 virtual CellFeatureCount
136 GetNumberOfFaces()
const;
139 GetVertex(CellFeatureIdentifier, VertexAutoPointer &);
141 GetEdge(CellFeatureIdentifier, EdgeAutoPointer &);
143 GetFace(CellFeatureIdentifier, FaceAutoPointer &);
147 EvaluatePosition(CoordRepType *,
152 InterpolationWeightType *)
override;
159 std::array<PointIdentifier, NumberOfPoints> m_PointIds{ MakeFilled<std::array<PointIdentifier, NumberOfPoints>>(
163 InterpolationDerivs(CoordRepType pcoords[Self::CellDimension],
164 CoordRepType derivs[Self::CellDimension * Self::NumberOfPoints]);
166 InterpolationFunctions(CoordRepType pcoords[Self::CellDimension], InterpolationWeightType sf[Self::NumberOfPoints]);
168 EvaluateLocation(
int & itkNotUsed(subId),
169 PointsContainer * points,
170 CoordRepType pcoords[Self::CellDimension],
171 CoordRepType x[Self::CellDimension],
172 InterpolationWeightType * weights);
181 #ifndef ITK_MANUAL_INSTANTIATION
182 # include "itkHexahedronCell.hxx"