VTK  9.2.6
vtkCellQuality.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkCellQuality.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=========================================================================*/
35#ifndef vtkCellQuality_h
36#define vtkCellQuality_h
37
38#include "vtkDataSetAlgorithm.h"
39#include "vtkFiltersVerdictModule.h" // For export macro
40#include "vtkMeshQuality.h" // For QualityMeasureType
41
42class vtkCell;
43class vtkCellQualityFunctor;
44class vtkDataArray;
45class vtkIdList;
46class vtkPoints;
47
48class VTKFILTERSVERDICT_EXPORT vtkCellQuality : public vtkDataSetAlgorithm
49{
50private:
51 friend class vtkCellQualityFunctor;
52
53public:
54 void PrintSelf(ostream& os, vtkIndent indent) override;
57
59
72 virtual void SetQualityMeasure(int measure)
73 {
74 this->SetQualityMeasure(static_cast<QualityMeasureTypes>(measure));
75 }
77 void SetQualityMeasureToArea() { this->SetQualityMeasure(QualityMeasureTypes::AREA); }
79 {
80 this->SetQualityMeasure(QualityMeasureTypes::ASPECT_FROBENIUS);
81 }
83 {
84 this->SetQualityMeasure(QualityMeasureTypes::ASPECT_GAMMA);
85 }
87 {
88 this->SetQualityMeasure(QualityMeasureTypes::ASPECT_RATIO);
89 }
91 {
92 this->SetQualityMeasure(QualityMeasureTypes::COLLAPSE_RATIO);
93 }
94 void SetQualityMeasureToCondition() { this->SetQualityMeasure(QualityMeasureTypes::CONDITION); }
95 void SetQualityMeasureToDiagonal() { this->SetQualityMeasure(QualityMeasureTypes::DIAGONAL); }
96 void SetQualityMeasureToDimension() { this->SetQualityMeasure(QualityMeasureTypes::DIMENSION); }
97 void SetQualityMeasureToDistortion() { this->SetQualityMeasure(QualityMeasureTypes::DISTORTION); }
98 void SetQualityMeasureToJacobian() { this->SetQualityMeasure(QualityMeasureTypes::JACOBIAN); }
99 void SetQualityMeasureToMaxAngle() { this->SetQualityMeasure(QualityMeasureTypes::MAX_ANGLE); }
101 {
102 this->SetQualityMeasure(QualityMeasureTypes::MAX_ASPECT_FROBENIUS);
103 }
105 {
106 this->SetQualityMeasure(QualityMeasureTypes::MAX_EDGE_RATIO);
107 }
109 {
110 this->SetQualityMeasure(QualityMeasureTypes::MED_ASPECT_FROBENIUS);
111 }
112 void SetQualityMeasureToMinAngle() { this->SetQualityMeasure(QualityMeasureTypes::MIN_ANGLE); }
113 void SetQualityMeasureToOddy() { this->SetQualityMeasure(QualityMeasureTypes::ODDY); }
115 {
116 this->SetQualityMeasure(QualityMeasureTypes::RADIUS_RATIO);
117 }
119 {
120 this->SetQualityMeasure(QualityMeasureTypes::RELATIVE_SIZE_SQUARED);
121 }
123 {
124 this->SetQualityMeasure(QualityMeasureTypes::SCALED_JACOBIAN);
125 }
127 {
128 this->SetQualityMeasure(QualityMeasureTypes::SHAPE_AND_SIZE);
129 }
130 void SetQualityMeasureToShape() { this->SetQualityMeasure(QualityMeasureTypes::SHAPE); }
132 {
133 this->SetQualityMeasure(QualityMeasureTypes::SHEAR_AND_SIZE);
134 }
135 void SetQualityMeasureToShear() { this->SetQualityMeasure(QualityMeasureTypes::SHEAR); }
136 void SetQualityMeasureToSkew() { this->SetQualityMeasure(QualityMeasureTypes::SKEW); }
137 void SetQualityMeasureToStretch() { this->SetQualityMeasure(QualityMeasureTypes::STRETCH); }
138 void SetQualityMeasureToTaper() { this->SetQualityMeasure(QualityMeasureTypes::TAPER); }
139 void SetQualityMeasureToVolume() { this->SetQualityMeasure(QualityMeasureTypes::VOLUME); }
140 void SetQualityMeasureToWarpage() { this->SetQualityMeasure(QualityMeasureTypes::WARPAGE); }
142
144
150 vtkSetMacro(UnsupportedGeometry, double);
151 vtkGetMacro(UnsupportedGeometry, double);
153
155
162 vtkSetMacro(UndefinedQuality, double);
163 vtkGetMacro(UndefinedQuality, double);
165
169
170protected:
171 ~vtkCellQuality() override;
173
193
224
249
260
277
305
313
320
322
324
325 // Default return value for unsupported geometry
327
328 // Default return value for qualities that are not well-defined for certain
329 // types of supported geometries. e.g. volume of a triangle
331
332private:
333 vtkIdList* PointIds;
334 vtkPoints* Points;
335
336 vtkCellQuality(const vtkCellQuality&) = delete;
337 void operator=(const vtkCellQuality&) = delete;
338};
339
340#endif // vtkCellQuality_h
Calculate functions of quality of the elements of a mesh.
double UnsupportedGeometry
vtkMeshQuality::QualityMeasureTypes QualityMeasure
double ComputeQuadQuality(vtkCell *)
Set/Get the particular estimator used to measure the quality of quadrilaterals.
double PixelArea(vtkCell *)
void SetQualityMeasureToCondition()
Set/Get the particular estimator used to function the quality of all supported geometries.
double ComputeWedgeQuality(vtkCell *)
Set/Get the particular estimator used to measure the quality of wedges.
void SetQualityMeasureToShearAndSize()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToScaledJacobian()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToAspectRatio()
Set/Get the particular estimator used to function the quality of all supported geometries.
double ComputePyramidQuality(vtkCell *)
Set/Get the particular estimator used to measure the quality of pyramids.
void SetQualityMeasureToRelativeSizeSquared()
Set/Get the particular estimator used to function the quality of all supported geometries.
double PolygonArea(vtkCell *)
void SetQualityMeasureToAspectFrobenius()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToDistortion()
Set/Get the particular estimator used to function the quality of all supported geometries.
~vtkCellQuality() override
vtkGetEnumMacro(QualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToShape()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToOddy()
Set/Get the particular estimator used to function the quality of all supported geometries.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetQualityMeasureToRadiusRatio()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToMaxAngle()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToDimension()
Set/Get the particular estimator used to function the quality of all supported geometries.
double ComputeTriangleStripQuality(vtkCell *)
Set/Get the particular estimator used to measure the quality of triangle strip.
void SetQualityMeasureToMaxEdgeRatio()
Set/Get the particular estimator used to function the quality of all supported geometries.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
void SetQualityMeasureToCollapseRatio()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToTaper()
Set/Get the particular estimator used to function the quality of all supported geometries.
virtual void SetQualityMeasure(int measure)
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToShapeAndSize()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToWarpage()
Set/Get the particular estimator used to function the quality of all supported geometries.
double ComputeTriangleQuality(vtkCell *)
Set/Get the particular estimator used to function the quality of triangles.
double TriangleStripArea(vtkCell *)
void SetQualityMeasureToVolume()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToDiagonal()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToAspectGamma()
Set/Get the particular estimator used to function the quality of all supported geometries.
static vtkCellQuality * New()
void SetQualityMeasureToArea()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToJacobian()
Set/Get the particular estimator used to function the quality of all supported geometries.
vtkSetEnumMacro(QualityMeasure, QualityMeasureTypes)
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToSkew()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToMaxAspectFrobenius()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToStretch()
Set/Get the particular estimator used to function the quality of all supported geometries.
double ComputeTetQuality(vtkCell *)
Set/Get the particular estimator used to measure the quality of tetrahedra.
void SetQualityMeasureToMinAngle()
Set/Get the particular estimator used to function the quality of all supported geometries.
void SetQualityMeasureToMedAspectFrobenius()
Set/Get the particular estimator used to function the quality of all supported geometries.
double ComputePixelQuality(vtkCell *)
Set/Get the particular estimator used to measure the quality of pixel.
double ComputeHexQuality(vtkCell *)
Set/Get the particular estimator used to measure the quality of hexahedra.
void SetQualityMeasureToShear()
Set/Get the particular estimator used to function the quality of all supported geometries.
abstract class to specify cell behavior
Definition vtkCell.h:58
abstract superclass for arrays of numeric data
Superclass for algorithms that produce output of the same type as input.
list of point or cell ids
Definition vtkIdList.h:31
a simple class to control print indentation
Definition vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
QualityMeasureTypes
Enum which lists the Quality Measures Types.
represent and manipulate 3D points
Definition vtkPoints.h:34