VTK  9.0.20210301
vtkRectilinearGridToTetrahedra.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkRectilinearGridToTetrahedra.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 =========================================================================*/
46 #ifndef vtkRectilinearGridToTetrahedra_h
47 #define vtkRectilinearGridToTetrahedra_h
48 
49 // ways to create the mesh from voxels
50 #define VTK_VOXEL_TO_12_TET 12
51 #define VTK_VOXEL_TO_5_TET 5
52 #define VTK_VOXEL_TO_6_TET 6
53 #define VTK_VOXEL_TO_5_AND_12_TET -1
54 
55 #include "vtkFiltersGeneralModule.h" // For export macro
57 class vtkRectilinearGrid;
58 class vtkSignedCharArray;
59 class vtkIdList;
60 class vtkCellArray;
61 class vtkPoints;
62 
63 class VTKFILTERSGENERAL_EXPORT vtkRectilinearGridToTetrahedra : public vtkUnstructuredGridAlgorithm
64 {
65 public:
67  void PrintSelf(ostream& os, vtkIndent indent) override;
68 
73 
75 
79  void SetTetraPerCellTo5() { SetTetraPerCell(VTK_VOXEL_TO_5_TET); }
80  void SetTetraPerCellTo6() { SetTetraPerCell(VTK_VOXEL_TO_6_TET); }
81  void SetTetraPerCellTo12() { SetTetraPerCell(VTK_VOXEL_TO_12_TET); }
83  vtkSetMacro(TetraPerCell, int);
84  vtkGetMacro(TetraPerCell, int);
86 
88 
92  vtkSetMacro(RememberVoxelId, vtkTypeBool);
93  vtkGetMacro(RememberVoxelId, vtkTypeBool);
94  vtkBooleanMacro(RememberVoxelId, vtkTypeBool);
96 
104  void SetInput(const double Extent[3], const double Spacing[3], const double tol = 0.001);
108  void SetInput(const double ExtentX, const double ExtentY, const double ExtentZ,
109  const double SpacingX, const double SpacingY, const double SpacingZ, const double tol = 0.001);
110 
111 protected:
113  ~vtkRectilinearGridToTetrahedra() override = default;
114 
116 
119 
121 
122 private:
124 
125  void operator=(const vtkRectilinearGridToTetrahedra&) = delete;
126 
131  static void DetermineGridDivisionTypes(vtkRectilinearGrid* RectGrid,
132  vtkSignedCharArray* VoxelSubdivisionType, const int& TetraPerCell);
133 
137  static void GridToTetMesh(vtkRectilinearGrid* RectGrid, vtkSignedCharArray* VoxelSubdivisionType,
138  const int& TetraPerCell, const int& RememberVoxelId, vtkUnstructuredGrid* TetMesh);
139 
146  static int TetrahedralizeVoxel(
147  vtkIdList* VoxelCorners, const int& DivisionType, vtkPoints* NodeList, vtkCellArray* TetList);
148 
153  static inline void TetrahedralizeAddCenterPoint(vtkIdList* VoxelCorners, vtkPoints* NodeList);
154 };
155 
156 #endif /* vtkRectilinearGridToTetrahedra_h */
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:34
vtkRectilinearGridToTetrahedra::TetraPerCell
int TetraPerCell
Definition: vtkRectilinearGridToTetrahedra.h:118
vtkRectilinearGridToTetrahedra::vtkRectilinearGridToTetrahedra
vtkRectilinearGridToTetrahedra()
vtkRectilinearGrid
a dataset that is topologically regular with variable spacing in the three coordinate directions
Definition: vtkRectilinearGrid.h:52
vtkRectilinearGridToTetrahedra
create a Tetrahedral mesh from a RectilinearGrid
Definition: vtkRectilinearGridToTetrahedra.h:64
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:36
vtkRectilinearGridToTetrahedra::SetTetraPerCellTo5And12
void SetTetraPerCellTo5And12()
Definition: vtkRectilinearGridToTetrahedra.h:82
vtkRectilinearGridToTetrahedra::SetInput
void SetInput(const double Extent[3], const double Spacing[3], const double tol=0.001)
This function for convenience for creating a Rectilinear Grid If Spacing does not fit evenly into ext...
vtkRectilinearGridToTetrahedra::SetTetraPerCellTo12
void SetTetraPerCellTo12()
Definition: vtkRectilinearGridToTetrahedra.h:81
vtkSignedCharArray
dynamic, self-adjusting array of signed char
Definition: vtkSignedCharArray.h:36
vtkRectilinearGridToTetrahedra::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
VTK_VOXEL_TO_12_TET
#define VTK_VOXEL_TO_12_TET
Definition: vtkRectilinearGridToTetrahedra.h:50
vtkRectilinearGridToTetrahedra::RequestData
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkCellArray
object to represent cell connectivity
Definition: vtkCellArray.h:181
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:31
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:74
vtkRectilinearGridToTetrahedra::New
static vtkRectilinearGridToTetrahedra * New()
Form 5 Tetrahedra per cube.
vtkRectilinearGridToTetrahedra::~vtkRectilinearGridToTetrahedra
~vtkRectilinearGridToTetrahedra() override=default
VTK_VOXEL_TO_5_TET
#define VTK_VOXEL_TO_5_TET
Definition: vtkRectilinearGridToTetrahedra.h:51
vtkRectilinearGridToTetrahedra::FillInputPortInformation
int FillInputPortInformation(int, vtkInformation *) override
Fill the input port information objects for this algorithm.
vtkRectilinearGridToTetrahedra::SetTetraPerCellTo6
void SetTetraPerCellTo6()
Definition: vtkRectilinearGridToTetrahedra.h:80
VTK_VOXEL_TO_6_TET
#define VTK_VOXEL_TO_6_TET
Definition: vtkRectilinearGridToTetrahedra.h:52
vtkRectilinearGridToTetrahedra::SetInput
void SetInput(const double ExtentX, const double ExtentY, const double ExtentZ, const double SpacingX, const double SpacingY, const double SpacingZ, const double tol=0.001)
This version of the function for the wrappers.
vtkRectilinearGridToTetrahedra::RememberVoxelId
vtkTypeBool RememberVoxelId
Definition: vtkRectilinearGridToTetrahedra.h:117
vtkUnstructuredGridAlgorithm.h
vtkUnstructuredGridAlgorithm
Superclass for algorithms that produce only unstructured grid as output.
Definition: vtkUnstructuredGridAlgorithm.h:41
vtkUnstructuredGrid
dataset represents arbitrary combinations of all possible cell types
Definition: vtkUnstructuredGrid.h:94
VTK_VOXEL_TO_5_AND_12_TET
#define VTK_VOXEL_TO_5_AND_12_TET
Definition: vtkRectilinearGridToTetrahedra.h:53
vtkRectilinearGridToTetrahedra::SetTetraPerCellTo5
void SetTetraPerCellTo5()
Set the method to divide each cell (voxel) in the RectilinearGrid into tetrahedra.
Definition: vtkRectilinearGridToTetrahedra.h:79
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69