Salome HOME
Added support for quality control (on polygons) - Aspect Ratio.
authorenk <enk@opencascade.com>
Tue, 2 Aug 2005 11:13:18 +0000 (11:13 +0000)
committerenk <enk@opencascade.com>
Tue, 2 Aug 2005 11:13:18 +0000 (11:13 +0000)
src/Controls/SMESH_Controls.cxx

index 3dd59cf..7699902 100644 (file)
@@ -247,7 +247,7 @@ double AspectRatio::GetValue( const TSequenceOfXYZ& P )
 {
   int nbNodes = P.size();
 
-  if ( nbNodes != 3 && nbNodes != 4 )
+  if ( nbNodes < 3 )
     return 0;
 
   // Compute lengths of the sides
@@ -271,10 +271,15 @@ double AspectRatio::GetValue( const TSequenceOfXYZ& P )
   }
   else
   {
-    double aMinLen = Min( Min( aLen[ 0 ], aLen[ 1 ] ), Min( aLen[ 2 ], aLen[ 3 ] ) );
+    double aMinLen = aLen[ 0 ];
+    double aMaxLen = aLen[ 0 ];
+    
+    for(int i = 1; i < nbNodes ; i++ ){
+      aMinLen = Min( aMinLen, aLen[ i ] );
+      aMaxLen = Max( aMaxLen, aLen[ i ] );
+    }
     if ( aMinLen <= Precision::Confusion() )
       return 0.;
-    double aMaxLen = Max( Max( aLen[ 0 ], aLen[ 1 ] ), Max( aLen[ 2 ], aLen[ 3 ] ) );
     
     return aMaxLen / aMinLen;
   }