VTK  9.7.20260727
vtkCellValidator.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
76
77#ifndef vtkCellValidator_h
78#define vtkCellValidator_h
79
80#include "vtkCellStatus.h" // For enum class.
81#include "vtkDataSetAlgorithm.h"
82#include "vtkFiltersGeneralModule.h" // For export macro.
83
84VTK_ABI_NAMESPACE_BEGIN
85class vtkCell;
86class vtkGenericCell;
87class vtkEmptyCell;
88class vtkVertex;
89class vtkPolyVertex;
90class vtkLine;
91class vtkPolyLine;
92class vtkTriangle;
94class vtkPolygon;
95class vtkPixel;
96class vtkQuad;
97class vtkTetra;
98class vtkVoxel;
99class vtkHexahedron;
100class vtkWedge;
101class vtkPyramid;
104class vtkQuadraticEdge;
106class vtkQuadraticQuad;
120class vtkCubicLine;
122class vtkPolyhedron;
123class vtkLagrangeCurve;
126class vtkLagrangeTetra;
128class vtkLagrangeWedge;
129class vtkBezierCurve;
132class vtkBezierTetra;
134class vtkBezierWedge;
135
136class VTKFILTERSGENERAL_EXPORT vtkCellValidator : public vtkDataSetAlgorithm
137{
138public:
140 void PrintSelf(ostream& os, vtkIndent indent) override;
141
144
146
147 static void PrintState(State state, ostream& os, vtkIndent indent);
148
149 static State Check(vtkGenericCell*, double tolerance);
150 static State Check(vtkCell*, double tolerance);
151
152 static State Check(vtkEmptyCell*, double tolerance);
153 static State Check(vtkVertex*, double tolerance);
154 static State Check(vtkPolyVertex*, double tolerance);
155 static State Check(vtkLine*, double tolerance);
156 static State Check(vtkPolyLine*, double tolerance);
157 static State Check(vtkTriangle*, double tolerance);
158 static State Check(vtkTriangleStrip*, double tolerance);
159 static State Check(vtkPolygon*, double tolerance);
160 static State Check(vtkPixel*, double tolerance);
161 static State Check(vtkQuad*, double tolerance);
162 static State Check(vtkTetra*, double tolerance);
163 static State Check(vtkVoxel*, double tolerance);
164 static State Check(vtkHexahedron*, double tolerance);
165 static State Check(vtkWedge*, double tolerance);
166 static State Check(vtkPyramid*, double tolerance);
167 static State Check(vtkPentagonalPrism*, double tolerance);
168 static State Check(vtkHexagonalPrism*, double tolerance);
169 static State Check(vtkQuadraticEdge*, double tolerance);
170 static State Check(vtkQuadraticTriangle*, double tolerance);
171 static State Check(vtkQuadraticQuad*, double tolerance);
172 static State Check(vtkQuadraticPolygon*, double tolerance);
173 static State Check(vtkQuadraticTetra*, double tolerance);
174 static State Check(vtkQuadraticHexahedron*, double tolerance);
175 static State Check(vtkQuadraticWedge*, double tolerance);
176 static State Check(vtkQuadraticPyramid*, double tolerance);
177 static State Check(vtkBiQuadraticQuad*, double tolerance);
178 static State Check(vtkTriQuadraticHexahedron*, double tolerance);
179 static State Check(vtkTriQuadraticPyramid*, double tolerance);
180 static State Check(vtkQuadraticLinearQuad*, double tolerance);
181 static State Check(vtkQuadraticLinearWedge*, double tolerance);
182 static State Check(vtkBiQuadraticQuadraticWedge*, double tolerance);
184 static State Check(vtkBiQuadraticTriangle*, double tolerance);
185 static State Check(vtkCubicLine*, double tolerance);
186 static State Check(vtkConvexPointSet*, double tolerance);
187 static State Check(vtkPolyhedron*, double tolerance);
188 static State Check(vtkLagrangeCurve*, double tolerance);
189 static State Check(vtkLagrangeTriangle*, double tolerance);
190 static State Check(vtkLagrangeQuadrilateral*, double tolerance);
191 static State Check(vtkLagrangeTetra*, double tolerance);
192 static State Check(vtkLagrangeHexahedron*, double tolerance);
193 static State Check(vtkLagrangeWedge*, double tolerance);
194 static State Check(vtkBezierCurve*, double tolerance);
195 static State Check(vtkBezierTriangle*, double tolerance);
196 static State Check(vtkBezierQuadrilateral*, double tolerance);
197 static State Check(vtkBezierTetra*, double tolerance);
198 static State Check(vtkBezierHexahedron*, double tolerance);
199 static State Check(vtkBezierWedge*, double tolerance);
200
202
207 vtkSetClampMacro(Tolerance, double, 0.0, VTK_DOUBLE_MAX);
208 vtkGetMacro(Tolerance, double);
210
222 vtkBooleanMacro(AutoTolerance, vtkTypeBool);
224
241 static void SetPlanarityTolerance(double tolerance);
242 static double GetPlanarityTolerance();
244protected:
246 ~vtkCellValidator() override = default;
247
248 double Tolerance;
250
252
253 static bool NoIntersectingEdges(vtkCell* cell, double tolerance);
254 static bool ContiguousEdges(vtkCell* twoDimensionalCell, double tolerance);
255 static State Convex(vtkCell* cell, double tolerance);
256 static bool FacesAreOrientedCorrectly(vtkCell* threeDimensionalCell, double tolerance);
257
258private:
259 vtkCellValidator(const vtkCellValidator&) = delete;
260 void operator=(const vtkCellValidator&) = delete;
261
262 static State NoIntersectingFacesStatus(vtkCell* cell, double tolerance);
263};
264
265VTK_ABI_NAMESPACE_END
266#endif
A 3D cell that represents an arbitrary order Bezier hex.
A 3D cell that represents an arbitrary order Bezier tetrahedron.
A 2D cell that represents an arbitrary order Bezier triangle.
A 3D cell that represents an arbitrary order Bezier wedge.
cell represents a parabolic, 9-node isoparametric quad
cell represents a biquadratic, 24-node isoparametric hexahedron
cell represents a parabolic, 18-node isoparametric wedge
cell represents a parabolic, isoparametric triangle
static State Check(vtkTriangle *, double tolerance)
static State Check(vtkPentagonalPrism *, double tolerance)
static State Check(vtkLagrangeTetra *, double tolerance)
static State Check(vtkQuadraticEdge *, double tolerance)
static State Check(vtkPolyVertex *, double tolerance)
static State Check(vtkEmptyCell *, double tolerance)
static State Check(vtkPolygon *, double tolerance)
static State Check(vtkLine *, double tolerance)
static State Check(vtkLagrangeQuadrilateral *, double tolerance)
static State Check(vtkHexagonalPrism *, double tolerance)
static State Check(vtkBiQuadraticQuadraticHexahedron *, double tolerance)
static State Check(vtkQuadraticLinearQuad *, double tolerance)
static State Check(vtkCell *, double tolerance)
vtkCellStatus State
static State Check(vtkGenericCell *, double tolerance)
static State Check(vtkTetra *, double tolerance)
static State Check(vtkQuad *, double tolerance)
static State Check(vtkQuadraticQuad *, double tolerance)
static State Check(vtkWedge *, double tolerance)
static State Check(vtkQuadraticLinearWedge *, double tolerance)
static State Check(vtkPolyLine *, double tolerance)
static void SetPlanarityTolerance(double tolerance)
static State Check(vtkPyramid *, double tolerance)
static State Check(vtkLagrangeCurve *, double tolerance)
static State Check(vtkLagrangeWedge *, double tolerance)
static State Convex(vtkCell *cell, double tolerance)
static State Check(vtkBezierQuadrilateral *, double tolerance)
static State Check(vtkQuadraticTriangle *, double tolerance)
static State Check(vtkBiQuadraticQuad *, double tolerance)
static bool NoIntersectingEdges(vtkCell *cell, double tolerance)
static State Check(vtkCubicLine *, double tolerance)
static State Check(vtkVoxel *, double tolerance)
~vtkCellValidator() override=default
static bool ContiguousEdges(vtkCell *twoDimensionalCell, double tolerance)
static double GetPlanarityTolerance()
static State Check(vtkBezierHexahedron *, double tolerance)
static State Check(vtkBezierTriangle *, double tolerance)
static State Check(vtkQuadraticPolygon *, double tolerance)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static bool FacesAreOrientedCorrectly(vtkCell *threeDimensionalCell, double tolerance)
static State Check(vtkVertex *, double tolerance)
static State Check(vtkConvexPointSet *, double tolerance)
static State Check(vtkBezierWedge *, double tolerance)
static State Check(vtkPolyhedron *, double tolerance)
static State Check(vtkQuadraticWedge *, double tolerance)
static State Check(vtkTriangleStrip *, double tolerance)
static State Check(vtkBezierCurve *, double tolerance)
static State Check(vtkBiQuadraticTriangle *, double tolerance)
static State Check(vtkPixel *, double tolerance)
static State Check(vtkBiQuadraticQuadraticWedge *, double tolerance)
static void PrintState(State state, ostream &os, vtkIndent indent)
static State Check(vtkTriQuadraticHexahedron *, double tolerance)
static State Check(vtkQuadraticTetra *, double tolerance)
static vtkCellValidator * New()
Construct to compute the validity of cells.
static State Check(vtkHexahedron *, double tolerance)
static State Check(vtkTriQuadraticPyramid *, double tolerance)
static State Check(vtkQuadraticHexahedron *, double tolerance)
static State Check(vtkQuadraticPyramid *, double tolerance)
static State Check(vtkBezierTetra *, double tolerance)
vtkTypeBool AutoTolerance
static State Check(vtkLagrangeHexahedron *, double tolerance)
static State Check(vtkLagrangeTriangle *, double tolerance)
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
abstract class to specify cell behavior
Definition vtkCell.h:130
a 3D cell defined by a set of convex points
cell represents a cubic , isoparametric 1D line
an empty cell used as a place-holder during processing
provides thread-safe access to cells
a 3D cell that represents a prism with hexagonal base
a cell that represents a linear 3D hexahedron
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
A 3D cell that represents an arbitrary order Lagrange hex.
A 3D cell that represents an arbitrary order Lagrange tetrahedron.
A 2D cell that represents an arbitrary order Lagrange triangle.
A 3D cell that represents an arbitrary order Lagrange wedge.
cell represents a 1D line
Definition vtkLine.h:132
a 3D cell that represents a convex prism with pentagonal base
a cell that represents an orthogonal quadrilateral
Definition vtkPixel.h:66
cell represents a set of 1D lines
cell represents a set of 0D vertices
a cell that represents an n-sided polygon
Definition vtkPolygon.h:139
A 3D cell defined by a set of polygonal faces.
a 3D cell that represents a linear pyramid
Definition vtkPyramid.h:95
a cell that represents a 2D quadrilateral
Definition vtkQuad.h:87
cell represents a parabolic, isoparametric edge
cell represents a parabolic, 20-node isoparametric hexahedron
cell represents a quadratic-linear, 6-node isoparametric quad
cell represents a, 12-node isoparametric wedge
a cell that represents a parabolic n-sided polygon
cell represents a parabolic, 13-node isoparametric pyramid
cell represents a parabolic, 8-node isoparametric quad
cell represents a parabolic, 10-node isoparametric tetrahedron
cell represents a parabolic, isoparametric triangle
cell represents a parabolic, 15-node isoparametric wedge
a 3D cell that represents a tetrahedron
Definition vtkTetra.h:113
cell represents a parabolic, 27-node isoparametric hexahedron
cell represents a parabolic, 19-node isoparametric pyramid
a cell that represents a triangle strip
a cell that represents a triangle
a cell that represents a 3D point
Definition vtkVertex.h:92
a cell that represents a 3D orthogonal parallelepiped
Definition vtkVoxel.h:80
a 3D cell that represents a linear wedge
Definition vtkWedge.h:85
int vtkTypeBool
Definition vtkABI.h:64
vtkCellStatus
Diagnostic values indicating how well-specified a cell is.
#define VTK_DOUBLE_MAX
Definition vtkType.h:202