X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2FContour%2FAutoControlPoints.cxx;h=fc3b1ab42e45e98efa23b304a8bdd5cfde8df625;hb=688e59e2d8a0f8db3d28dfd5b2f8a256903b2714;hp=c17c1c5a2d0ac25939cb472ed0d3d6a79b443141;hpb=4443a8fe2b4992b6abee8531917fd0803018fc12;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/Contour/AutoControlPoints.cxx b/lib/maracasVisuLib/src/interface/wxWindows/Contour/AutoControlPoints.cxx index c17c1c5..fc3b1ab 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/Contour/AutoControlPoints.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/Contour/AutoControlPoints.cxx @@ -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 ----------------------------------------------------------------------------------------------------------------- @@ -201,7 +226,7 @@ void AutoControlPoints::CirclePoints(double cx, double cy, double r, double grad } //------------------------------------------------------------------------------------------------------------------------------------------ void AutoControlPoints::ChargeSpline( ) - { + { int size = _controlpointsX.size(); if(size != 0) { @@ -214,7 +239,6 @@ void AutoControlPoints::CirclePoints(double cx, double cy, double r, double grad { _mContourModel->SetCloseContour(true); } - _mContourModel->DeleteAllPoints(); _mContourModel->SetNumberOfPointsSpline(_numspline); for(int i=0; iGetPathSize(); -//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]<*InX, std::vector*InY, std::vector*InZ) @@ -1324,14 +1358,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 +1397,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 +1498,8 @@ double AutoControlPoints::MoveAndAverage(int dir, std::vector*InX, std:: ErrorBetweenContours(); promactual1 = vf->promVector(&_errorvector,false); j--; - } - } + } // if j + }// for i delete vf; } return 99999; @@ -1547,6 +1577,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 +1589,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 +1604,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 +1713,6 @@ void AutoControlPoints::CalculeControlPoints(std::vector*InX, std::vecto //----------------------------------------------------------------------------------------------------------------------------------------- void AutoControlPoints::CalculeInitialControlPoints(std::vector*InX, std::vector*InY, std::vector*InZ) { - _controlpointsX.clear(); _controlpointsY.clear(); _controlpointsZ.clear();