]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualContourModel.cpp
#3093 creaMaracasVisu Feature New Normal - Contour Information in pixels and image...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualContour / manualContourModel.cpp
index b57c3b333b7dda64ba8ef595e35d8afd19aaf7ce..e5ab192a368b3d2889b255b2abbf733c2b8388de 100644 (file)
@@ -414,7 +414,7 @@ void manualContourModel::GetSpline_t_Point(double t, double *x, double *y, doubl
        }
 }*/
 // ----------------------------------------------------------------------------
-double manualContourModel::GetPathSize()
+double manualContourModel::GetPathSize(double *spc)
 {
        double result = 0;
        double x1,y1,z1;
@@ -428,12 +428,12 @@ double manualContourModel::GetPathSize()
 
        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)
@@ -447,12 +447,18 @@ double manualContourModel::GetPathSize()
                //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;
@@ -463,8 +469,10 @@ double manualContourModel::GetPathSize()
 
        return result;
 }
+
+
 // ----------------------------------------------------------------------------
-double manualContourModel::GetPathArea()
+double manualContourModel::GetPathArea(double *spc)
 {
        double result = 555;
        if ((_lstPoints.size()>=3) && IfCloseContour()==true )
@@ -499,6 +507,12 @@ double manualContourModel::GetPathArea()
                        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 );
@@ -608,9 +622,7 @@ void manualContourModel::GetNearestPointAndNormal(double *p, double *rp,  double
                        rn[1]=rp[1]-y1;
                        rn[2]=rp[2]-z1;
                }
-       }
-       else
-       {
+       } else {
                rp[0] = 0;
                rp[1] = 0;
                rp[2] = 0;