67 #ifndef __vtkMeshQuality_h
68 #define __vtkMeshQuality_h
75 #define VTK_QUALITY_EDGE_RATIO 0
76 #define VTK_QUALITY_ASPECT_RATIO 1
77 #define VTK_QUALITY_RADIUS_RATIO 2
78 #define VTK_QUALITY_ASPECT_FROBENIUS 3
79 #define VTK_QUALITY_MED_ASPECT_FROBENIUS 4
80 #define VTK_QUALITY_MAX_ASPECT_FROBENIUS 5
81 #define VTK_QUALITY_MIN_ANGLE 6
82 #define VTK_QUALITY_COLLAPSE_RATIO 7
83 #define VTK_QUALITY_MAX_ANGLE 8
84 #define VTK_QUALITY_CONDITION 9
85 #define VTK_QUALITY_SCALED_JACOBIAN 10
86 #define VTK_QUALITY_SHEAR 11
87 #define VTK_QUALITY_RELATIVE_SIZE_SQUARED 12
88 #define VTK_QUALITY_SHAPE 13
89 #define VTK_QUALITY_SHAPE_AND_SIZE 14
90 #define VTK_QUALITY_DISTORTION 15
91 #define VTK_QUALITY_MAX_EDGE_RATIO 16
92 #define VTK_QUALITY_SKEW 17
93 #define VTK_QUALITY_TAPER 18
94 #define VTK_QUALITY_VOLUME 19
95 #define VTK_QUALITY_STRETCH 20
96 #define VTK_QUALITY_DIAGONAL 21
97 #define VTK_QUALITY_DIMENSION 22
98 #define VTK_QUALITY_ODDY 23
99 #define VTK_QUALITY_SHEAR_AND_SIZE 24
100 #define VTK_QUALITY_JACOBIAN 25
101 #define VTK_QUALITY_WARPAGE 26
102 #define VTK_QUALITY_ASPECT_GAMMA 27
103 #define VTK_QUALITY_AREA 28
104 #define VTK_QUALITY_ASPECT_BETA 29
117 vtkSetMacro(SaveCellQuality,
int);
118 vtkGetMacro(SaveCellQuality,
int);
119 vtkBooleanMacro(SaveCellQuality,
int);
131 vtkSetMacro(TriangleQualityMeasure,
int);
132 vtkGetMacro(TriangleQualityMeasure,
int);
133 void SetTriangleQualityMeasureToArea()
137 void SetTriangleQualityMeasureToEdgeRatio()
141 void SetTriangleQualityMeasureToAspectRatio()
145 void SetTriangleQualityMeasureToRadiusRatio()
149 void SetTriangleQualityMeasureToAspectFrobenius()
153 void SetTriangleQualityMeasureToMinAngle()
157 void SetTriangleQualityMeasureToMaxAngle()
161 void SetTriangleQualityMeasureToCondition()
165 void SetTriangleQualityMeasureToScaledJacobian()
169 void SetTriangleQualityMeasureToRelativeSizeSquared()
173 void SetTriangleQualityMeasureToShape()
177 void SetTriangleQualityMeasureToShapeAndSize()
181 void SetTriangleQualityMeasureToDistortion()
202 vtkSetMacro(QuadQualityMeasure,
int);
203 vtkGetMacro(QuadQualityMeasure,
int);
204 void SetQuadQualityMeasureToEdgeRatio()
208 void SetQuadQualityMeasureToAspectRatio()
212 void SetQuadQualityMeasureToRadiusRatio()
216 void SetQuadQualityMeasureToMedAspectFrobenius()
220 void SetQuadQualityMeasureToMaxAspectFrobenius()
224 void SetQuadQualityMeasureToMaxEdgeRatios()
228 void SetQuadQualityMeasureToSkew()
232 void SetQuadQualityMeasureToTaper()
236 void SetQuadQualityMeasureToWarpage()
240 void SetQuadQualityMeasureToArea()
244 void SetQuadQualityMeasureToStretch()
248 void SetQuadQualityMeasureToMinAngle()
252 void SetQuadQualityMeasureToMaxAngle()
256 void SetQuadQualityMeasureToOddy()
260 void SetQuadQualityMeasureToCondition()
264 void SetQuadQualityMeasureToJacobian()
268 void SetQuadQualityMeasureToScaledJacobian()
272 void SetQuadQualityMeasureToShear()
276 void SetQuadQualityMeasureToShape()
280 void SetQuadQualityMeasureToRelativeSizeSquared()
284 void SetQuadQualityMeasureToShapeAndSize()
288 void SetQuadQualityMeasureToShearAndSize()
292 void SetQuadQualityMeasureToDistortion()
309 vtkSetMacro(TetQualityMeasure,
int);
310 vtkGetMacro(TetQualityMeasure,
int);
311 void SetTetQualityMeasureToEdgeRatio()
315 void SetTetQualityMeasureToAspectRatio()
319 void SetTetQualityMeasureToRadiusRatio()
323 void SetTetQualityMeasureToAspectFrobenius()
327 void SetTetQualityMeasureToMinAngle()
331 void SetTetQualityMeasureToCollapseRatio()
335 void SetTetQualityMeasureToAspectBeta()
339 void SetTetQualityMeasureToAspectGamma()
343 void SetTetQualityMeasureToVolume()
347 void SetTetQualityMeasureToCondition()
351 void SetTetQualityMeasureToJacobian()
355 void SetTetQualityMeasureToScaledJacobian()
359 void SetTetQualityMeasureToShape()
363 void SetTetQualityMeasureToRelativeSizeSquared()
367 void SetTetQualityMeasureToShapeAndSize()
371 void SetTetQualityMeasureToDistortion()
388 vtkSetMacro(HexQualityMeasure,
int);
389 vtkGetMacro(HexQualityMeasure,
int);
390 void SetHexQualityMeasureToEdgeRatio()
394 void SetHexQualityMeasureToMedAspectFrobenius()
398 void SetHexQualityMeasureToMaxAspectFrobenius()
402 void SetHexQualityMeasureToMaxEdgeRatios()
406 void SetHexQualityMeasureToSkew()
410 void SetHexQualityMeasureToTaper()
414 void SetHexQualityMeasureToVolume()
418 void SetHexQualityMeasureToStretch()
422 void SetHexQualityMeasureToDiagonal()
426 void SetHexQualityMeasureToDimension()
430 void SetHexQualityMeasureToOddy()
434 void SetHexQualityMeasureToCondition()
438 void SetHexQualityMeasureToJacobian()
442 void SetHexQualityMeasureToScaledJacobian()
446 void SetHexQualityMeasureToShear()
450 void SetHexQualityMeasureToShape()
454 void SetHexQualityMeasureToRelativeSizeSquared()
458 void SetHexQualityMeasureToShapeAndSize()
462 void SetHexQualityMeasureToShearAndSize()
466 void SetHexQualityMeasureToDistortion()
476 static double TriangleArea(
vtkCell* cell );
485 static double TriangleEdgeRatio(
vtkCell* cell );
494 static double TriangleAspectRatio(
vtkCell* cell );
502 static double TriangleRadiusRatio(
vtkCell* cell );
513 static double TriangleAspectFrobenius(
vtkCell* cell );
520 static double TriangleMinAngle(
vtkCell* cell );
527 static double TriangleMaxAngle(
vtkCell* cell );
533 static double TriangleCondition(
vtkCell* cell );
539 static double TriangleScaledJacobian(
vtkCell* cell );
545 static double TriangleRelativeSizeSquared(
vtkCell* cell );
551 static double TriangleShape(
vtkCell* cell );
557 static double TriangleShapeAndSize(
vtkCell* cell );
563 static double TriangleDistortion(
vtkCell* cell );
572 static double QuadEdgeRatio(
vtkCell* cell );
583 static double QuadAspectRatio(
vtkCell* cell );
598 static double QuadRadiusRatio(
vtkCell* cell );
611 static double QuadMedAspectFrobenius(
vtkCell* cell );
624 static double QuadMaxAspectFrobenius(
vtkCell* cell );
631 static double QuadMinAngle(
vtkCell* cell );
633 static double QuadMaxEdgeRatios(
vtkCell* cell );
634 static double QuadSkew(
vtkCell* cell );
635 static double QuadTaper(
vtkCell* cell );
636 static double QuadWarpage(
vtkCell* cell );
637 static double QuadArea(
vtkCell* cell );
638 static double QuadStretch(
vtkCell* cell );
639 static double QuadMaxAngle(
vtkCell* cell );
640 static double QuadOddy(
vtkCell* cell );
641 static double QuadCondition(
vtkCell* cell );
642 static double QuadJacobian(
vtkCell* cell );
643 static double QuadScaledJacobian(
vtkCell* cell );
644 static double QuadShear(
vtkCell* cell );
645 static double QuadShape(
vtkCell* cell );
646 static double QuadRelativeSizeSquared(
vtkCell* cell );
647 static double QuadShapeAndSize(
vtkCell* cell );
648 static double QuadShearAndSize(
vtkCell* cell );
649 static double QuadDistortion(
vtkCell* cell );
658 static double TetEdgeRatio(
vtkCell* cell );
667 static double TetAspectRatio(
vtkCell* cell );
675 static double TetRadiusRatio(
vtkCell* cell );
687 static double TetAspectFrobenius(
vtkCell* cell );
694 static double TetMinAngle(
vtkCell* cell );
704 static double TetCollapseRatio(
vtkCell* cell );
705 static double TetAspectBeta(
vtkCell* cell );
706 static double TetAspectGamma(
vtkCell* cell );
707 static double TetVolume(
vtkCell* cell );
708 static double TetCondition(
vtkCell* cell );
709 static double TetJacobian(
vtkCell* cell );
710 static double TetScaledJacobian(
vtkCell* cell );
711 static double TetShape(
vtkCell* cell );
712 static double TetRelativeSizeSquared(
vtkCell* cell );
713 static double TetShapeandSize(
vtkCell* cell );
714 static double TetDistortion(
vtkCell* cell );
724 static double HexEdgeRatio(
vtkCell* cell );
732 static double HexMedAspectFrobenius(
vtkCell* cell );
741 static double HexMaxAspectFrobenius(
vtkCell* cell );
742 static double HexMaxEdgeRatio(
vtkCell* cell );
743 static double HexSkew(
vtkCell* cell );
744 static double HexTaper(
vtkCell* cell );
745 static double HexVolume(
vtkCell* cell );
746 static double HexStretch(
vtkCell* cell );
747 static double HexDiagonal(
vtkCell* cell );
748 static double HexDimension(
vtkCell* cell );
749 static double HexOddy(
vtkCell* cell );
750 static double HexCondition(
vtkCell* cell );
751 static double HexJacobian(
vtkCell* cell );
752 static double HexScaledJacobian(
vtkCell* cell );
753 static double HexShear(
vtkCell* cell );
754 static double HexShape(
vtkCell* cell );
755 static double HexRelativeSizeSquared(
vtkCell* cell );
756 static double HexShapeAndSize(
vtkCell* cell );
757 static double HexShearAndSize(
vtkCell* cell );
758 static double HexDistortion(
vtkCell* cell );
768 virtual void SetRatio(
int r ) { this->SetSaveCellQuality( r ); }
769 int GetRatio() {
return this->GetSaveCellQuality(); }
770 vtkBooleanMacro(Ratio,
int);
786 virtual void SetVolume(
int cv )
788 if ( ! ((cv != 0) ^ (this->Volume != 0)) )
796 this->CompatibilityModeOn();
803 vtkBooleanMacro(Volume,
int);
825 virtual void SetCompatibilityMode(
int cm )
827 if ( !((cm != 0) ^ (this->CompatibilityMode != 0)) )
831 this->CompatibilityMode = cm;
833 if ( this->CompatibilityMode )
839 vtkGetMacro(CompatibilityMode,
int);
840 vtkBooleanMacro(CompatibilityMode,
int);
851 static int GetCurrentTriangleNormal(
double point[3],
double normal[3] );
863 static double CurrentTriNormal[3];
870 #endif // vtkMeshQuality_h