]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/Contour/ContourExtractData.cxx
no message
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / Contour / ContourExtractData.cxx
index 4d7c69ab42994432e4888a4dc47ad4ec64a1ee42..7989c0d7422d0fe69f2a45334b6788d662c9ce71 100644 (file)
@@ -475,6 +475,51 @@ void ContourExtractData::InitVtkImagesResult()
 }
 
 
+//------------------------------------------------------------------------
+void ContourExtractData::InitVolumeStatistics()
+{
+       vol_rCountRange                         = 0;
+       vol_rsize                                       = 0;
+       vol_minValue                            = 9999999;
+       vol_maxValue                            =-9999999;
+       vol_acum_average                        = 0;
+       vol_acum_standardeviation       = 0;
+}
+
+//------------------------------------------------------------------------
+void ContourExtractData::SetVolumeStatistics(int rCountRange, 
+                                                                                       int rsize,
+                                                                                       double minValue,
+                                                                                       double maxValue,
+                                                                                       double acum_average,
+                                                                                       double acum_standardeviation)
+{
+       vol_rCountRange                         = vol_rCountRange + rCountRange; 
+       vol_rsize                                       = vol_rsize + rsize; 
+       
+       if (minValue<vol_minValue){ vol_minValue = minValue;  }
+       if (maxValue>vol_maxValue){ vol_maxValue = maxValue;  }
+       
+       vol_acum_average                        = vol_acum_average + acum_average; 
+       vol_acum_standardeviation       = vol_acum_standardeviation + acum_standardeviation; 
+}
+
+//------------------------------------------------------------------------
+void ContourExtractData::GetVolumeStatistics(int *vol_rCountRange, 
+                                                                                        int *vol_rsize,
+                                                                                        double *vol_minValue,
+                                                                                        double *vol_maxValue,
+                                                                                        double *vol_average,
+                                                                                        double *vol_standardeviation)
+{
+       *vol_rCountRange                = this->vol_rCountRange; 
+       *vol_rsize                              = this->vol_rsize; 
+       *vol_minValue                   = this->vol_minValue; 
+       *vol_maxValue                   = this->vol_maxValue; 
+       *vol_average                    = this->vol_acum_average / this->vol_rsize;
+       *vol_standardeviation   = sqrt(this->vol_acum_standardeviation / this->vol_rsize);
+}
+
 
 //------------------------------------------------------------------------
 void ContourExtractData::Statistics( std::vector<double> *inputLstValue, 
@@ -485,15 +530,17 @@ void ContourExtractData::Statistics( std::vector<double> *inputLstValue,
                                                                        double  *rmin, 
                                                                        double  *rmax,
                                                                        double  *raverage,
-                                                                       double  *rstandardeviation)
+                                                                       double  *rstandardeviation
+                                                                               )
 {
-         double min                            = 0;
-         double max                            = 0;
-         double average                        = 0;
-         double standardeviation       = 0;
-         double acum                           = 0;
-         int    size                           = 0;
-         int    countRange                     = 0;
+         double min                                            = 0;
+         double max                                            = 0;
+         double average                                        = 0;
+         double standardeviation                       = 0;
+         double acum_average                           = 0;
+         double acum_standardeviation          = 0;
+         int    size                                           = 0;
+         int    countRange                                     = 0;
          double ng;
 
          if (inputLstValue!=NULL)
@@ -507,25 +554,27 @@ void ContourExtractData::Statistics( std::vector<double> *inputLstValue,
                        for ( i=0; i<size; i++ )
                        {
                                ng=(*inputLstValue)[i];
-                               acum = acum + ng;
+                               acum_average = acum_average + ng;
                                if (max<ng) max=ng;             // Max
                                if (min>ng) min=ng;     // Min
                                if ((ng>=grayRangeMin) && (ng<=grayRangeMax)) countRange++;  // countRange
-                       }
-                       average = acum / size;
+                       } // for average
+                       average = acum_average / size;
 
          // Standar Deviation
-                       acum=0;
+                       acum_standardeviation=0;
                        double tmp;
                        for ( i=0; i<size; i++ )
                        {
                 tmp = (*inputLstValue)[i] - average;
-                               acum = acum + tmp*tmp;
-                       }
-                       standardeviation = sqrt(acum/size);
-
-               }
-         }
+                               acum_standardeviation = acum_standardeviation + tmp*tmp;
+                       } // for standar deviation
+                       standardeviation = sqrt(acum_standardeviation/size);
+                       SetVolumeStatistics(countRange, size,
+                                                               min,max,
+                                                           acum_average,acum_standardeviation);
+               } // if size
+         } // if NULL
 
          // OUTPUT
                *rsize                          = size;