VTK
vtkCellQuality.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkObject.cxx
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 =========================================================================*/
31 #ifndef vtkCellQuality_h
32 #define vtkCellQuality_h
33 
34 #include "vtkFiltersVerdictModule.h" // For export macro
35 #include "vtkDataSetAlgorithm.h"
36 
37 class vtkCell;
38 class vtkDataArray;
39 class vtkIdList;
40 class vtkPoints;
41 
43 {
44  //BTX
45  enum
46  {
47  NONE = 0,
48  AREA,
49  ASPECT_BETA,
50  ASPECT_FROBENIUS,
51  ASPECT_GAMMA,
52  ASPECT_RATIO,
53  COLLAPSE_RATIO,
54  CONDITION,
55  DIAGONAL,
56  DIMENSION,
57  DISTORTION,
58  EDGE_RATIO,
59  JACOBIAN,
60  MAX_ANGLE,
61  MAX_ASPECT_FROBENIUS,
62  MAX_EDGE_RATIO,
63  MED_ASPECT_FROBENIUS,
64  MIN_ANGLE,
65  NORMAL,
66  ODDY,
67  RADIUS_RATIO,
68  RELATIVE_SIZE_SQUARED,
69  SCALED_JACOBIAN,
70  SHAPE,
71  SHAPE_AND_SIZE,
72  SHEAR,
73  SHEAR_AND_SIZE,
74  SKEW,
75  STRETCH,
76  TAPER,
77  VOLUME,
78  WARPAGE
79  };
80  //ETX
81 
82 public:
83  void PrintSelf (ostream&, vtkIndent);
85  static vtkCellQuality* New ();
86 
88 
94  vtkSetMacro(QualityMeasure, int);
95  vtkGetMacro(QualityMeasure, int);
97 
99  {
100  this->SetQualityMeasure(AREA);
101  }
103  {
104  this->SetQualityMeasure(ASPECT_BETA);
105  }
107  {
108  this->SetQualityMeasure(ASPECT_FROBENIUS);
109  }
111  {
112  this->SetQualityMeasure(ASPECT_GAMMA);
113  }
115  {
116  this->SetQualityMeasure(ASPECT_RATIO);
117  }
119  {
120  this->SetQualityMeasure(COLLAPSE_RATIO);
121  }
123  {
124  this->SetQualityMeasure(CONDITION);
125  }
127  {
128  this->SetQualityMeasure(DIAGONAL);
129  }
131  {
132  this->SetQualityMeasure(DIMENSION);
133  }
135  {
136  this->SetQualityMeasure(DISTORTION);
137  }
139  {
140  this->SetQualityMeasure(JACOBIAN);
141  }
143  {
144  this->SetQualityMeasure(MAX_ANGLE);
145  }
147  {
148  this->SetQualityMeasure(MAX_ASPECT_FROBENIUS);
149  }
151  {
152  this->SetQualityMeasure(MAX_EDGE_RATIO);
153  }
155  {
156  this->SetQualityMeasure(MED_ASPECT_FROBENIUS);
157  }
159  {
160  this->SetQualityMeasure(MIN_ANGLE);
161  }
163  {
164  this->SetQualityMeasure(ODDY);
165  }
167  {
168  this->SetQualityMeasure(RADIUS_RATIO);
169  }
171  {
172  this->SetQualityMeasure(RELATIVE_SIZE_SQUARED);
173  }
175  {
176  this->SetQualityMeasure(SCALED_JACOBIAN);
177  }
179  {
180  this->SetQualityMeasure(SHAPE_AND_SIZE);
181  }
183  {
184  this->SetQualityMeasure(SHAPE);
185  }
187  {
188  this->SetQualityMeasure(SHEAR_AND_SIZE);
189  }
191  {
192  this->SetQualityMeasure(SHEAR);
193  }
195  {
196  this->SetQualityMeasure(SKEW);
197  }
199  {
200  this->SetQualityMeasure(STRETCH);
201  }
203  {
204  this->SetQualityMeasure(TAPER);
205  }
207  {
208  this->SetQualityMeasure(VOLUME);
209  }
211  {
212  this->SetQualityMeasure(WARPAGE);
213  }
214 
216 
220  vtkSetMacro(UnsupportedGeometry, double);
221  vtkGetMacro(UnsupportedGeometry, double);
223 
225 
230  vtkSetMacro(UndefinedQuality, double);
231  vtkGetMacro(UndefinedQuality, double);
233 
235  double PixelArea (vtkCell*);
236  double PolygonArea (vtkCell*);
237 
238 protected:
241 
248 
259 
267 
275 
280 
284 
285  virtual int RequestData
287 
289 
293  static int GetCurrentTriangleNormal (double point [3], double normal [3]);
294  static double CurrentTriNormal [3];
296 
298 
299  // Default return value for unsupported geometry
301 
302  // Default return value for qualities that are not well-defined for certain
303  // types of supported geometries. e.g. volume of a triangle
305 
306 private:
307  vtkIdList* PointIds;
308  vtkPoints* Points;
309 
310  vtkCellQuality(const vtkCellQuality&); // Not implemented
311  void operator=(const vtkCellQuality&); // Not implemented
312 };
313 
314 #endif // vtkCellQuality_h
vtkPoints
represent and manipulate 3D points
Definition: vtkPoints.h:39
vtkCellQuality::TriangleStripArea
double TriangleStripArea(vtkCell *)
vtkCellQuality::PolygonArea
double PolygonArea(vtkCell *)
vtkCellQuality::SetQualityMeasureToAspectGamma
void SetQualityMeasureToAspectGamma()
Definition: vtkCellQuality.h:110
VTKFILTERSVERDICT_EXPORT
#define VTKFILTERSVERDICT_EXPORT
Definition: vtkFiltersVerdictModule.h:15
vtkCellQuality::SetQualityMeasureToShapeAndSize
void SetQualityMeasureToShapeAndSize()
Definition: vtkCellQuality.h:178
vtkglX::NONE
const GLenum NONE
Definition: vtkgl.h:19335
vtkCellQuality::SetQualityMeasureToRelativeSizeSquared
void SetQualityMeasureToRelativeSizeSquared()
Definition: vtkCellQuality.h:170
vtkCellQuality::ComputeTriangleQuality
double ComputeTriangleQuality(vtkCell *)
vtkCellQuality::SetQualityMeasureToCondition
void SetQualityMeasureToCondition()
Definition: vtkCellQuality.h:122
vtkCellQuality::SetQualityMeasureToCollapseRatio
void SetQualityMeasureToCollapseRatio()
Definition: vtkCellQuality.h:118
vtkCellQuality::SetQualityMeasureToDistortion
void SetQualityMeasureToDistortion()
Definition: vtkCellQuality.h:134
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:41
vtkCellQuality::SetQualityMeasureToDimension
void SetQualityMeasureToDimension()
Definition: vtkCellQuality.h:130
vtkCellQuality::ComputeQuadQuality
double ComputeQuadQuality(vtkCell *)
vtkCellQuality::ComputePixelQuality
double ComputePixelQuality(vtkCell *)
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkCellQuality::ComputeHexQuality
double ComputeHexQuality(vtkCell *)
vtkCellQuality::UnsupportedGeometry
double UnsupportedGeometry
Definition: vtkCellQuality.h:300
vtkCellQuality::PixelArea
double PixelArea(vtkCell *)
vtkCellQuality::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
vtkCellQuality::SetQualityMeasureToShear
void SetQualityMeasureToShear()
Definition: vtkCellQuality.h:190
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:55
vtkCellQuality::ComputeTetQuality
double ComputeTetQuality(vtkCell *)
vtkCellQuality::SetQualityMeasureToMaxEdgeRatio
void SetQualityMeasureToMaxEdgeRatio()
Definition: vtkCellQuality.h:150
vtkCellQuality::QualityMeasure
int QualityMeasure
Definition: vtkCellQuality.h:297
vtkCellQuality::SetQualityMeasureToOddy
void SetQualityMeasureToOddy()
Definition: vtkCellQuality.h:162
vtkCellQuality::SetQualityMeasureToShape
void SetQualityMeasureToShape()
Definition: vtkCellQuality.h:182
vtkCellQuality::SetQualityMeasureToTaper
void SetQualityMeasureToTaper()
Definition: vtkCellQuality.h:202
vtkDataSetAlgorithm
Superclass for algorithms that produce output of the same type as input.
Definition: vtkDataSetAlgorithm.h:51
vtkCellQuality::ComputeTriangleStripQuality
double ComputeTriangleStripQuality(vtkCell *)
vtkX3D::point
@ point
Definition: vtkX3D.h:236
vtkCellQuality::SetQualityMeasureToVolume
void SetQualityMeasureToVolume()
Definition: vtkCellQuality.h:206
vtkCellQuality::SetQualityMeasureToScaledJacobian
void SetQualityMeasureToScaledJacobian()
Definition: vtkCellQuality.h:174
vtkCellQuality::SetQualityMeasureToJacobian
void SetQualityMeasureToJacobian()
Definition: vtkCellQuality.h:138
vtkCellQuality::SetQualityMeasureToMedAspectFrobenius
void SetQualityMeasureToMedAspectFrobenius()
Definition: vtkCellQuality.h:154
vtkCellQuality::SetQualityMeasureToAspectBeta
void SetQualityMeasureToAspectBeta()
Definition: vtkCellQuality.h:102
vtkCellQuality::UndefinedQuality
double UndefinedQuality
Definition: vtkCellQuality.h:304
vtkCell
abstract class to specify cell behavior
Definition: vtkCell.h:62
vtkCellQuality::New
static vtkCellQuality * New()
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkCellQuality::SetQualityMeasureToRadiusRatio
void SetQualityMeasureToRadiusRatio()
Definition: vtkCellQuality.h:166
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:36
vtkCellQuality::~vtkCellQuality
~vtkCellQuality()
vtkCellQuality::SetQualityMeasureToAspectRatio
void SetQualityMeasureToAspectRatio()
Definition: vtkCellQuality.h:114
vtkCellQuality::GetCurrentTriangleNormal
static int GetCurrentTriangleNormal(double point[3], double normal[3])
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkCellQuality::SetQualityMeasureToArea
void SetQualityMeasureToArea()
Definition: vtkCellQuality.h:98
vtkCellQuality::SetQualityMeasureToSkew
void SetQualityMeasureToSkew()
Definition: vtkCellQuality.h:194
vtkCellQuality::SetQualityMeasureToWarpage
void SetQualityMeasureToWarpage()
Definition: vtkCellQuality.h:210
vtkFiltersVerdictModule.h
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkDataSetAlgorithm.h
vtkCellQuality
Calculate functions of quality of the elements of a mesh.
Definition: vtkCellQuality.h:43
vtkCellQuality::PrintSelf
void PrintSelf(ostream &, vtkIndent)
vtkCellQuality::SetQualityMeasureToMaxAspectFrobenius
void SetQualityMeasureToMaxAspectFrobenius()
Definition: vtkCellQuality.h:146
vtkCellQuality::SetQualityMeasureToMaxAngle
void SetQualityMeasureToMaxAngle()
Definition: vtkCellQuality.h:142
vtkCellQuality::SetQualityMeasureToAspectFrobenius
void SetQualityMeasureToAspectFrobenius()
Definition: vtkCellQuality.h:106
vtkCellQuality::SetQualityMeasureToDiagonal
void SetQualityMeasureToDiagonal()
Definition: vtkCellQuality.h:126
vtkCellQuality::vtkCellQuality
vtkCellQuality()
vtkCellQuality::SetQualityMeasureToMinAngle
void SetQualityMeasureToMinAngle()
Definition: vtkCellQuality.h:158
vtkCellQuality::SetQualityMeasureToStretch
void SetQualityMeasureToStretch()
Definition: vtkCellQuality.h:198
vtkCellQuality::SetQualityMeasureToShearAndSize
void SetQualityMeasureToShearAndSize()
Definition: vtkCellQuality.h:186