Salome HOME
Issue #2185: Fix bug with negative values for color scale
authorvsv <vsv@opencascade.com>
Mon, 11 Nov 2019 14:27:24 +0000 (17:27 +0300)
committervsv <vsv@opencascade.com>
Mon, 11 Nov 2019 14:27:24 +0000 (17:27 +0300)
src/PartSet/PartSet_FieldStepPrs.cpp

index 20dd7ca9864d522eb2dabf1c723d781c6092fa30..8bf365e67bd462dbae0502aa0adaf7a4b2bf38fb 100644 (file)
@@ -123,18 +123,28 @@ QList<double> PartSet_FieldStepPrs::range(double& theMin, double& theMax) const
   }
   QList<double> aShapeData;
   double aRangeMin = aFieldStepData.first(), aRangeMax = aFieldStepData.last();
-  for (int aRow = 0; aRow < aRows - aStart; aRow++) {
-    double aNorm = 0;
-    int aBaseIndex = aRow * aCols;
-    for (int aCol = 0; aCol < aCols; aCol++) {
-      int anIndex = aCol + aBaseIndex;
-      double aValue = aFieldStepData.at(anIndex);
-      aNorm += aValue * aValue;
+  if (aCols == 1) {
+    for (int aRow = 0; aRow < aRows - aStart; aRow++) {
+      double aValue = aFieldStepData.at(aRow);
+      aRangeMin = Min(aRangeMin, aValue);
+      aRangeMax = Max(aRangeMax, aValue);
+      aShapeData << aValue;
+    }
+  }
+  else {
+    for (int aRow = 0; aRow < aRows - aStart; aRow++) {
+      double aNorm = 0;
+      int aBaseIndex = aRow * aCols;
+      for (int aCol = 0; aCol < aCols; aCol++) {
+        int anIndex = aCol + aBaseIndex;
+        double aValue = aFieldStepData.at(anIndex);
+        aNorm += aValue * aValue;
+      }
+      aNorm = pow(aNorm, 0.5);
+      aRangeMin = Min(aRangeMin, aNorm);
+      aRangeMax = Max(aRangeMax, aNorm);
+      aShapeData << aNorm;
     }
-    aNorm = pow(aNorm, 0.5);
-    aRangeMin = Min(aRangeMin, aNorm);
-    aRangeMax = Max(aRangeMax, aNorm);
-    aShapeData << aNorm;
   }
   theMin = aRangeMin;
   theMax = aRangeMax;