+/*# ---------------------------------------------------------------------
+#
+# 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 -----------------------------------------------------------------------------------------------------------------
_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
_circleY.push_back(tempY[i]);
m1 = Slope(tempX[i],tempY[i],cx,cy);//slope of the radius
min = 9999;
- for(j=0; j<InX->size(); j++)
+ for(j=0; j<(int)(InX->size()); j++)
{
jj = (j+1)%(InX->size());
m2 = Slope((*InX)[j],(*InY)[j],(*InX)[jj],(*InY)[jj]);//Slope of the vector between the adjacent points
//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;
}
//-----------------------------------------------------------------------------------------------------------------------------------------
}
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;
}
//-----------------------------------------------------------------------------------------------------------------------------------------
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;
}
{
//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 M�ME 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 )
if(posA<posB)
{
posA = posB+1;
- if(posB = _controlpointsX.size()-1) // ?!? // JPRx // ?!? EED
+ if( ( posB = _controlpointsX.size()-1) ) // ?!? // JPRx // ?!? EED
{
posA = 0;
}
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)
_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);
_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;
ErrorBetweenContours();
promactual1 = vf->promVector(&_errorvector,false);
j--;
- }
- }
+ } // if j
+ }// for i
delete vf;
}
return 99999;
int inicontrolpoints = cpX.size();
double inipercentage = (inicontrolpoints*100)/InX->size();
int h=0;
+
if(inicontrolpoints<10)
{
int points = (int)((inipercentage*3*InX->size())/100);
_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);
_controlpointsY.push_back( (*InY)[i] );
_controlpointsZ.push_back( (*InZ)[i] );
h = 0;
- }
- }
- }
+ } // if h
+ } // for int i
+ } // if inicontrolpoints
}
/*
fixBetweenPoints(5.0);
//-----------------------------------------------------------------------------------------------------------------------------------------
void AutoControlPoints::CalculeInitialControlPoints(std::vector<double>*InX, std::vector<double>*InY, std::vector<double>*InZ)
{
-
_controlpointsX.clear();
_controlpointsY.clear();
_controlpointsZ.clear();