+/*# ---------------------------------------------------------------------
+#
+# 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 "manualContourModel.h"
// ----------------------------------------------------------------------------
_delta_JSTG = 0.0;
//---------------------------------------------------------------------------------------------------------------
+
+//CMRU 17-08-09 -------------------------------------------------------------------------------------------------
+ _realSize = 0.0;
+ _label = "";
+//---------------------------------------------------------------------------------------------------------------
+
}
// ----------------------------------------------------------------------------
_cntSplineX->RemoveAllPoints();
_cntSplineY->RemoveAllPoints();
_cntSplineZ->RemoveAllPoints();
-
+
_cntSplineX->Delete();
_cntSplineY->Delete();
_cntSplineZ->Delete();
_sizePointsContour = size;
}
-
// ----------------------------------------------------------------------------
void manualContourModel::SetCloseContour(bool closeContour)
_delta_JSTG = (double) (np) / double (_sizePointsContour - 1); //Without the -1 the curve is not close
} else {
// _delta_JSTG = (double) (np-1) / double (_sizePointsContour ); //Without the -1 the curve is not close
- _delta_JSTG = (double) (np) / double (_sizePointsContour-1 ); //Without the -1 the curve is not close
+//EED 9/7/2016 _delta_JSTG = (double) (np) / double (_sizePointsContour-1 ); //Without the -1 the curve is not close
+ _delta_JSTG = (double) (np-1) / double (_sizePointsContour-1 ); //Without the -1 the curve is not close
}
//-----------------------------------------------------------------------------------------------------------
}
//JSTG 25-02-08 ---------------------------------------------------------------
void manualContourModel::GetSpline_t_Point(double t, double *x, double *y, double *z)
{
- if (_lstPoints.size()==0)
+ if (_lstPoints.size()==0)
{
*x = 0;
*y = 0;
}
}*/
// ----------------------------------------------------------------------------
-double manualContourModel::GetPathSize()
+double manualContourModel::GetPathSize(double *spc)
{
double result = 0;
double x1,y1,z1;
if (_lstPoints.size()==2)
{
- x1=_lstPoints[0]->GetX();
- y1=_lstPoints[0]->GetY();
- z1=_lstPoints[0]->GetZ();
- x2=_lstPoints[1]->GetX();
- y2=_lstPoints[1]->GetY();
- z2=_lstPoints[1]->GetZ();
+ x1 = spc[0] * _lstPoints[0]->GetX();
+ y1 = spc[1] * _lstPoints[0]->GetY();
+ z1 = spc[2] * _lstPoints[0]->GetZ();
+ x2 = spc[0] * _lstPoints[1]->GetX();
+ y2 = spc[1] * _lstPoints[1]->GetY();
+ z2 = spc[2] * _lstPoints[1]->GetZ();
result = sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1) );
}
if (_lstPoints.size()>2)
//GetSplinePoint(0,x1,y1,z1);
GetSpline_i_Point(0,&x1,&y1,&z1);
+ x1 = spc[0] * x1;
+ y1 = spc[1] * y1;
+ z1 = spc[2] * z1;
//for( i = 1; i < nps; i++ )
for( i = 1; i < GetNumberOfPointsSpline(); i++ )
{
//t = delta * (double)i;
//GetSplinePoint(t,x2,y2,z2);
GetSpline_i_Point(i,&x2,&y2,&z2);
+ x2 = spc[0] * x2;
+ y2 = spc[1] * y2;
+ z2 = spc[2] * z2;
//---------------------------------------------------------
result=result + sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1) );
x1=x2;
return result;
}
+
+
// ----------------------------------------------------------------------------
-double manualContourModel::GetPathArea()
+double manualContourModel::GetPathArea(double *spc)
{
double result = 555;
if ((_lstPoints.size()>=3) && IfCloseContour()==true )
GetSpline_i_Point(i,&x1,&y1,&z1);
GetSpline_i_Point(j,&x2,&y2,&z2);
//----------------------------------------------------------------
+ x1=spc[0]*x1;
+ y1=spc[1]*y1;
+ z1=spc[2]*z1;
+ x2=spc[0]*x2;
+ y2=spc[1]*y2;
+ z2=spc[2]*z2;
area +=
(x1 * y2 ) -
( x2 * y1 );
rn[1]=rp[1]-y1;
rn[2]=rp[2]-z1;
}
- }
- else
- {
+ } else {
rp[0] = 0;
rp[1] = 0;
rp[2] = 0;
fprintf(ff,"%f %f %f\n", mp->GetX(), mp->GetY(), mp->GetZ() );
}
}
+//CMRU 03-09-09-----------------------------------------------------------------------------------------------
+void manualContourModel::SaveData(FILE *ff)
+{
+ std::string etiqueta = GetLabel();
+ if(etiqueta.empty())
+ fprintf(ff,"Label: NO_LABEL\n");
+ else
+ fprintf(ff,"Label: %s\n",etiqueta.c_str());
+ fprintf(ff,"Real_Size: %f\n",GetRealSize());
+}
+
+void manualContourModel::OpenData(FILE *ff)
+{
+ char tmp[255];
+ fscanf(ff,"%s",tmp); // Label:
+ fscanf(ff,"%s",tmp); // value
+ std::cout<<tmp<<std::endl;
+ //if(strcmp(tmp != "NO_LABEL") // JPR
+ if(strcmp(tmp,"NO_LABEL") != 0)
+ SetLabel(tmp);
+
+ fscanf(ff,"%s",tmp); // Real_size
+ fscanf(ff,"%s",tmp);// #
+
+ //tmp.ToDouble(&tmp);
+ SetRealSize(atof(tmp));
+}
+
+//------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------
_lstPoints.push_back( theManualPoint );
}
-std::vector<manualContourModel*> manualContourModel::ExploseModel( )
+std::vector<manualBaseModel*> manualContourModel::ExploseModel( )
{
- std::vector<manualContourModel*> lstTmp;
+ std::vector<manualBaseModel*> lstTmp;
lstTmp.push_back(this);
return lstTmp;
}
mp->SetPointY( mp->GetY()*Ay + By );
}
}
+
+
+//CMRU 17-08-09----------------------------------------------------------------------------
+void manualContourModel::SetLabel(std::string newLabel)
+{
+ _label = newLabel;
+}
+
+void manualContourModel::SetRealSize(double newRealSize)
+{
+ _realSize = newRealSize;
+}
+
+double manualContourModel::GetRealSize()
+{
+ return _realSize;
+}
+
+std::string manualContourModel::GetLabel()
+{
+ return _label;
+}
+//----------------------------------------------------------------------------