142#ifndef vtkPolyhedron_h
143#define vtkPolyhedron_h
147#include "vtkCommonDataModelModule.h"
151VTK_ABI_NAMESPACE_BEGIN
190 vtkWarningMacro(<<
"vtkPolyhedron::GetEdgePoints Not Implemented");
194 vtkWarningMacro(<<
"vtkPolyhedron::GetFacePoints Not Implemented");
200 vtkWarningMacro(<<
"vtkPolyhedron::GetEdgeToAdjacentFaces Not Implemented");
205 vtkWarningMacro(<<
"vtkPolyhedron::GetFaceToAdjacentFaces Not Implemented");
211 vtkWarningMacro(<<
"vtkPolyhedron::GetPointToIncidentEdges Not Implemented");
218 vtkWarningMacro(<<
"vtkPolyhedron::GetPointToOneRingPoints Not Implemented");
223 vtkWarningMacro(<<
"vtkPolyhedron::GetCentroid Not Implemented");
290 int EvaluatePosition(
const double x[3],
double closestPoint[3],
int& subId,
double pcoords[3],
291 double& dist2,
double weights[])
override;
297 void EvaluateLocation(
int& subId,
const double pcoords[3],
double x[3],
double* weights)
override;
305 int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
double& t,
double x[3],
306 double pcoords[3],
int& subId)
override;
349 int subId,
const double pcoords[3],
const double* values,
int dim,
double* derivs)
override;
451 int IsInside(const
double x[3],
double tolerance);
507 int EdgesGenerated = 0;
518 void GenerateFaces();
520 int FacesGenerated = 0;
523 int BoundsComputed = 0;
524 void ComputeBounds();
525 void ComputeParametricCoordinate(const
double x[3],
double pc[3]);
526 void ComputePositionFromParametricCoordinate(const
double pc[3],
double x[3]);
529 int PolyDataConstructed = 0;
531 void ConstructPolyData();
532 int LocatorConstructed = 0;
534 void ConstructLocator();
551 void GeneratePointToIncidentFaces();
557 std::atomic<
bool> IsRandomSequenceSeedInitialized{
false };
abstract class to specify 3D cell interface
object to represent cell connectivity
represent and manipulate cell attribute data
octree-based spatial search object to quickly locate cells
abstract class to specify cell behavior
abstract superclass for arrays of numeric data
keep track of edges (edge is pair of integer id's)
provides thread-safe access to cells
list of point or cell ids
dynamic, self-adjusting array of vtkIdType
Abstract class in support of both point location and point insertion.
a simple class to control print indentation
cell represents a 1D line
Park and Miller Sequence of pseudo random numbers.
Allocate and hold a VTK object.
represent and manipulate point attribute data
quickly locate points in 3-space
concrete dataset represents vertices, lines, polygons, and triangle strips
a cell that represents an n-sided polygon
A 3D cell defined by a set of polygonal faces.
vtkIdType GetFacePoints(vtkIdType faceId, const vtkIdType *&pts) override
See vtkCell3D API for description of these methods.
void GetEdgePoints(vtkIdType edgeId, const vtkIdType *&pts) override
See vtkCell3D API for description of these methods.
vtkIdType GetPointToIncidentFaces(vtkIdType pointId, const vtkIdType *&faceIds) override
See vtkCell3D API for description of these methods.
vtkIdType GetFaceToAdjacentFaces(vtkIdType faceId, const vtkIdType *&faceIds) override
See vtkCell3D API for description of these methods.
int GetNumberOfFaces() override
A polyhedron is represented internally by a set of polygonal faces.
int EvaluatePosition(const double x[3], double closestPoint[3], int &subId, double pcoords[3], double &dist2, double weights[]) override
Satisfy the vtkCell API.
int IntersectWithLine(const double p1[3], const double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId) override
Intersect the line (p1,p2) with a given tolerance tol to determine a point of intersection x[3] with ...
std::map< vtkIdType, vtkIdType > vtkPointIdMap
int TriangulateLocalIds(int index, vtkIdList *ptIds) override
Use vtkOrderedTriangulator to tetrahedralize the polyhedron mesh.
int TriangulateFaces(vtkIdList *newFaces)
Triangulate each face of the polyhedron.
vtkIdType GetPointToIncidentEdges(vtkIdType pointId, const vtkIdType *&edgeIds) override
See vtkCell3D API for description of these methods.
void EvaluateLocation(int &subId, const double pcoords[3], double x[3], double *weights) override
The inverse of EvaluatePosition.
void InterpolateFunctions(const double x[3], double *sf) override
Compute the interpolation functions/derivatives (aka shape functions/derivatives).
int RequiresExplicitFaceRepresentation() VTK_FUTURE_CONST override
Satisfy the vtkCell API.
void Contour(double value, vtkDataArray *scalars, vtkIncrementalPointLocator *locator, vtkCellArray *verts, vtkCellArray *lines, vtkCellArray *polys, vtkPointData *inPd, vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd) override
Satisfy the vtkCell API.
bool GetCentroid(double centroid[3]) const override
See vtkCell3D API for description of these methods.
int GetParametricCenter(double pcoords[3]) override
Return the center of the cell in parametric coordinates.
int TriangulateFaces(vtkCellArray *newFaces)
Triangulate each face of the polyhedron.
double * GetParametricCoords() override
See vtkCell3D API for description of this method.
void InterpolateDerivs(const double x[3], double *derivs) override
Compute the interpolation functions/derivatives (aka shape functions/derivatives).
int IsPrimaryCell() VTK_FUTURE_CONST override
A polyhedron is a full-fledged primary cell.
int GetNumberOfEdges() override
A polyhedron is represented internally by a set of polygonal faces.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard new methods.
void GetEdgeToAdjacentFaces(vtkIdType edgeId, const vtkIdType *&pts) override
See vtkCell3D API for description of these methods.
vtkIdType GetPointToOneRingPoints(vtkIdType pointId, const vtkIdType *&pts) override
See vtkCell3D API for description of these methods.
vtkCell * GetEdge(int) override
A polyhedron is represented internally by a set of polygonal faces.
vtkCell * GetFace(int faceId) override
A polyhedron is represented internally by a set of polygonal faces.
void Derivatives(int subId, const double pcoords[3], const double *values, int dim, double *derivs) override
Computes derivatives at the point specified by the parameter coordinate.
int RequiresInitialization() override
This cell requires that it be initialized prior to access.
static vtkPolyhedron * New()
Standard new methods.
int GetCellType() override
See the vtkCell API for descriptions of these methods.
int CellBoundary(int subId, const double pcoords[3], vtkIdList *pts) override
Find the boundary face closest to the point defined by the pcoords[3] and subId of the cell (subId ca...
void Clip(double value, vtkDataArray *scalars, vtkIncrementalPointLocator *locator, vtkCellArray *connectivity, vtkPointData *inPd, vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd, int insideOut) override
Satisfy the vtkCell API.
void Initialize() override
The Initialize method builds up internal structures of vtkPolyhedron.
a cell that represents a 2D quadrilateral
a 3D cell that represents a tetrahedron
a cell that represents a triangle
vtkCellStatus
Diagnostic values indicating how well-specified a cell is.
#define VTK_DEPRECATED_IN_9_6_0(reason)