VTK  9.1.0
vtkBoxClipDataSet.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkBoxClipDataSet.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 =========================================================================*/
15 /*----------------------------------------------------------------------------
16  Copyright (c) Sandia Corporation
17  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
18 ----------------------------------------------------------------------------*/
19 
77 #ifndef vtkBoxClipDataSet_h
78 #define vtkBoxClipDataSet_h
79 
80 #include "vtkFiltersGeneralModule.h" // For export macro
82 
83 class vtkCell3D;
84 class vtkCellArray;
85 class vtkCellData;
86 class vtkDataArray;
88 class vtkIdList;
89 class vtkGenericCell;
90 class vtkPointData;
92 class vtkPoints;
93 
94 class VTKFILTERSGENERAL_EXPORT vtkBoxClipDataSet : public vtkUnstructuredGridAlgorithm
95 {
96 public:
98  void PrintSelf(ostream& os, vtkIndent indent) override;
99 
106 
108 
113  void SetBoxClip(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax);
114  void SetBoxClip(const double* n0, const double* o0, const double* n1, const double* o1,
115  const double* n2, const double* o2, const double* n3, const double* o3, const double* n4,
116  const double* o4, const double* n5, const double* o5);
118 
120 
124  vtkSetMacro(GenerateClipScalars, vtkTypeBool);
125  vtkGetMacro(GenerateClipScalars, vtkTypeBool);
126  vtkBooleanMacro(GenerateClipScalars, vtkTypeBool);
128 
130 
134  vtkSetMacro(GenerateClippedOutput, vtkTypeBool);
135  vtkGetMacro(GenerateClippedOutput, vtkTypeBool);
136  vtkBooleanMacro(GenerateClippedOutput, vtkTypeBool);
138 
148 
153  virtual int GetNumberOfOutputs();
155 
157 
162  vtkGetObjectMacro(Locator, vtkIncrementalPointLocator);
164 
170 
174  vtkMTimeType GetMTime() override;
175 
177 
181  vtkGetMacro(Orientation, unsigned int);
182  vtkSetMacro(Orientation, unsigned int);
184 
185  static void InterpolateEdge(vtkDataSetAttributes* attributes, vtkIdType toId, vtkIdType fromId1,
186  vtkIdType fromId2, double t);
187 
188  void MinEdgeF(const unsigned int* id_v, const vtkIdType* cellIds, unsigned int* edgF);
190  const vtkIdType* pyramId, const vtkIdType* cellIds, vtkCellArray* newCellArray);
191  void WedgeToTetra(const vtkIdType* wedgeId, const vtkIdType* cellIds, vtkCellArray* newCellArray);
192  void CellGrid(
193  vtkIdType typeobj, vtkIdType npts, const vtkIdType* cellIds, vtkCellArray* newCellArray);
194  void CreateTetra(vtkIdType npts, const vtkIdType* cellIds, vtkCellArray* newCellArray);
195  void ClipBox(vtkPoints* newPoints, vtkGenericCell* cell, vtkIncrementalPointLocator* locator,
196  vtkCellArray* tets, vtkPointData* inPD, vtkPointData* outPD, vtkCellData* inCD,
197  vtkIdType cellId, vtkCellData* outCD);
198  void ClipHexahedron(vtkPoints* newPoints, vtkGenericCell* cell,
200  vtkPointData* outPD, vtkCellData* inCD, vtkIdType cellId, vtkCellData* outCD);
202  vtkCellArray** tets, vtkPointData* inPD, vtkPointData** outPD, vtkCellData* inCD,
203  vtkIdType cellId, vtkCellData** outCD);
205  vtkIncrementalPointLocator* locator, vtkCellArray** tets, vtkPointData* inPD,
206  vtkPointData** outPD, vtkCellData* inCD, vtkIdType cellId, vtkCellData** outCD);
207 
209  vtkCellArray* tets, vtkPointData* inPD, vtkPointData* outPD, vtkCellData* inCD,
210  vtkIdType cellId, vtkCellData* outCD);
211  void ClipBoxInOut2D(vtkPoints* newPoints, vtkGenericCell* cell,
212  vtkIncrementalPointLocator* locator, vtkCellArray** tets, vtkPointData* inPD,
213  vtkPointData** outPD, vtkCellData* inCD, vtkIdType cellId, vtkCellData** outCD);
214  void ClipHexahedron2D(vtkPoints* newPoints, vtkGenericCell* cell,
216  vtkPointData* outPD, vtkCellData* inCD, vtkIdType cellId, vtkCellData* outCD);
218  vtkIncrementalPointLocator* locator, vtkCellArray** tets, vtkPointData* inPD,
219  vtkPointData** outPD, vtkCellData* inCD, vtkIdType cellId, vtkCellData** outCD);
220 
222  vtkCellArray* lines, vtkPointData* inPD, vtkPointData* outPD, vtkCellData* inCD,
223  vtkIdType cellId, vtkCellData* outCD);
224  void ClipBoxInOut1D(vtkPoints* newPoints, vtkGenericCell* cell,
225  vtkIncrementalPointLocator* locator, vtkCellArray** lines, vtkPointData* inPD,
226  vtkPointData** outPD, vtkCellData* inCD, vtkIdType cellId, vtkCellData** outCD);
227  void ClipHexahedron1D(vtkPoints* newPoints, vtkGenericCell* cell,
228  vtkIncrementalPointLocator* locator, vtkCellArray* lines, vtkPointData* inPD,
229  vtkPointData* outPD, vtkCellData* inCD, vtkIdType cellId, vtkCellData* outCD);
231  vtkIncrementalPointLocator* locator, vtkCellArray** lines, vtkPointData* inPD,
232  vtkPointData** outPD, vtkCellData* inCD, vtkIdType cellId, vtkCellData** outCD);
233 
235  vtkPointData* inPD, vtkPointData* outPD, vtkCellData* inCD, vtkIdType cellId,
236  vtkCellData* outCD);
238  vtkCellArray** verts, vtkPointData* inPD, vtkPointData** outPD, vtkCellData* inCD,
239  vtkIdType cellId, vtkCellData** outCD);
241  vtkCellArray* verts, vtkPointData* inPD, vtkPointData* outPD, vtkCellData* inCD,
242  vtkIdType cellId, vtkCellData* outCD);
244  vtkCellArray** verts, vtkPointData* inPD, vtkPointData** outPD, vtkCellData* inCD,
245  vtkIdType cellId, vtkCellData** outCD);
246 
247 protected:
249  ~vtkBoxClipDataSet() override;
250 
253 
256 
258 
259  // double MergeTolerance;
260 
261  double BoundBoxClip[3][2];
262  unsigned int Orientation;
263  double PlaneNormal[6][3]; // normal of each plane
264  double PlanePoint[6][3]; // point on the plane
265 
266 private:
267  vtkBoxClipDataSet(const vtkBoxClipDataSet&) = delete;
268  void operator=(const vtkBoxClipDataSet&) = delete;
269 };
270 
271 #endif
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:143
vtkBoxClipDataSet::MinEdgeF
void MinEdgeF(const unsigned int *id_v, const vtkIdType *cellIds, unsigned int *edgF)
vtkBoxClipDataSet::GenerateClippedOutput
vtkTypeBool GenerateClippedOutput
Definition: vtkBoxClipDataSet.h:257
vtkBoxClipDataSet::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkBoxClipDataSet::vtkBoxClipDataSet
vtkBoxClipDataSet()
vtkPointData
represent and manipulate point attribute data
Definition: vtkPointData.h:142
vtkBoxClipDataSet::ClipBox1D
void ClipBox1D(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray *lines, vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD)
vtkIdType
int vtkIdType
Definition: vtkType.h:332
vtkBoxClipDataSet::CreateTetra
void CreateTetra(vtkIdType npts, const vtkIdType *cellIds, vtkCellArray *newCellArray)
vtkDataSetAttributes
represent and manipulate attribute data in a dataset
Definition: vtkDataSetAttributes.h:170
vtkBoxClipDataSet::SetLocator
void SetLocator(vtkIncrementalPointLocator *locator)
Specify a spatial locator for merging points.
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:145
vtkBoxClipDataSet::ClipBoxInOut0D
void ClipBoxInOut0D(vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray **verts, vtkPointData *inPD, vtkPointData **outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD)
vtkBoxClipDataSet::Orientation
unsigned int Orientation
Definition: vtkBoxClipDataSet.h:262
vtkBoxClipDataSet::ClipHexahedronInOut0D
void ClipHexahedronInOut0D(vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray **verts, vtkPointData *inPD, vtkPointData **outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD)
vtkBoxClipDataSet::WedgeToTetra
void WedgeToTetra(const vtkIdType *wedgeId, const vtkIdType *cellIds, vtkCellArray *newCellArray)
vtkBoxClipDataSet::ClipHexahedron1D
void ClipHexahedron1D(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray *lines, vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD)
vtkBoxClipDataSet::ClipHexahedronInOut
void ClipHexahedronInOut(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray **tets, vtkPointData *inPD, vtkPointData **outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD)
vtkBoxClipDataSet::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
vtkBoxClipDataSet::New
static vtkBoxClipDataSet * New()
Constructor of the clipping box.
vtkBoxClipDataSet::CreateDefaultLocator
void CreateDefaultLocator()
Create default locator.
vtkBoxClipDataSet::RequestData
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkCell3D
abstract class to specify 3D cell interface
Definition: vtkCell3D.h:40
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkBoxClipDataSet
clip an unstructured grid
Definition: vtkBoxClipDataSet.h:95
vtkBoxClipDataSet::GenerateClipScalars
vtkTypeBool GenerateClipScalars
Definition: vtkBoxClipDataSet.h:255
vtkBoxClipDataSet::ClipBoxInOut
void ClipBoxInOut(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray **tets, vtkPointData *inPD, vtkPointData **outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD)
vtkBoxClipDataSet::ClipHexahedronInOut2D
void ClipHexahedronInOut2D(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray **tets, vtkPointData *inPD, vtkPointData **outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD)
vtkBoxClipDataSet::ClipBox2D
void ClipBox2D(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray *tets, vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD)
vtkBoxClipDataSet::GetClippedOutput
vtkUnstructuredGrid * GetClippedOutput()
Set the tolerance for merging clip intersection points that are near the vertices of cells.
vtkCellData
represent and manipulate cell attribute data
Definition: vtkCellData.h:142
vtkBoxClipDataSet::ClipHexahedron2D
void ClipHexahedron2D(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray *tets, vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkCellArray
object to represent cell connectivity
Definition: vtkCellArray.h:290
vtkIncrementalPointLocator
Abstract class in support of both point location and point insertion.
Definition: vtkIncrementalPointLocator.h:52
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:140
vtkBoxClipDataSet::ClipBox
void ClipBox(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray *tets, vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD)
vtkBoxClipDataSet::ClipHexahedron
void ClipHexahedron(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray *tets, vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD)
vtkBoxClipDataSet::CellGrid
void CellGrid(vtkIdType typeobj, vtkIdType npts, const vtkIdType *cellIds, vtkCellArray *newCellArray)
vtkBoxClipDataSet::ClipBox0D
void ClipBox0D(vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray *verts, vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD)
vtkBoxClipDataSet::Locator
vtkIncrementalPointLocator * Locator
Definition: vtkBoxClipDataSet.h:254
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:183
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkBoxClipDataSet::ClipHexahedronInOut1D
void ClipHexahedronInOut1D(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray **lines, vtkPointData *inPD, vtkPointData **outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD)
vtkBoxClipDataSet::ClipBoxInOut1D
void ClipBoxInOut1D(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray **lines, vtkPointData *inPD, vtkPointData **outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD)
vtkBoxClipDataSet::PyramidToTetra
void PyramidToTetra(const vtkIdType *pyramId, const vtkIdType *cellIds, vtkCellArray *newCellArray)
vtkBoxClipDataSet::GetMTime
vtkMTimeType GetMTime() override
Return the mtime also considering the locator.
vtkGenericCell
provides thread-safe access to cells
Definition: vtkGenericCell.h:116
vtkUnstructuredGridAlgorithm.h
vtkUnstructuredGridAlgorithm
Superclass for algorithms that produce only unstructured grid as output.
Definition: vtkUnstructuredGridAlgorithm.h:41
vtkBoxClipDataSet::SetBoxClip
void SetBoxClip(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
Specify the Box with which to perform the clipping.
vtkUnstructuredGrid
dataset represents arbitrary combinations of all possible cell types
Definition: vtkUnstructuredGrid.h:204
vtkBoxClipDataSet::ClipHexahedron0D
void ClipHexahedron0D(vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray *verts, vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD)
vtkBoxClipDataSet::SetBoxClip
void SetBoxClip(const double *n0, const double *o0, const double *n1, const double *o1, const double *n2, const double *o2, const double *n3, const double *o3, const double *n4, const double *o4, const double *n5, const double *o5)
Specify the Box with which to perform the clipping.
vtkBoxClipDataSet::ClipBoxInOut2D
void ClipBoxInOut2D(vtkPoints *newPoints, vtkGenericCell *cell, vtkIncrementalPointLocator *locator, vtkCellArray **tets, vtkPointData *inPD, vtkPointData **outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData **outCD)
vtkBoxClipDataSet::GetNumberOfOutputs
virtual int GetNumberOfOutputs()
Set the tolerance for merging clip intersection points that are near the vertices of cells.
vtkBoxClipDataSet::InterpolateEdge
static void InterpolateEdge(vtkDataSetAttributes *attributes, vtkIdType toId, vtkIdType fromId1, vtkIdType fromId2, double t)
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287
vtkBoxClipDataSet::~vtkBoxClipDataSet
~vtkBoxClipDataSet() override