VTK  9.0.1
vtkConvexPointSet.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkConvexPointSet.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
30 #ifndef vtkConvexPointSet_h
31 #define vtkConvexPointSet_h
32 
33 #include "vtkCell3D.h"
34 #include "vtkCommonDataModelModule.h" // For export macro
35 
37 class vtkCellArray;
38 class vtkTriangle;
39 class vtkTetra;
40 class vtkDoubleArray;
41 
42 class VTKCOMMONDATAMODEL_EXPORT vtkConvexPointSet : public vtkCell3D
43 {
44 public:
46  vtkTypeMacro(vtkConvexPointSet, vtkCell3D);
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
52  virtual int HasFixedTopology() { return 0; }
53 
55 
59  void GetEdgePoints(vtkIdType vtkNotUsed(edgeId), const vtkIdType*& vtkNotUsed(pts)) override
60  {
61  vtkWarningMacro(<< "vtkConvexPointSet::GetEdgePoints Not Implemented");
62  }
63  // @deprecated Replaced by GetEdgePoints(vtkIdType, const vtkIdType*&) as of VTK 9.0
64  VTK_LEGACY(void GetEdgePoints(int vtkNotUsed(edgeId), int*& vtkNotUsed(pts)) override {
65  vtkWarningMacro(<< "vtkConvexPointSet::GetEdgePoints Not Implemented. "
66  << "Also note that this signature is deprecated. "
67  << "Please use GetEdgePoints(vtkIdType, const vtkIdType*& instead");
68  });
69  vtkIdType GetFacePoints(vtkIdType vtkNotUsed(faceId), const vtkIdType*& vtkNotUsed(pts)) override
70  {
71  vtkWarningMacro(<< "vtkConvexPointSet::GetFacePoints Not Implemented");
72  return 0;
73  }
74  // @deprecated Replaced by GetFacePoints(vtkIdType, const vtkIdType*&) as of VTK 9.0
75  VTK_LEGACY(void GetFacePoints(int vtkNotUsed(faceId), int*& vtkNotUsed(pts)) override {
76  vtkWarningMacro(<< "vtkConvexPointSet::GetFacePoints Not Implemented. "
77  << "Also note that this signature is deprecated. "
78  << "Please use GetFacePoints(vtkIdType, const vtkIdType*& instead");
79  });
81  vtkIdType vtkNotUsed(edgeId), const vtkIdType*& vtkNotUsed(pts)) override
82  {
83  vtkWarningMacro(<< "vtkConvexPointSet::GetEdgeToAdjacentFaces Not Implemented");
84  }
86  vtkIdType vtkNotUsed(faceId), const vtkIdType*& vtkNotUsed(faceIds)) override
87  {
88  vtkWarningMacro(<< "vtkConvexPointSet::GetFaceToAdjacentFaces Not Implemented");
89  return 0;
90  }
92  vtkIdType vtkNotUsed(pointId), const vtkIdType*& vtkNotUsed(edgeIds)) override
93  {
94  vtkWarningMacro(<< "vtkConvexPointSet::GetPointToIncidentEdges Not Implemented");
95  return 0;
96  }
98  vtkIdType vtkNotUsed(pointId), const vtkIdType*& vtkNotUsed(faceIds)) override
99  {
100  vtkWarningMacro(<< "vtkConvexPointSet::GetPointToIncidentFaces Not Implemented");
101  return 0;
102  }
104  vtkIdType vtkNotUsed(pointId), const vtkIdType*& vtkNotUsed(pts)) override
105  {
106  vtkWarningMacro(<< "vtkConvexPointSet::GetPointToOneRingPoints Not Implemented");
107  return 0;
108  }
109  bool GetCentroid(double vtkNotUsed(centroid)[3]) const override
110  {
111  vtkWarningMacro(<< "vtkConvexPointSet::GetCentroid Not Implemented");
112  return 0;
113  }
115 
119  double* GetParametricCoords() override;
120 
124  int GetCellType() override { return VTK_CONVEX_POINT_SET; }
125 
129  int RequiresInitialization() override { return 1; }
130  void Initialize() override;
131 
133 
143  int GetNumberOfEdges() override { return 0; }
144  vtkCell* GetEdge(int) override { return nullptr; }
145  int GetNumberOfFaces() override;
146  vtkCell* GetFace(int faceId) override;
148 
153  void Contour(double value, vtkDataArray* cellScalars, vtkIncrementalPointLocator* locator,
154  vtkCellArray* verts, vtkCellArray* lines, vtkCellArray* polys, vtkPointData* inPd,
155  vtkPointData* outPd, vtkCellData* inCd, vtkIdType cellId, vtkCellData* outCd) override;
156 
162  void Clip(double value, vtkDataArray* cellScalars, vtkIncrementalPointLocator* locator,
163  vtkCellArray* connectivity, vtkPointData* inPd, vtkPointData* outPd, vtkCellData* inCd,
164  vtkIdType cellId, vtkCellData* outCd, int insideOut) override;
165 
171  int EvaluatePosition(const double x[3], double closestPoint[3], int& subId, double pcoords[3],
172  double& dist2, double weights[]) override;
173 
177  void EvaluateLocation(int& subId, const double pcoords[3], double x[3], double* weights) override;
178 
183  int IntersectWithLine(const double p1[3], const double p2[3], double tol, double& t, double x[3],
184  double pcoords[3], int& subId) override;
185 
189  int Triangulate(int index, vtkIdList* ptIds, vtkPoints* pts) override;
190 
196  int subId, const double pcoords[3], const double* values, int dim, double* derivs) override;
197 
203  int CellBoundary(int subId, const double pcoords[3], vtkIdList* pts) override;
204 
208  int GetParametricCenter(double pcoords[3]) override;
209 
214  int IsPrimaryCell() override { return 0; }
215 
217 
221  void InterpolateFunctions(const double pcoords[3], double* sf) override;
222  void InterpolateDerivs(const double pcoords[3], double* derivs) override;
224 
225 protected:
227  ~vtkConvexPointSet() override;
228 
233 
237 
238 private:
239  vtkConvexPointSet(const vtkConvexPointSet&) = delete;
240  void operator=(const vtkConvexPointSet&) = delete;
241 };
242 
243 //----------------------------------------------------------------------------
244 inline int vtkConvexPointSet::GetParametricCenter(double pcoords[3])
245 {
246  pcoords[0] = pcoords[1] = pcoords[2] = 0.5;
247  return 0;
248 }
249 
250 #endif
abstract class to specify 3D cell interface
Definition: vtkCell3D.h:39
virtual vtkIdType GetFacePoints(vtkIdType faceId, const vtkIdType *&pts)=0
Get the list of vertices that define a face.
virtual void GetEdgePoints(vtkIdType edgeId, const vtkIdType *&pts)=0
Get the pair of vertices that define an edge.
object to represent cell connectivity
Definition: vtkCellArray.h:180
represent and manipulate cell attribute data
Definition: vtkCellData.h:33
abstract class to specify cell behavior
Definition: vtkCell.h:57
virtual int GetParametricCenter(double pcoords[3])
Return center of the cell in parametric coordinates.
a 3D cell defined by a set of convex points
int Triangulate(int index, vtkIdList *ptIds, vtkPoints *pts) override
Triangulate using methods of vtkOrderedTriangulator.
vtkDoubleArray * ParametricCoords
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
bool GetCentroid(double vtkNotUsed(centroid)[3]) const override
int GetNumberOfEdges() override
A convex point set has no explicit cell edge or faces; however implicitly (after triangulation) it do...
int RequiresInitialization() override
This cell requires that it be initialized prior to access.
vtkDoubleArray * TetraScalars
void Contour(double value, vtkDataArray *cellScalars, vtkIncrementalPointLocator *locator, vtkCellArray *verts, vtkCellArray *lines, vtkCellArray *polys, vtkPointData *inPd, vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd) override
Satisfy the vtkCell API.
int CellBoundary(int subId, const double pcoords[3], vtkIdList *pts) override
Returns the set of points forming a face of the triangulation of these points that are on the boundar...
void Clip(double value, vtkDataArray *cellScalars, vtkIncrementalPointLocator *locator, vtkCellArray *connectivity, vtkPointData *inPd, vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd, int insideOut) override
Satisfy the vtkCell API.
vtkIdType GetPointToIncidentEdges(vtkIdType vtkNotUsed(pointId), const vtkIdType *&vtkNotUsed(edgeIds)) override
vtkIdType GetFacePoints(vtkIdType vtkNotUsed(faceId), const vtkIdType *&vtkNotUsed(pts)) override
~vtkConvexPointSet() override
void GetEdgePoints(vtkIdType vtkNotUsed(edgeId), const vtkIdType *&vtkNotUsed(pts)) override
See vtkCell3D API for description of these methods.
void Initialize() override
int IntersectWithLine(const double p1[3], const double p2[3], double tol, double &t, double x[3], double pcoords[3], int &subId) override
Triangulates the cells and then intersects them to determine the intersection point.
vtkTriangle * Triangle
vtkCell * GetFace(int faceId) override
Return the face cell from the faceId of the cell.
double * GetParametricCoords() override
See vtkCell3D API for description of this method.
void InterpolateDerivs(const double pcoords[3], double *derivs) override
vtkCellArray * BoundaryTris
int EvaluatePosition(const double x[3], double closestPoint[3], int &subId, double pcoords[3], double &dist2, double weights[]) override
Satisfy the vtkCell API.
int GetParametricCenter(double pcoords[3]) override
Return the center of the cell in parametric coordinates.
vtkIdType GetFaceToAdjacentFaces(vtkIdType vtkNotUsed(faceId), const vtkIdType *&vtkNotUsed(faceIds)) override
static vtkConvexPointSet * New()
void GetEdgeToAdjacentFaces(vtkIdType vtkNotUsed(edgeId), const vtkIdType *&vtkNotUsed(pts)) override
int IsPrimaryCell() override
A convex point set is triangulated prior to any operations on it so it is not a primary cell,...
int GetCellType() override
See the vtkCell API for descriptions of these methods.
int GetNumberOfFaces() override
Return the number of faces in the cell.
void Derivatives(int subId, const double pcoords[3], const double *values, int dim, double *derivs) override
Computes derivatives by triangulating and from subId and pcoords, evaluating derivatives on the resul...
void InterpolateFunctions(const double pcoords[3], double *sf) override
Compute the interpolation functions/derivatives (aka shape functions/derivatives)
vtkIdType GetPointToIncidentFaces(vtkIdType vtkNotUsed(pointId), const vtkIdType *&vtkNotUsed(faceIds)) override
void EvaluateLocation(int &subId, const double pcoords[3], double x[3], double *weights) override
The inverse of EvaluatePosition.
virtual int HasFixedTopology()
See vtkCell3D API for description of this method.
vtkCell * GetEdge(int) override
Return the edge cell from the edgeId of the cell.
vtkIdType GetPointToOneRingPoints(vtkIdType vtkNotUsed(pointId), const vtkIdType *&vtkNotUsed(pts)) override
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:50
dynamic, self-adjusting array of double
list of point or cell ids
Definition: vtkIdList.h:31
Abstract class in support of both point location and point insertion.
a simple class to control print indentation
Definition: vtkIndent.h:34
represent and manipulate point attribute data
Definition: vtkPointData.h:32
represent and manipulate 3D points
Definition: vtkPoints.h:34
a 3D cell that represents a tetrahedron
Definition: vtkTetra.h:42
a cell that represents a triangle
Definition: vtkTriangle.h:36
dataset represents arbitrary combinations of all possible cell types
@ value
Definition: vtkX3D.h:226
@ index
Definition: vtkX3D.h:252
@ VTK_CONVEX_POINT_SET
Definition: vtkCellType.h:85
int vtkIdType
Definition: vtkType.h:338