VTK  9.3.0
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
37#ifndef vtkRectilinearGridToTetrahedra_h
38#define vtkRectilinearGridToTetrahedra_h
39
40// ways to create the mesh from voxels
41#define VTK_VOXEL_TO_12_TET 12
42#define VTK_VOXEL_TO_5_TET 5
43#define VTK_VOXEL_TO_6_TET 6
44#define VTK_VOXEL_TO_5_AND_12_TET -1
45
46#include "vtkFiltersGeneralModule.h" // For export macro
48VTK_ABI_NAMESPACE_BEGIN
51class vtkIdList;
52class vtkCellArray;
53class vtkPoints;
54
55class VTKFILTERSGENERAL_EXPORT vtkRectilinearGridToTetrahedra : public vtkUnstructuredGridAlgorithm
56{
57public:
59 void PrintSelf(ostream& os, vtkIndent indent) override;
60
65
67
71 void SetTetraPerCellTo5() { SetTetraPerCell(VTK_VOXEL_TO_5_TET); }
72 void SetTetraPerCellTo6() { SetTetraPerCell(VTK_VOXEL_TO_6_TET); }
73 void SetTetraPerCellTo12() { SetTetraPerCell(VTK_VOXEL_TO_12_TET); }
75 vtkSetMacro(TetraPerCell, int);
76 vtkGetMacro(TetraPerCell, int);
78
80
84 vtkSetMacro(RememberVoxelId, vtkTypeBool);
85 vtkGetMacro(RememberVoxelId, vtkTypeBool);
86 vtkBooleanMacro(RememberVoxelId, vtkTypeBool);
88
96 void SetInput(const double Extent[3], const double Spacing[3], double tol = 0.001);
100 void SetInput(double ExtentX, double ExtentY, double ExtentZ, double SpacingX, double SpacingY,
101 double SpacingZ, double tol = 0.001);
102
103protected:
106
108
111
113
114private:
116
117 void operator=(const vtkRectilinearGridToTetrahedra&) = delete;
118
123 static void DetermineGridDivisionTypes(vtkRectilinearGrid* RectGrid,
124 vtkSignedCharArray* VoxelSubdivisionType, const int& TetraPerCell);
125
129 static void GridToTetMesh(vtkRectilinearGrid* RectGrid, vtkSignedCharArray* VoxelSubdivisionType,
130 const int& TetraPerCell, const int& RememberVoxelId, vtkUnstructuredGrid* TetMesh,
132
139 static int TetrahedralizeVoxel(
140 vtkIdList* VoxelCorners, const int& DivisionType, vtkPoints* NodeList, vtkCellArray* TetList);
141
146 static void TetrahedralizeAddCenterPoint(vtkIdList* VoxelCorners, vtkPoints* NodeList);
147};
148
149VTK_ABI_NAMESPACE_END
150#endif /* vtkRectilinearGridToTetrahedra_h */
object to represent cell connectivity
list of point or cell ids
Definition vtkIdList.h:23
a simple class to control print indentation
Definition vtkIndent.h:29
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
represent and manipulate 3D points
Definition vtkPoints.h:29
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.
static vtkRectilinearGridToTetrahedra * New()
Form 5 Tetrahedra per cube.
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...
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