67 #ifndef __vtkMeshQuality_h
68 #define __vtkMeshQuality_h
70 #include "vtkFiltersVerdictModule.h"
76 #define VTK_QUALITY_EDGE_RATIO 0
77 #define VTK_QUALITY_ASPECT_RATIO 1
78 #define VTK_QUALITY_RADIUS_RATIO 2
79 #define VTK_QUALITY_ASPECT_FROBENIUS 3
80 #define VTK_QUALITY_MED_ASPECT_FROBENIUS 4
81 #define VTK_QUALITY_MAX_ASPECT_FROBENIUS 5
82 #define VTK_QUALITY_MIN_ANGLE 6
83 #define VTK_QUALITY_COLLAPSE_RATIO 7
84 #define VTK_QUALITY_MAX_ANGLE 8
85 #define VTK_QUALITY_CONDITION 9
86 #define VTK_QUALITY_SCALED_JACOBIAN 10
87 #define VTK_QUALITY_SHEAR 11
88 #define VTK_QUALITY_RELATIVE_SIZE_SQUARED 12
89 #define VTK_QUALITY_SHAPE 13
90 #define VTK_QUALITY_SHAPE_AND_SIZE 14
91 #define VTK_QUALITY_DISTORTION 15
92 #define VTK_QUALITY_MAX_EDGE_RATIO 16
93 #define VTK_QUALITY_SKEW 17
94 #define VTK_QUALITY_TAPER 18
95 #define VTK_QUALITY_VOLUME 19
96 #define VTK_QUALITY_STRETCH 20
97 #define VTK_QUALITY_DIAGONAL 21
98 #define VTK_QUALITY_DIMENSION 22
99 #define VTK_QUALITY_ODDY 23
100 #define VTK_QUALITY_SHEAR_AND_SIZE 24
101 #define VTK_QUALITY_JACOBIAN 25
102 #define VTK_QUALITY_WARPAGE 26
103 #define VTK_QUALITY_ASPECT_GAMMA 27
104 #define VTK_QUALITY_AREA 28
105 #define VTK_QUALITY_ASPECT_BETA 29
118 vtkSetMacro(SaveCellQuality,
int);
119 vtkGetMacro(SaveCellQuality,
int);
120 vtkBooleanMacro(SaveCellQuality,
int);
132 vtkSetMacro(TriangleQualityMeasure,
int);
133 vtkGetMacro(TriangleQualityMeasure,
int);
134 void SetTriangleQualityMeasureToArea()
138 void SetTriangleQualityMeasureToEdgeRatio()
142 void SetTriangleQualityMeasureToAspectRatio()
146 void SetTriangleQualityMeasureToRadiusRatio()
150 void SetTriangleQualityMeasureToAspectFrobenius()
154 void SetTriangleQualityMeasureToMinAngle()
158 void SetTriangleQualityMeasureToMaxAngle()
162 void SetTriangleQualityMeasureToCondition()
166 void SetTriangleQualityMeasureToScaledJacobian()
170 void SetTriangleQualityMeasureToRelativeSizeSquared()
174 void SetTriangleQualityMeasureToShape()
178 void SetTriangleQualityMeasureToShapeAndSize()
182 void SetTriangleQualityMeasureToDistortion()
203 vtkSetMacro(QuadQualityMeasure,
int);
204 vtkGetMacro(QuadQualityMeasure,
int);
205 void SetQuadQualityMeasureToEdgeRatio()
209 void SetQuadQualityMeasureToAspectRatio()
213 void SetQuadQualityMeasureToRadiusRatio()
217 void SetQuadQualityMeasureToMedAspectFrobenius()
221 void SetQuadQualityMeasureToMaxAspectFrobenius()
225 void SetQuadQualityMeasureToMaxEdgeRatios()
229 void SetQuadQualityMeasureToSkew()
233 void SetQuadQualityMeasureToTaper()
237 void SetQuadQualityMeasureToWarpage()
241 void SetQuadQualityMeasureToArea()
245 void SetQuadQualityMeasureToStretch()
249 void SetQuadQualityMeasureToMinAngle()
253 void SetQuadQualityMeasureToMaxAngle()
257 void SetQuadQualityMeasureToOddy()
261 void SetQuadQualityMeasureToCondition()
265 void SetQuadQualityMeasureToJacobian()
269 void SetQuadQualityMeasureToScaledJacobian()
273 void SetQuadQualityMeasureToShear()
277 void SetQuadQualityMeasureToShape()
281 void SetQuadQualityMeasureToRelativeSizeSquared()
285 void SetQuadQualityMeasureToShapeAndSize()
289 void SetQuadQualityMeasureToShearAndSize()
293 void SetQuadQualityMeasureToDistortion()
310 vtkSetMacro(TetQualityMeasure,
int);
311 vtkGetMacro(TetQualityMeasure,
int);
312 void SetTetQualityMeasureToEdgeRatio()
316 void SetTetQualityMeasureToAspectRatio()
320 void SetTetQualityMeasureToRadiusRatio()
324 void SetTetQualityMeasureToAspectFrobenius()
328 void SetTetQualityMeasureToMinAngle()
332 void SetTetQualityMeasureToCollapseRatio()
336 void SetTetQualityMeasureToAspectBeta()
340 void SetTetQualityMeasureToAspectGamma()
344 void SetTetQualityMeasureToVolume()
348 void SetTetQualityMeasureToCondition()
352 void SetTetQualityMeasureToJacobian()
356 void SetTetQualityMeasureToScaledJacobian()
360 void SetTetQualityMeasureToShape()
364 void SetTetQualityMeasureToRelativeSizeSquared()
368 void SetTetQualityMeasureToShapeAndSize()
372 void SetTetQualityMeasureToDistortion()
389 vtkSetMacro(HexQualityMeasure,
int);
390 vtkGetMacro(HexQualityMeasure,
int);
391 void SetHexQualityMeasureToEdgeRatio()
395 void SetHexQualityMeasureToMedAspectFrobenius()
399 void SetHexQualityMeasureToMaxAspectFrobenius()
403 void SetHexQualityMeasureToMaxEdgeRatios()
407 void SetHexQualityMeasureToSkew()
411 void SetHexQualityMeasureToTaper()
415 void SetHexQualityMeasureToVolume()
419 void SetHexQualityMeasureToStretch()
423 void SetHexQualityMeasureToDiagonal()
427 void SetHexQualityMeasureToDimension()
431 void SetHexQualityMeasureToOddy()
435 void SetHexQualityMeasureToCondition()
439 void SetHexQualityMeasureToJacobian()
443 void SetHexQualityMeasureToScaledJacobian()
447 void SetHexQualityMeasureToShear()
451 void SetHexQualityMeasureToShape()
455 void SetHexQualityMeasureToRelativeSizeSquared()
459 void SetHexQualityMeasureToShapeAndSize()
463 void SetHexQualityMeasureToShearAndSize()
467 void SetHexQualityMeasureToDistortion()
477 static double TriangleArea(
vtkCell* cell );
486 static double TriangleEdgeRatio(
vtkCell* cell );
495 static double TriangleAspectRatio(
vtkCell* cell );
503 static double TriangleRadiusRatio(
vtkCell* cell );
514 static double TriangleAspectFrobenius(
vtkCell* cell );
521 static double TriangleMinAngle(
vtkCell* cell );
528 static double TriangleMaxAngle(
vtkCell* cell );
534 static double TriangleCondition(
vtkCell* cell );
540 static double TriangleScaledJacobian(
vtkCell* cell );
546 static double TriangleRelativeSizeSquared(
vtkCell* cell );
552 static double TriangleShape(
vtkCell* cell );
558 static double TriangleShapeAndSize(
vtkCell* cell );
564 static double TriangleDistortion(
vtkCell* cell );
573 static double QuadEdgeRatio(
vtkCell* cell );
584 static double QuadAspectRatio(
vtkCell* cell );
599 static double QuadRadiusRatio(
vtkCell* cell );
612 static double QuadMedAspectFrobenius(
vtkCell* cell );
625 static double QuadMaxAspectFrobenius(
vtkCell* cell );
632 static double QuadMinAngle(
vtkCell* cell );
634 static double QuadMaxEdgeRatios(
vtkCell* cell );
635 static double QuadSkew(
vtkCell* cell );
636 static double QuadTaper(
vtkCell* cell );
637 static double QuadWarpage(
vtkCell* cell );
638 static double QuadArea(
vtkCell* cell );
639 static double QuadStretch(
vtkCell* cell );
640 static double QuadMaxAngle(
vtkCell* cell );
641 static double QuadOddy(
vtkCell* cell );
642 static double QuadCondition(
vtkCell* cell );
643 static double QuadJacobian(
vtkCell* cell );
644 static double QuadScaledJacobian(
vtkCell* cell );
645 static double QuadShear(
vtkCell* cell );
646 static double QuadShape(
vtkCell* cell );
647 static double QuadRelativeSizeSquared(
vtkCell* cell );
648 static double QuadShapeAndSize(
vtkCell* cell );
649 static double QuadShearAndSize(
vtkCell* cell );
650 static double QuadDistortion(
vtkCell* cell );
659 static double TetEdgeRatio(
vtkCell* cell );
668 static double TetAspectRatio(
vtkCell* cell );
676 static double TetRadiusRatio(
vtkCell* cell );
688 static double TetAspectFrobenius(
vtkCell* cell );
695 static double TetMinAngle(
vtkCell* cell );
705 static double TetCollapseRatio(
vtkCell* cell );
706 static double TetAspectBeta(
vtkCell* cell );
707 static double TetAspectGamma(
vtkCell* cell );
708 static double TetVolume(
vtkCell* cell );
709 static double TetCondition(
vtkCell* cell );
710 static double TetJacobian(
vtkCell* cell );
711 static double TetScaledJacobian(
vtkCell* cell );
712 static double TetShape(
vtkCell* cell );
713 static double TetRelativeSizeSquared(
vtkCell* cell );
714 static double TetShapeandSize(
vtkCell* cell );
715 static double TetDistortion(
vtkCell* cell );
725 static double HexEdgeRatio(
vtkCell* cell );
733 static double HexMedAspectFrobenius(
vtkCell* cell );
742 static double HexMaxAspectFrobenius(
vtkCell* cell );
743 static double HexMaxEdgeRatio(
vtkCell* cell );
744 static double HexSkew(
vtkCell* cell );
745 static double HexTaper(
vtkCell* cell );
746 static double HexVolume(
vtkCell* cell );
747 static double HexStretch(
vtkCell* cell );
748 static double HexDiagonal(
vtkCell* cell );
749 static double HexDimension(
vtkCell* cell );
750 static double HexOddy(
vtkCell* cell );
751 static double HexCondition(
vtkCell* cell );
752 static double HexJacobian(
vtkCell* cell );
753 static double HexScaledJacobian(
vtkCell* cell );
754 static double HexShear(
vtkCell* cell );
755 static double HexShape(
vtkCell* cell );
756 static double HexRelativeSizeSquared(
vtkCell* cell );
757 static double HexShapeAndSize(
vtkCell* cell );
758 static double HexShearAndSize(
vtkCell* cell );
759 static double HexDistortion(
vtkCell* cell );
769 virtual void SetRatio(
int r ) { this->SetSaveCellQuality( r ); }
770 int GetRatio() {
return this->GetSaveCellQuality(); }
771 vtkBooleanMacro(Ratio,
int);
787 virtual void SetVolume(
int cv )
789 if ( ! ((cv != 0) ^ (this->Volume != 0)) )
797 this->CompatibilityModeOn();
804 vtkBooleanMacro(Volume,
int);
826 virtual void SetCompatibilityMode(
int cm )
828 if ( !((cm != 0) ^ (this->CompatibilityMode != 0)) )
832 this->CompatibilityMode = cm;
834 if ( this->CompatibilityMode )
840 vtkGetMacro(CompatibilityMode,
int);
841 vtkBooleanMacro(CompatibilityMode,
int);
852 static int GetCurrentTriangleNormal(
double point[3],
double normal[3] );
864 static double CurrentTriNormal[3];
871 #endif // vtkMeshQuality_h