From 76a26347974398d3eb5e911aa949dec7a93c12a4 Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Tue, 9 Feb 2021 07:55:10 +0100 Subject: [PATCH] #3457 Clean Contour Interpolation 3D in Manual Contour Model --- ...bcreaMaracasVisuManualContourModel_Box.cxx | 62 +++++++++++-------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/bbtk/src/bbcreaMaracasVisuManualContourModel_Box.cxx b/bbtk/src/bbcreaMaracasVisuManualContourModel_Box.cxx index e1717ca..b3e434f 100644 --- a/bbtk/src/bbcreaMaracasVisuManualContourModel_Box.cxx +++ b/bbtk/src/bbcreaMaracasVisuManualContourModel_Box.cxx @@ -58,7 +58,7 @@ void ManualContourModel_Box::RedistributionPoints( std::vector *lstOutX, std::vector lstRstX; std::vector lstRstY; std::vector lstRstZ; - int iLstIndexOut,sizeLstIndexOut=lstIndexsOut->size(); + int iLstIndexOut,sizeLstIndexOut = lstIndexsOut->size(); int ii, iGeneral=0; int size; for (iLstIndexOut=0; iLstIndexOut *lstOutX, double dist=0,dist2,distSeg,delta; double dd,dx,dy,dz; int i,k; - for (i=iGeneral+1; i=ii*delta) + ii = i-iGeneral; + if ( dist2+distSeg >= ii*delta ) { dd=(ii*delta-dist2)/distSeg; if (distSeg==0) { - dd=0; + dd = 0; } // if distSeg == 0 lstRstX.push_back( (*lstOutX)[k-1] + dd*dx ); lstRstY.push_back( (*lstOutY)[k-1] + dd*dy ); lstRstZ.push_back( (*lstOutZ)[k-1] + dd*dz ); k=iGeneral+size; } else { - if (k==iGeneral+size-1) + if ( k==iGeneral+size-1 ) { - dd=1; + dd = 1; lstRstX.push_back( (*lstOutX)[k-1] + dd*dx ); lstRstY.push_back( (*lstOutY)[k-1] + dd*dy ); lstRstZ.push_back( (*lstOutZ)[k-1] + dd*dz ); // printf("EED ManualContourModel_Box::RedistributionPoints iLstIndexOut=%d i=%d k=%d dist2+distSeg=%f ii*delta=%f dif=%f \n", iLstIndexOut,i-iGeneral, k-iGeneral, dist2+distSeg , ii*delta , (dist2+distSeg) - ii*delta); } }// if dist2 - dist2=dist2+distSeg; + dist2 = dist2+distSeg; } // for k } //for i if (lstRstX.size()!=size) @@ -217,8 +216,6 @@ void ManualContourModel_Box::ClockwisePoints( std::vector *lstInX, backang=ang; } // for i -printf("EED ManualContourModel_Box::ClockwisePoints cx=%f cy=%f cz=%f flagAng=%d size=%d \n",cx,cy,cz,flagAng, size); -//if (cy<=490) { flagAng = flagAng*(-1); } // Step 3. Invert order of points if (flagAng<0) @@ -396,6 +393,8 @@ void ManualContourModel_Box::ShiftValues( std::vector *lstInX, if (sizeLstIndexIn>=2) { + + for (iLstIndexIn=0; iLstIndexIn *lstInX, distMin = 10000000; iBack = 0; - + // Comparing distance between two contours + // Both contours need the same size for (ig=0; ig *lstInX, } // for ig size -printf("EED ManualContourModel_Box::ShiftValues px=%f py=%f pz=%f iBack=%d/%d size=%d distMin=%f \n", (*lstInX)[iGeneral] , (*lstInY)[iGeneral] , (*lstInZ)[iGeneral], iBack, size2,size, distMin); +//printf("EED ManualContourModel_Box::ShiftValues px=%f py=%f pz=%f iBack=%d/%d size=%d distMin=%f \n", (*lstInX)[iGeneral] , (*lstInY)[iGeneral] , (*lstInZ)[iGeneral], iBack, size2,size, distMin); if (iBack!=0) { @@ -434,11 +434,20 @@ printf("EED ManualContourModel_Box::ShiftValues px=%f py=%f pz=%f iBack=%d/%d LstTmpZ.clear(); for (i=0 ; i