]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/Contour/AutoControlPoints.cxx
#3418 creaMaracasVisu Feature New Normal - ManualPaint_model with openmp
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / Contour / AutoControlPoints.cxx
index 0e14ca465fecdd1623fab43b109aac018cf11641..88a8a7a1fde85658b6692c414cf5e4f7b73ed8da 100644 (file)
@@ -1,3 +1,28 @@
+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and
+#  abiding by the rules of distribution of free software. You can  use,
+#  modify and/ or redistribute the software under the terms of the CeCILL-B
+#  license as circulated by CEA, CNRS and INRIA at the following URL
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability.
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
 #include "AutoControlPoints.h"
 //------------------------------------------------------------------------------------------------------------------------------------------
 //CLASS: AutoControlPoints -----------------------------------------------------------------------------------------------------------------
@@ -234,17 +259,26 @@ void AutoControlPoints::CirclePoints(double cx, double cy, double r, double grad
                        _chargecontrolpointsY.push_back(y);
                        _chargecontrolpointsZ.push_back(z);
                }
-               _pathsize = _mContourModel->GetPathSize();
-//printf("\nPATH SIZE = %f",_pathsize);
 
-                std::ofstream file1;
-               file1.open( "4_SplinePoints.txt" );
+// EED 2017-05-30
+//             _pathsize = _mContourModel->GetPathSize(  );
+               double spc[3];
+               spc[0]=1;
+               spc[1]=1;
+               spc[2]=1;
+               _pathsize = _mContourModel->GetPathSize( spc );
 
-               for(int i = 0; i < numspline; i++){
-                       file1<<"X= "<<_chargecontrolpointsX[i] << "\tY= "<<_chargecontrolpointsY[i] << "\tZ= "<<_chargecontrolpointsZ[i]<<std::endl;
-               }
-               file1.close();
-        }
+//printf("\nPATH SIZE = %f",_pathsize);
+//EED 2020-03-31
+//             std::ofstream file1;
+//             file1.open( "4_SplinePoints.txt" );
+//             for(int i = 0; i < numspline; i++)
+//             {
+//                     file1<<"X= "<<_chargecontrolpointsX[i] << "\tY= "<<_chargecontrolpointsY[i] << "\tZ= "<<_chargecontrolpointsZ[i]<<std::endl;
+//             } // for i
+//             file1.close();
+
+        } // if size
        
  }
  //Given the coordinates of two points, it calculates the slope
@@ -452,15 +486,15 @@ JCP 26-09-2008*/
 
        //DELETE!!
 
-       std::ofstream file1;
-    file1.open( "1_Intersection.txt" );
-
-       for(int i = 0; i < (int)(_intercircleX.size()); i++){
-               file1<<"X= "<<_intercircleX[i] << "\tY= "<<_intercircleY[i] << "\tDist= "<<_intercircleDist[i]<<std::endl;
-       }
-       file1.close();
+//EED 2020-03-31
+//     std::ofstream file1;
+//    file1.open( "1_Intersection.txt" );
+//     for(int i = 0; i < (int)(_intercircleX.size()); i++)
+//  {
+//             file1<<"X= "<<_intercircleX[i] << "\tY= "<<_intercircleY[i] << "\tDist= "<<_intercircleDist[i]<<std::endl;
+//     } // for i
+//     file1.close();
                
-
        delete vecf;
 }
 //-----------------------------------------------------------------------------------------------------------------------------------------
@@ -535,15 +569,17 @@ void AutoControlPoints::maxminLocal()
        }
        vecf->copyVector(&tempZ,&_controlpointsZ);
 
-//JCP 26-09-08 
-       std::ofstream file1;
-    file1.open( "2_MaxMin.txt" );
+//EED 2020-03-31
+////JCP 26-09-08       
+//     std::ofstream file1;
+//    file1.open( "2_MaxMin.txt" );
+//     for(int i = 0; i < (int)(_controlpointsX.size()); i++)
+//  {
+//             file1<<"X= "<<_controlpointsX[i] << "\tY= "<<_controlpointsY[i] << "\tZ= "<<_controlpointsZ[i]<<std::endl;
+//     } // for i
+//     file1.close();
+////JCP 26-09-08
 
-       for(int i = 0; i < (int)(_controlpointsX.size()); i++){
-               file1<<"X= "<<_controlpointsX[i] << "\tY= "<<_controlpointsY[i] << "\tZ= "<<_controlpointsZ[i]<<std::endl;
-       }
-       file1.close();
-//JCP 26-09-08
        delete vecf;
 }
 //-----------------------------------------------------------------------------------------------------------------------------------------
@@ -582,13 +618,14 @@ void AutoControlPoints::fixBetweenPoints(double val)
                vecf->copyVector(&tempY,&_controlpointsY);
                vecf->copyVector(&tempZ,&_controlpointsZ);
 
