18 #ifndef itkHexahedronCell_h
19 #define itkHexahedronCell_h
43 template<
typename TCellInterface >
70 static constexpr
unsigned int NumberOfPoints = 8;
71 static constexpr
unsigned int NumberOfVertices = 8;
72 static constexpr
unsigned int NumberOfEdges = 12;
73 static constexpr
unsigned int NumberOfFaces = 6;
74 static constexpr
unsigned int CellDimension = 3;
78 {
return Superclass::HEXAHEDRON_CELL; }
79 void MakeCopy(CellAutoPointer &)
const override;
82 unsigned int GetDimension()
const override;
84 unsigned int GetNumberOfPoints()
const override;
86 CellFeatureCount GetNumberOfBoundaryFeatures(
int dimension)
const override;
88 bool GetBoundaryFeature(
int dimension, CellFeatureIdentifier, CellAutoPointer &)
override;
89 void SetPointIds(PointIdConstIterator first)
override;
91 void SetPointIds(PointIdConstIterator first, PointIdConstIterator last)
override;
93 void SetPointId(
int localId, PointIdentifier)
override;
94 PointIdIterator PointIdsBegin()
override;
96 PointIdConstIterator PointIdsBegin()
const override;
98 PointIdIterator PointIdsEnd()
override;
100 PointIdConstIterator PointIdsEnd()
const override;
103 virtual CellFeatureCount GetNumberOfVertices()
const;
105 virtual CellFeatureCount GetNumberOfEdges()
const;
107 virtual CellFeatureCount GetNumberOfFaces()
const;
109 virtual bool GetVertex(CellFeatureIdentifier, VertexAutoPointer &);
110 virtual bool GetEdge(CellFeatureIdentifier, EdgeAutoPointer &);
111 virtual bool GetFace(CellFeatureIdentifier, FaceAutoPointer &);
114 bool EvaluatePosition(CoordRepType *,
119 InterpolationWeightType *)
override;
126 PointIdentifier m_PointIds[NumberOfPoints];
129 InterpolationDerivs( CoordRepType pcoords[Self::CellDimension],
130 CoordRepType derivs[Self::CellDimension * Self::NumberOfPoints] );
132 InterpolationFunctions( CoordRepType pcoords[Self::CellDimension], InterpolationWeightType sf[Self::NumberOfPoints] );
134 EvaluateLocation(
int& itkNotUsed( subId ), PointsContainer* points, CoordRepType pcoords[Self::CellDimension],
135 CoordRepType x[Self::CellDimension], InterpolationWeightType* weights );
140 for (
unsigned int i = 0; i < Self::NumberOfPoints; i++ )
150 #ifndef ITK_MANUAL_INSTANTIATION
151 #include "itkHexahedronCell.hxx"
Represents a line segment for a Mesh.
Define numeric traits for std::vector.
typename VertexType::SelfAutoPointer VertexAutoPointer
An abstract interface for cells.
CellGeometry GetType() const override
#define itkCellCommonTypedefs(celltype)
Holds data defining the topological connections of the vertices and edges of a HexahedronCell.
Represents a hexahedron (cuboid) for a Mesh.
typename EdgeType::SelfAutoPointer EdgeAutoPointer
typename FaceType::SelfAutoPointer FaceAutoPointer
Represents a single vertex for a Mesh.
#define itkCellVisitMacro(TopologyId)
Represents a quadrilateral for a Mesh.
#define itkCellInheritedTypedefs(superclassArg)