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)
{
int size,size2;
double dist,distMin;
int i,iBack;
+ int ig;
double dx,dy,dz;
std::vector<double> LstTmpX;
std::vector<double> LstTmpY;
std::vector<double> LstTmpZ;
if (sizeLstIndexIn>=2)
{
+
for (iLstIndexIn=0; iLstIndexIn<sizeLstIndexIn-1; iLstIndexIn++)
{
size = (*lstIndexsIn)[iLstIndexIn];
//find min distance and iBack
distMin = 10000000;
iBack = 0;
- for ( i=0 ; i<size2 ; i++ )
+
+
+ for (ig=0; ig<size; ig++)
+ {
+ for ( i=0 ; i<size2 ; i++ )
+ {
+ dx = (*lstInX)[iGeneral+ig]-(*lstInX)[iGeneral+size+i];
+ dy = (*lstInY)[iGeneral+ig]-(*lstInY)[iGeneral+size+i];
+ dz = (*lstInZ)[iGeneral+ig]-(*lstInZ)[iGeneral+size+i];
+ dist= sqrt( dx*dx + dy*dy + dz*dz );
+ if ( dist<distMin )
+ {
+ iBack = i-ig;
+ distMin = dist;
+ }
+ } // for i size2
+ } // for ig size
+
+if (iBack<0)
+{
+ printf("- ");
+ iBack = iBack + size2;
+}
+
+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)
{
- dx = (*lstInX)[iGeneral]-(*lstInX)[iGeneral+size+i];
- dy = (*lstInY)[iGeneral]-(*lstInY)[iGeneral+size+i];
- dz = (*lstInZ)[iGeneral]-(*lstInZ)[iGeneral+size+i];
- dist= sqrt( dx*dx + dy*dy + dz*dz );
- if ( dist<distMin )
+ LstTmpX.clear();
+ LstTmpY.clear();
+ LstTmpZ.clear();
+ for (i=0 ; i<size2 ; i++)
+ {
+ ii= (i+iBack)%size2;
+ LstTmpX.push_back( (*lstInX)[iGeneral+size+ii] );
+ LstTmpY.push_back( (*lstInY)[iGeneral+size+ii] );
+ LstTmpZ.push_back( (*lstInZ)[iGeneral+size+ii] );
+ } // for i
+ for (i=0 ; i<size2 ; i++)
{
- iBack = i;
- distMin = dist;
- }
- } // for dist
+ (*lstInX)[iGeneral+size+i] = LstTmpX[i];
+ (*lstInY)[iGeneral+size+i] = LstTmpY[i];
+ (*lstInZ)[iGeneral+size+i] = LstTmpZ[i];
+ } // for i
+ }
+ iGeneral=iGeneral+size;
+ } // for iLstIndexIn
+
+//------------
+
+ iGeneral=0;
+
+ for (iLstIndexIn=0; iLstIndexIn<sizeLstIndexIn-1; iLstIndexIn++)
+ {
+ size = (*lstIndexsIn)[iLstIndexIn];
+ size2 = (*lstIndexsIn)[iLstIndexIn+1];
+ //find min distance and iBack
+ distMin = 10000000;
+ iBack = 0;
+
+
+// for (ig=0; ig<size; ig++)
+// {
+ for ( i=0 ; i<size2 ; i++ )
+ {
+ dx = (*lstInX)[iGeneral]-(*lstInX)[iGeneral+size+i];
+ dy = (*lstInY)[iGeneral]-(*lstInY)[iGeneral+size+i];
+ dz = (*lstInZ)[iGeneral]-(*lstInZ)[iGeneral+size+i];
+ dist= sqrt( dx*dx + dy*dy + dz*dz );
+ if ( dist<distMin )
+ {
+ iBack = i;
+ distMin = dist;
+ }
+ } // for i size2
+// } // 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);
+
if (iBack!=0)
{
LstTmpX.clear();
}
iGeneral=iGeneral+size;
} // for iLstIndexIn
- } // sizeLstIndexIn
+
+ } // if sizeLstIndexIn
+
}