-               std::ofstream file1;
-               file1.open( "3_PointsFixed.txt" );
-
-               for(int i = 0; i < (int)(_controlpointsX.size()); i++){
-                       file1<<"X= "<<_controlpointsX[i] << "\tY= "<<_controlpointsY[i] << "\tZ= "<<_controlpointsZ[i]<<std::endl;
-               }
-               file1.close();
+//EED 2020-03-31
+//             std::ofstream file1;
+//             file1.open( "3_PointsFixed.txt" );
+//             for(int i = 0; i < (int)(_controlpointsX.size()); i++)
+//             {
+//                     file1<<"X= "<<_controlpointsX[i] << "\tY= "<<_controlpointsY[i] << "\tZ= "<<_controlpointsZ[i]<<std::endl;
+//             } // for  i
+//             file1.close();
 
                delete vecf;
        }
@@ -760,7 +797,7 @@ JCP 30-08-09 */
                        {
                                //TYPE: LE PLUS PRES VOISIN
                                dist  = sqrt( pow( _intervectorX[i].get_vec(j)-_interpointsX[i-1],2 ) + pow( _intervectorY[i].get_vec(j)-_interpointsY[i-1],2 ) );
-                               //TYPE: LE PLUS PRES DANS LA MÊME DROITE
+                               //TYPE: LE PLUS PRES DANS LA MME DROITE
                                //dist = sqrt(pow(_intervectorX[i].get_vec(j)-_intervectorX[i].get_var(),2)+pow(_intervectorY[i].get_vec(j)-_intervectorY[i].get_var(),2));
                                
                                if( dist < min )
@@ -1275,13 +1312,11 @@ void AutoControlPoints::NearMaxError2Control()
                        nearp = distA;
                        _posn = _posA;
 
-               }
-               else
-               {
+               } else {
                        nearp = distB;
                        _posn = _posB;
-               }
-       }
+               } // if dist
+       } // if interpointsX
 }
 //-----------------------------------------------------------------------------------------------------------------------------------------
 void AutoControlPoints::MoveControlPointInContour(std::vector<double>*InX, std::vector<double>*InY, std::vector<double>*InZ)
@@ -1324,14 +1359,12 @@ for(i=0; i<_controlpointsX.size(); i++)
                        _controlpointsX.push_back( (*InX)[_contIncontpos[_posn]] );
                        _controlpointsY.push_back( (*InY)[_contIncontpos[_posn]] );
                        _controlpointsZ.push_back( (*InZ)[_contIncontpos[_posn]] );
-               }
-               else
-               {
+               } else {
                        _controlpointsX.push_back( tempX[i] );
                        _controlpointsY.push_back( tempY[i] );
                        _controlpointsZ.push_back( tempZ[i] );
-               }
-       }
+               } // if i
+       } // for
 
        fixBetweenPoints(5.0);
        PossibleIntersections(InX,InY,InZ);
@@ -1365,14 +1398,12 @@ for(i=0; i<_controlpointsX.size(); i++)
                                _controlpointsX.push_back( (*InX)[_contIncontpos[posact]] );
                                _controlpointsY.push_back( (*InY)[_contIncontpos[posact]] );
                                _controlpointsZ.push_back( (*InZ)[_contIncontpos[posact]] );
-                       }
-                       else
-                       {
+                       } else {
                                _controlpointsX.push_back( tempX[i] );
                                _controlpointsY.push_back( tempY[i] );
                                _controlpointsZ.push_back( tempZ[i] );
-                       }
-               }
+                       } // if i
+               } // for i
                if(direction == 1)
                {
                        posact = posact+1;
@@ -1468,8 +1499,8 @@ double AutoControlPoints::MoveAndAverage(int dir, std::vector<double>*InX, std::
                                ErrorBetweenContours();
                                promactual1 = vf->promVector(&_errorvector,false);
                                j--;
-                       }
-               }
+                       } // if j
+               }// for i
                delete vf;
        }
        return 99999;
@@ -1547,6 +1578,7 @@ printf("\n");
                int inicontrolpoints = cpX.size();
                double inipercentage = (inicontrolpoints*100)/InX->size();
                int h=0;
+
                if(inicontrolpoints<10)
                {
                        int points = (int)((inipercentage*3*InX->size())/100);
@@ -1558,9 +1590,10 @@ printf("\n");
                                        _controlpointsY.push_back( (*InY)[i] );
                                        _controlpointsZ.push_back( (*InZ)[i] );
                                        h = 0;
-                               }
-                       }
-               }
+                               } // if h
+                       } // for i
+               } // if initontrolpoints
+
                if(inicontrolpoints>=10)
                {
                        int points = (int)((inipercentage*2*InX->size())/100);
@@ -1572,9 +1605,9 @@ printf("\n");
                                        _controlpointsY.push_back( (*InY)[i] );
                                        _controlpointsZ.push_back( (*InZ)[i] );
                                        h = 0;
-                               }
-                       }
-               }
+                               } // if h
+                       } // for int i
+               } // if inicontrolpoints
        }
 /*
        fixBetweenPoints(5.0);
@@ -1681,7 +1714,6 @@ void AutoControlPoints::CalculeControlPoints(std::vector<double>*InX, std::vecto
 //-----------------------------------------------------------------------------------------------------------------------------------------
 void AutoControlPoints::CalculeInitialControlPoints(std::vector<double>*InX, std::vector<double>*InY, std::vector<double>*InZ)
 {
-
        _controlpointsX.clear();
        _controlpointsY.clear();
        _controlpointsZ.clear();