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");
286 int EvaluatePosition(
const double x[3],
double closestPoint[3],
int& subId,
double pcoords[3],
287 double& dist2,
double weights[])
override;
293 void EvaluateLocation(
int& subId,
const double pcoords[3],
double x[3],
double* weights)
override;
301 int IntersectWithLine(
const double p1[3],
const double p2[3],
double tol,
double& t,
double x[3],
302 double pcoords[3],
int& subId)
override;
345 int subId,
const double pcoords[3],
const double* values,
int dim,
double* derivs)
override;
447 int IsInside(const
double x[3],
double tolerance);
503 int EdgesGenerated = 0;
514 void GenerateFaces();
516 int FacesGenerated = 0;
519 int BoundsComputed = 0;
520 void ComputeBounds();
521 void ComputeParametricCoordinate(const
double x[3],
double pc[3]);
522 void ComputePositionFromParametricCoordinate(const
double pc[3],
double x[3]);
525 int PolyDataConstructed = 0;
527 void ConstructPolyData();
528 int LocatorConstructed = 0;
530 void ConstructLocator();
547 void GeneratePointToIncidentFaces();
553 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)