18#ifndef itkQuadrilateralCell_h
19#define itkQuadrilateralCell_h
36template <
typename TCellInterface>
38 :
public TCellInterface
61 static constexpr unsigned int NumberOfPoints = 4;
62 static constexpr unsigned int NumberOfVertices = 4;
63 static constexpr unsigned int NumberOfEdges = 4;
64 static constexpr unsigned int CellDimension = 2;
65 static constexpr unsigned int NumberOfDerivatives = 8;
92 SetPointIds(PointIdConstIterator first, PointIdConstIterator last)
override;
109 virtual CellFeatureCount
112 virtual CellFeatureCount
123 PointsContainer * points,
124 CoordinateType * closestPoint,
125 CoordinateType[CellDimension],
127 InterpolationWeightType * weight)
override;
139 std::array<PointIdentifier, NumberOfPoints> m_PointIds{ MakeFilled<std::array<PointIdentifier, NumberOfPoints>>(
143 InterpolationDerivs(
const CoordinateType pointCoords[CellDimension], CoordinateType derivs[NumberOfDerivatives]);
146 InterpolationWeightType weights[NumberOfPoints]);
149 const PointsContainer * points,
150 const CoordinateType pointCoords[PointDimension],
151 CoordinateType x[PointDimension],
152 InterpolationWeightType * weights);
156#ifndef ITK_MANUAL_INSTANTIATION
157# include "itkQuadrilateralCell.hxx"
Represents a line segment for a Mesh.
static constexpr T max(const T &)
Holds data defining the topological connections of the vertices and edges of a QuadrilateralCell.
Represents a quadrilateral for a Mesh.
void MakeCopy(CellAutoPointer &) const override
itkCellInheritedTypedefs(TCellInterface)
~QuadrilateralCell() override=default
virtual CellFeatureCount GetNumberOfEdges() const
typename EdgeType::SelfAutoPointer EdgeAutoPointer
unsigned int GetNumberOfPoints() const override
void SetPointId(int localId, PointIdentifier) override
PointIdConstIterator PointIdsBegin() const override
typename VertexType::SelfAutoPointer VertexAutoPointer
bool EvaluatePosition(CoordinateType *x, PointsContainer *points, CoordinateType *closestPoint, CoordinateType[CellDimension], double *dist2, InterpolationWeightType *weight) override
void EvaluateLocation(int &, const PointsContainer *points, const CoordinateType pointCoords[PointDimension], CoordinateType x[PointDimension], InterpolationWeightType *weights)
bool GetBoundaryFeature(int dimension, CellFeatureIdentifier, CellAutoPointer &) override
void SetPointIds(PointIdConstIterator first) override
void SetPointIds(PointIdConstIterator first, PointIdConstIterator last) override
PointIdIterator PointIdsBegin() override
PointIdIterator PointIdsEnd() override
unsigned int GetDimension() const override
CellFeatureCount GetNumberOfBoundaryFeatures(int dimension) const override
void InterpolationDerivs(const CoordinateType pointCoords[CellDimension], CoordinateType derivs[NumberOfDerivatives])
PointIdConstIterator PointIdsEnd() const override
virtual bool GetEdge(CellFeatureIdentifier, EdgeAutoPointer &)
QuadrilateralCell()=default
itkCellVisitMacro(CellGeometryEnum::QUADRILATERAL_CELL)
CellGeometryEnum GetType() const override
virtual bool GetVertex(CellFeatureIdentifier, VertexAutoPointer &)
itkCellCommonTypedefs(QuadrilateralCell)
virtual CellFeatureCount GetNumberOfVertices() const
void InterpolationFunctions(const CoordinateType pointCoords[CellDimension], InterpolationWeightType weights[NumberOfPoints])
Represents a single vertex for a Mesh.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....