VTK  9.3.20240328
vtkRectilinearGridToTetrahedra.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
56 #ifndef vtkRectilinearGridToTetrahedra_h
57 #define vtkRectilinearGridToTetrahedra_h
58 
59 // ways to create the mesh from voxels
60 #define VTK_VOXEL_TO_12_TET 12
61 #define VTK_VOXEL_TO_5_TET 5
62 #define VTK_VOXEL_TO_6_TET 6
63 #define VTK_VOXEL_TO_5_AND_12_TET -1
64 
65 #include "vtkFiltersGeneralModule.h" // For export macro
67 VTK_ABI_NAMESPACE_BEGIN
68 class vtkRectilinearGrid;
69 class vtkSignedCharArray;
70 class vtkIdList;
71 class vtkCellArray;
72 class vtkPoints;
73 
74 class VTKFILTERSGENERAL_EXPORT vtkRectilinearGridToTetrahedra : public vtkUnstructuredGridAlgorithm
75 {
76 public:
78  void PrintSelf(ostream& os, vtkIndent indent) override;
79 
84 
86 
90  void SetTetraPerCellTo5() { SetTetraPerCell(VTK_VOXEL_TO_5_TET); }
91  void SetTetraPerCellTo6() { SetTetraPerCell(VTK_VOXEL_TO_6_TET); }
92  void SetTetraPerCellTo12() { SetTetraPerCell(VTK_VOXEL_TO_12_TET); }
94  vtkSetMacro(TetraPerCell, int);
95  vtkGetMacro(TetraPerCell, int);
97 
99 
103  vtkSetMacro(RememberVoxelId, vtkTypeBool);
104  vtkGetMacro(RememberVoxelId, vtkTypeBool);
105  vtkBooleanMacro(RememberVoxelId, vtkTypeBool);
107 
115  void SetInput(const double Extent[3], const double Spacing[3], double tol = 0.001);
119  void SetInput(double ExtentX, double ExtentY, double ExtentZ, double SpacingX, double SpacingY,
120  double SpacingZ, double tol = 0.001);
121 
122 protected:
124  ~vtkRectilinearGridToTetrahedra() override = default;
125 
127 
130 
132 
133 private:
135 
136  void operator=(const vtkRectilinearGridToTetrahedra&) = delete;
137 
142  static void DetermineGridDivisionTypes(vtkRectilinearGrid* RectGrid,
143  vtkSignedCharArray* VoxelSubdivisionType, const int& TetraPerCell);
144 
148  static void GridToTetMesh(vtkRectilinearGrid* RectGrid, vtkSignedCharArray* VoxelSubdivisionType,
149  const int& TetraPerCell, const int& RememberVoxelId, vtkUnstructuredGrid* TetMesh,
151 
158  static int TetrahedralizeVoxel(
159  vtkIdList* VoxelCorners, const int& DivisionType, vtkPoints* NodeList, vtkCellArray* TetList);
160 
165  static void TetrahedralizeAddCenterPoint(vtkIdList* VoxelCorners, vtkPoints* NodeList);
166 };
167 
168 VTK_ABI_NAMESPACE_END
169 #endif /* vtkRectilinearGridToTetrahedra_h */
object to represent cell connectivity
Definition: vtkCellArray.h:285
list of point or cell ids
Definition: vtkIdList.h:132
a simple class to control print indentation
Definition: vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
represent and manipulate 3D points
Definition: vtkPoints.h:138
create a Tetrahedral mesh from a RectilinearGrid
void SetTetraPerCellTo5And12()
Set the method to divide each cell (voxel) in the RectilinearGrid into tetrahedra.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetTetraPerCellTo6()
Set the method to divide each cell (voxel) in the RectilinearGrid into tetrahedra.
void SetInput(double ExtentX, double ExtentY, double ExtentZ, double SpacingX, double SpacingY, double SpacingZ, double tol=0.001)
This version of the function for the wrappers.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
void SetInput(const double Extent[3], const double Spacing[3], double tol=0.001)
This function for convenience for creating a Rectilinear Grid If Spacing does not fit evenly into ext...
static vtkRectilinearGridToTetrahedra * New()
Form 5 Tetrahedra per cube.
void SetTetraPerCellTo5()
Set the method to divide each cell (voxel) in the RectilinearGrid into tetrahedra.
~vtkRectilinearGridToTetrahedra() override=default
void SetTetraPerCellTo12()
Set the method to divide each cell (voxel) in the RectilinearGrid into tetrahedra.
int FillInputPortInformation(int, vtkInformation *) override
Fill the input port information objects for this algorithm.
a dataset that is topologically regular with variable spacing in the three coordinate directions
dynamic, self-adjusting array of signed char
Superclass for algorithms that produce only unstructured grid as output.
dataset represents arbitrary combinations of all possible cell types
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_VOXEL_TO_12_TET
#define VTK_VOXEL_TO_5_TET
#define VTK_VOXEL_TO_6_TET
#define VTK_VOXEL_TO_5_AND_12_TET