VTK
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=========================================================================*/
49#ifndef vtkRectilinearGridToTetrahedra_h
50#define vtkRectilinearGridToTetrahedra_h
51
52// ways to create the mesh from voxels
53#define VTK_VOXEL_TO_12_TET 12
54#define VTK_VOXEL_TO_5_TET 5
55#define VTK_VOXEL_TO_6_TET 6
56#define VTK_VOXEL_TO_5_AND_12_TET -1
57
58#include "vtkFiltersGeneralModule.h" // For export macro
62class vtkIdList;
63class vtkCellArray;
64class vtkPoints;
65
66class VTKFILTERSGENERAL_EXPORT vtkRectilinearGridToTetrahedra : public vtkUnstructuredGridAlgorithm
67{
68public:
70 void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
71
76
78
82 void SetTetraPerCellTo5() {SetTetraPerCell(VTK_VOXEL_TO_5_TET);};
83 void SetTetraPerCellTo6() {SetTetraPerCell(VTK_VOXEL_TO_6_TET);};
84 void SetTetraPerCellTo12() {SetTetraPerCell(VTK_VOXEL_TO_12_TET);};
86 vtkSetMacro(TetraPerCell,int);
87 vtkGetMacro(TetraPerCell,int);
89
91
95 vtkSetMacro(RememberVoxelId,int);
96 vtkGetMacro(RememberVoxelId,int);
97 vtkBooleanMacro(RememberVoxelId,int);
99
107 void SetInput(const double Extent[3], const double Spacing[3],
108 const double tol=0.001);
112 void SetInput(const double ExtentX,
113 const double ExtentY,
114 const double ExtentZ,
115 const double SpacingX,
116 const double SpacingY,
117 const double SpacingZ,
118 const double tol=0.001);
119
120protected:
123
125
128
130
131 private:
133
134 void operator=(const vtkRectilinearGridToTetrahedra&) VTK_DELETE_FUNCTION;
135
140 static void DetermineGridDivisionTypes(vtkRectilinearGrid *RectGrid,
141 vtkSignedCharArray *VoxelSubdivisionType,
142 const int &TetraPerCell);
143
147 static void GridToTetMesh(vtkRectilinearGrid *RectGrid,
148 vtkSignedCharArray *VoxelSubdivisionType,
149 const int &TetraPerCell,
150 const int &RememberVoxelId,
151 vtkUnstructuredGrid *TetMesh);
152
159 static int TetrahedralizeVoxel(vtkIdList *VoxelCorners,
160 const int &DivisionType,
161 vtkPoints *NodeList,
162 vtkCellArray *TetList);
163
168 static inline void TetrahedralizeAddCenterPoint(vtkIdList *VoxelCorners,
169 vtkPoints *NodeList);
170
171};
172
173#endif /* vtkRectilinearGridToTetrahedra_h */
174
object to represent cell connectivity
Definition: vtkCellArray.h:51
list of point or cell ids
Definition: vtkIdList.h:37
a simple class to control print indentation
Definition: vtkIndent.h:40
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
represent and manipulate 3D points
Definition: vtkPoints.h:40
create a Tetrahedral mesh from a RectilinearGrid
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 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...
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
void SetTetraPerCellTo5()
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.
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.
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
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
#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