+/*# ---------------------------------------------------------------------
+#
+# 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();
+
+// EED 2017-05-30
+// _pathsize = _mContourModel->GetPathSize( );
+ double spc[3];
+ spc[0]=1;
+ spc[1]=1;
+ spc[2]=1;
+ _pathsize = _mContourModel->GetPathSize( spc );
+
+
//printf("\nPATH SIZE = %f",_pathsize);
std::ofstream file1;
//FIND THE INTERSECTIONS BETWEEN THE CIRCLE AND THE CONTOUR
int j,jj;
bool interRad = false;
- double m1, /*mn=0,*/ m2,xinter,yinter,xmin,ymin,min,dist;
+ double m1, /*mn=0,*/ m2,xinter,yinter,xmin,ymin,min,dist; // JPRx
_intercircleX.clear();
_intercircleY.clear();
_intercircleDist.clear();
//std::ofstream file1;
//file1.open( "Temp.txt" );
- for(i=0; i<tempX.size(); i++)
+ for(i=0; i<(int)(tempX.size()); i++)
{
// fprintf(fd,"\n Para X = %f, Y = %f",tempX[i],tempY[i]);
_circleX.push_back(tempX[i]);
_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
tempDD.push_back(_interbewteencircleDist[i]);
// fprintf(fdata,"\n%f %f %f",_interbewteencircleDist[j],_interbewteencircleX[j],_interbewteencircleY[j]);
}
- for(i=_interbewteencirclePos[0]; i<_intercircleX.size(); i++)
+ for(i=_interbewteencirclePos[0]; i<(int)(_intercircleX.size()); i++)
{
tempXX.push_back(_intercircleX[i]);
tempYY.push_back(_intercircleY[i]);
std::ofstream file1;
file1.open( "1_Intersection.txt" );
- for(int i = 0; i < _intercircleX.size(); i++){
+ for(int i = 0; i < (int)(_intercircleX.size()); i++){
file1<<"X= "<<_intercircleX[i] << "\tY= "<<_intercircleY[i] << "\tDist= "<<_intercircleDist[i]<<std::endl;
}
file1.close();
//JCP 26 - 09 - 08 This change was du to the posibility of having a maximum or a minimum value in the limits of
//JCP 26 - 09 - 08 the array
double lastdist, currentdist, nextdist;
- for(i=0; i < _intercircleDist.size(); i++)
+ for(i=0; i < (int)(_intercircleDist.size()); i++)
{
//FOR MAXIMUM LOCAL
//JCP 26-09-08
if(i == 0){
lastdist = _intercircleDist[_intercircleDist.size()-1];
nextdist = _intercircleDist[i+1];
- }else if (i == _intercircleDist.size()-1){
+ }else if (i == (int)(_intercircleDist.size())-1){
lastdist = _intercircleDist[i-1];
nextdist = _intercircleDist[0];
}else{
vecf->copyVector(&_minlocalX,&_controlpointsX);
vecf->copyVector(&_minlocalY,&_controlpointsY);
- for(i=0; i<_minlocalX.size(); i++)
+ for(i=0; i<(int)(_minlocalX.size()); i++)
{
tempZ.push_back(_controlpointsZ[0]);
}
std::ofstream file1;
file1.open( "2_MaxMin.txt" );
- for(int i = 0; i < _controlpointsX.size(); i++){
+ for(int i = 0; i < (int)(_controlpointsX.size()); i++){
file1<<"X= "<<_controlpointsX[i] << "\tY= "<<_controlpointsY[i] << "\tZ= "<<_controlpointsZ[i]<<std::endl;
}
file1.close();
std::ofstream file1;
file1.open( "3_PointsFixed.txt" );
- for(int i = 0; i < _controlpointsX.size(); i++){
+ for(int i = 0; i < (int)(_controlpointsX.size()); i++){
file1<<"X= "<<_controlpointsX[i] << "\tY= "<<_controlpointsY[i] << "\tZ= "<<_controlpointsZ[i]<<std::endl;
}
file1.close();
//EED 22 Sep 2008
// FILE *fd;
// fd = fopen("C:/bbtk_JS/data/interBetweenContours.txt","w");
- for(i=0; i<_chargecontrolpointsX.size(); i++)
+ for(i=0; i<(int)(_chargecontrolpointsX.size()); i++)
{
ii = (i+1)%(_chargecontrolpointsX.size());
vecX->set_var(_chargecontrolpointsX[i]);
vecY->set_var(_chargecontrolpointsY[i]);
- 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]);
printf("\n\n There is an invalid intersection: Must see AutoControlPoints::IntersectionPoints() method");
}
JCP 30-08-09 */
- for(i=0; i<_intervectorX.size(); i++){
+ for(i=0; i<(int)(_intervectorX.size()); i++){
min = 9999;
posj = -1;
for(j=0; j<_intervectorX[i].getsize_vec(); j++) {
{
//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 )
// FILE *fd;
// fd = fopen("C:/bbtk_JS/data/interErrorData.txt","w");
- for(i=0; i<_interpointsX.size(); i++)
+ for(i=0; i<(int)(_interpointsX.size()); i++)
{
_errorvector.push_back( (sqrt( pow( _interpointsX[i]-_intervectorX[i].get_var(),2 ) + pow( _interpointsY[i]-_intervectorY[i].get_var(),2 ) )/_pathsize)*100 );
// fprintf(fd,"\n%d %f",i,_errorvector[i]);
}
// fclose(fd);
double max = -1;
- for(i=0; i<_errorvector.size(); i++)
+ for(i=0; i<(int)(_errorvector.size()); i++)
{
if(_interpointsX[i] != -1)
{
for(i=(int)_errorpos; findA!=true; i++)
{
ii = i%_errorvector.size();
- for(j=0; j<_controlpointsX.size(); j++)
+ for(j=0; j<(int)(_controlpointsX.size()); j++)
{
if( ((float)_controlpointsX[j]-1.5<=(float)_intervectorX[ii].get_var()) && ((float)_intervectorX[ii].get_var()<=(float)_controlpointsX[j]+1.5) &&
((float)_controlpointsY[j]-1.5<=(float)_intervectorY[ii].get_var()) && ((float)_intervectorY[ii].get_var()<=(float)_controlpointsY[j]+1.5) )
{
i = _errorvector.size();
}
- for(j=0; j<_controlpointsX.size(); j++)
+ for(j=0; j<(int)(_controlpointsX.size()); j++)
{
if( ((float)_controlpointsX[j]-1.5<=(float)_intervectorX[i].get_var()) && ((float)_intervectorX[i].get_var()<=(float)_controlpointsX[j]+1.5) &&
((float)_controlpointsY[j]-1.5<=(float)_intervectorY[i].get_var()) && ((float)_intervectorY[i].get_var()<=(float)_controlpointsY[j]+1.5) )
if(posA<posB)
{
posA = posB+1;
- if(posB = _controlpointsX.size()-1) // ?!? // JPRx
+ if( ( posB = _controlpointsX.size()-1) ) // ?!? // JPRx // ?!? EED
{
posA = 0;
}
std::vector<double> tempX;
std::vector<double> tempY;
std::vector<double> tempZ;
- for(i=0; i<_controlpointsX.size(); i++)
+ for(i=0; i<(int)(_controlpointsX.size()); i++)
{
if(i == id)
{
// FILE *fd;
// fd = fopen("C:/bbtk_JS/data/InterBetweenControl.txt","w");
- for(i=0; i<_chargecontrolpointsX.size()-1; i++)
+ for(i=0; i<(int)(_chargecontrolpointsX.size())-1; i++)
{
ii = (i+1)%(_chargecontrolpointsX.size());
m1 = Slope(_chargecontrolpointsX[i],_chargecontrolpointsY[i],_chargecontrolpointsX[ii],_chargecontrolpointsY[ii]);
vecX->set_var(_chargecontrolpointsX[i]);
vecY->set_var(_chargecontrolpointsY[i]);
- for(j=0; j<_chargecontrolpointsX.size(); j++)
+ for(j=0; j<(int)(_chargecontrolpointsX.size()); j++)
{
jj = (j+1)%(_chargecontrolpointsX.size());
m2 = Slope(_chargecontrolpointsX[j],_chargecontrolpointsY[j],_chargecontrolpointsX[jj],_chargecontrolpointsY[jj]);
float vecx,vecy,varx,vary;
// FILE *fd;
// fd = fopen("C:/bbtk_JS/data/InterBetweenControlFix.txt","w");
- for(i=0; i<_intervecXX.size(); i++)
+ for(i=0; i<(int)(_intervecXX.size()); i++)
{
Vector *vx = new Vector();
Vector *vy = new Vector();
tempX.clear();
tempY.clear();
int i,j,k;
- //double dist1,dist2;
+ //double dist1,dist2; // JPRx
//EED 22 Sep 2008
// FILE *fd;
/*
if(_intervectorX.size() != 0)
{
// fd = fopen("C:/bbtk_JS/data/InterPossibleIntersections.txt","w");
- for(i=0; i<_intervectorX.size(); i++)
+ for(i=0; i<(int)(_intervectorX.size()); i++)
{
// fprintf(fd,"\n Para X = %f, Y = %f",_intervectorX[i].get_var(),_intervectorY[i].get_var());
if(_intervectorX[i].getsize_vec() > 1)
ity = arrY.begin();
itxx = arrX.begin()+1;
ityy = arrY.begin()+1;
- for(j=0; j<arrX.size()-1; j++)
+ for(j=0; j<(int)(arrX.size())-1; j++)
{
// I
if( (*itx > _intervectorX[i].get_var()) && (*ity < _intervectorY[i].get_var()) &&
_intervectorX[i].resetVec();
_intervectorY[i].resetVec();
//printf("\n _intervector(%d) Size = %d",i,_intervectorX[i].getsize_vec());
- for(k=0; k<arrX.size(); k++)
+ for(k=0; k<(int)(arrX.size()); k++)
{
//printf("\n arr(%d) X = %f, Y = %f",k,arrX[k],arrY[k]);
// fprintf(fd,"\n => x_int = %f, y_int = %f",arrX[k],arrY[k]);
_contIncontpos.clear();
bool find = false;
double range = 2;
- for(i=0; i<_controlpointsX.size(); i++)
+ for(i=0; i<(int)(_controlpointsX.size()); i++)
{
find = false;
- for(j=0; (j<InX->size()) && (find!=true); j++)
+ for(j=0; (j<(int)(InX->size())) && (find!=true); j++)
{
if( ((*InX)[j]-range<=_controlpointsX[i]) && (_controlpointsX[i]<=(*InX)[j]+range) && ((*InY)[j]-range<=_controlpointsY[i]) && (_controlpointsY[i]<=(*InY)[j]+range) )
{
PossibleIntersections(InX,InY,InZ);
IntersectionPoints();
ErrorBetweenContours();
- //double promIn = vf->promVector(&_errorvector,false);
+ //double promIn = vf->promVector(&_errorvector,false); // JPRx
std::vector<double> tempX;
std::vector<double> tempY;
_controlpointsY.clear();
_controlpointsZ.clear();
- for(i=0; i<tempX.size(); i++)
+ for(i=0; i<(int)(tempX.size()); i++)
{
if(i==_posn)
{
double promactual;
int posact;
- //int pos1;
- //double prom1final;
+ //int pos1; // JPRx
+ //double prom1final; // JPRx
int pos2;
double prom2final;
for(i=0; promactual > prom; i++)
{
prom = promactual;
- for(i=0; i<tempX.size(); i++)
+ for(i=0; i<(int)(tempX.size()); i++)
{
if(i==_posn)
{
ity = _controlpointsY.begin();
for(i=_contIncontpos[h],j=_contIncontpos[h]; (i>_contIncontpos[hh]) && (promactual1>prom1); i--)
{
- if(j == InX->size())
+ if(j == (int)(InX->size()))
{
j = 0;
}
_controlpointsZ.clear();
vf->copyVector(&_minmaxlocalX,&_controlpointsX);
vf->copyVector(&_minmaxlocalY,&_controlpointsY);
- for(int i=0; i<_minmaxlocalX.size(); i++)
+ for(int i=0; i<(int)(_minmaxlocalX.size()); i++)
{
_controlpointsZ.push_back( (*InZ)[0] );
}
if(inicontrolpoints<10)
{
int points = (int)((inipercentage*3*InX->size())/100);
- for (int i=0; i<InX->size(); i++, h++)
+ for (int i=0; i<(int)(InX->size()); i++, h++)
{
if( h == points )
{
if(inicontrolpoints>=10)
{
int points = (int)((inipercentage*2*InX->size())/100);
- for (int i=0; i<InX->size(); i++, h++)
+ for (int i=0; i<(int)(InX->size()); i++, h++)
{
if( h == points )
{
_controlpointsZ.clear();
vf->copyVector(&_minmaxlocalX,&_controlpointsX);
vf->copyVector(&_minmaxlocalY,&_controlpointsY);
- for(int i=0; i<_minmaxlocalX.size(); i++)
+ for(int i=0; i<(int)(_minmaxlocalX.size()); i++)
{
_controlpointsZ.push_back( (*InZ)[0] );
}