VTK  9.2.6
vtkCell3D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkCell3D.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 =========================================================================*/
27 #ifndef vtkCell3D_h
28 #define vtkCell3D_h
29 
30 #include "vtkCell.h"
31 #include "vtkCommonDataModelModule.h" // For export macro
32 
34 class vtkTetra;
35 class vtkCellArray;
36 class vtkDoubleArray;
37 
38 class VTKCOMMONDATAMODEL_EXPORT vtkCell3D : public vtkCell
39 {
40 public:
41  vtkTypeMacro(vtkCell3D, vtkCell);
42  void PrintSelf(ostream& os, vtkIndent indent) override;
43 
51  virtual void GetEdgePoints(vtkIdType edgeId, const vtkIdType*& pts) = 0;
52 
62  virtual vtkIdType GetFacePoints(vtkIdType faceId, const vtkIdType*& pts) = 0;
63 
71  virtual void GetEdgeToAdjacentFaces(vtkIdType edgeId, const vtkIdType*& faceIds) = 0;
72 
88  virtual vtkIdType GetFaceToAdjacentFaces(vtkIdType faceId, const vtkIdType*& faceIds) = 0;
89 
104  virtual vtkIdType GetPointToIncidentEdges(vtkIdType pointId, const vtkIdType*& edgeIds) = 0;
105 
122  virtual vtkIdType GetPointToIncidentFaces(vtkIdType pointId, const vtkIdType*& faceIds) = 0;
123 
135  virtual vtkIdType GetPointToOneRingPoints(vtkIdType pointId, const vtkIdType*& pts) = 0;
136 
143  virtual bool IsInsideOut();
144 
148  virtual bool GetCentroid(double centroid[3]) const = 0;
149 
150  void Contour(double value, vtkDataArray* cellScalars, vtkIncrementalPointLocator* locator,
151  vtkCellArray* verts, vtkCellArray* lines, vtkCellArray* polys, vtkPointData* inPd,
152  vtkPointData* outPd, vtkCellData* inCd, vtkIdType cellId, vtkCellData* outCd) override;
153 
166  void Clip(double value, vtkDataArray* cellScalars, vtkIncrementalPointLocator* locator,
167  vtkCellArray* connectivity, vtkPointData* inPd, vtkPointData* outPd, vtkCellData* inCd,
168  vtkIdType cellId, vtkCellData* outCd, int insideOut) override;
169 
173  int GetCellDimension() override { return 3; }
174 
186  int Inflate(double dist) override;
187 
189 
194  vtkSetClampMacro(MergeTolerance, double, 0.0001, 0.25);
195  vtkGetMacro(MergeTolerance, double);
197 
198 protected:
200  ~vtkCell3D() override;
201 
204 
205  // used to support clipping
208 
209 private:
210  vtkCell3D(const vtkCell3D&) = delete;
211  void operator=(const vtkCell3D&) = delete;
212 };
213 
214 #endif
abstract class to specify 3D cell interface
Definition: vtkCell3D.h:39
int GetCellDimension() override
The topological dimension of the cell.
Definition: vtkCell3D.h:173
void Clip(double value, vtkDataArray *cellScalars, vtkIncrementalPointLocator *locator, vtkCellArray *connectivity, vtkPointData *inPd, vtkPointData *outPd, vtkCellData *inCd, vtkIdType cellId, vtkCellData *outCd, int insideOut) override
Cut (or clip) the cell based on the input cellScalars and the specified value.
~vtkCell3D() override
double MergeTolerance
Definition: vtkCell3D.h:203
virtual vtkIdType GetPointToIncidentEdges(vtkIdType pointId, const vtkIdType *&edgeIds)=0
Get the ids of the incident edges to point of id pointId.
virtual vtkIdType GetPointToOneRingPoints(vtkIdType pointId, const vtkIdType *&pts)=0
Get the ids of a one-ring surrounding point of id pointId.
vtkOrderedTriangulator * Triangulator
Definition: vtkCell3D.h:202
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
Generate contouring primitives.
virtual vtkIdType GetFacePoints(vtkIdType faceId, const vtkIdType *&pts)=0
Get the list of vertices that define a face.
vtkTetra * ClipTetra
Definition: vtkCell3D.h:206
virtual vtkIdType GetFaceToAdjacentFaces(vtkIdType faceId, const vtkIdType *&faceIds)=0
Get the ids of the adjacent faces to face of id faceId.
virtual bool IsInsideOut()
Returns true if the normals of the vtkCell3D point inside the cell.
virtual bool GetCentroid(double centroid[3]) const =0
Computes the centroid of the cell.
virtual void GetEdgePoints(vtkIdType edgeId, const vtkIdType *&pts)=0
Get the pair of vertices that define an edge.
int Inflate(double dist) override
Inflates the cell.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void GetEdgeToAdjacentFaces(vtkIdType edgeId, const vtkIdType *&faceIds)=0
Get the ids of the two adjacent faces to edge of id edgeId.
vtkDoubleArray * ClipScalars
Definition: vtkCell3D.h:207
virtual vtkIdType GetPointToIncidentFaces(vtkIdType pointId, const vtkIdType *&faceIds)=0
Get the ids of the incident faces point of id pointId.
object to represent cell connectivity
Definition: vtkCellArray.h:296
represent and manipulate cell attribute data
Definition: vtkCellData.h:151
abstract class to specify cell behavior
Definition: vtkCell.h:150
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:165
dynamic, self-adjusting array of double
Abstract class in support of both point location and point insertion.
a simple class to control print indentation
Definition: vtkIndent.h:119
helper class to generate triangulations
represent and manipulate point attribute data
Definition: vtkPointData.h:151
a 3D cell that represents a tetrahedron
Definition: vtkTetra.h:114
@ value
Definition: vtkX3D.h:226
int vtkIdType
Definition: vtkType.h:332