]> Creatis software - bbtk.git/blobdiff - packages/std/src/bbstdVectorFilterDouble.cxx
#3267 BBTK Feature New Normal - VectorFilterString Box
[bbtk.git] / packages / std / src / bbstdVectorFilterDouble.cxx
index 9a948a85367b3884d62c19964248e2a20502f9bb..85dee1f9d0d11e21a6c1b8291c6d108fd90b549c 100644 (file)
@@ -197,7 +197,9 @@ void VectorFilterDouble::Process()
                } // for pLstVec                
        } // Type==5
 
-       if (bbGetInputType()==6) // Division  k1
+       if (bbGetInputType()==6) // Division  k1ng gadget (node check, owner GtkCheckButton)
+
+
        {
                int     ipLstvec;
                int     i;
@@ -220,6 +222,94 @@ void VectorFilterDouble::Process()
                } // for pLstVec                
        } // Type==6
 
+
+
+       if (bbGetInputType()==7) 
+       {
+               int i,j;
+               for (j=0;j<In4.size(); j++)
+               {
+                       Out0.push_back( In4[j] );
+                       Out1.push_back( In5[j] );
+                       Out2.push_back( In6[j] );
+               } //
+
+
+               int iGeneral=0,sizeI,sizeLst1Indexes=In3.size();
+               for (i=0; i<sizeLst1Indexes-1;i++) { iGeneral=iGeneral+In3[i]; }
+               sizeI=iGeneral+In3[ sizeLst1Indexes-1 ];
+
+               int jGeneral = 0;
+               int sizeJ        = In7[ 0 ];
+
+               double dist2,dist2Min,dx,dy,dz;
+               int iBack;
+
+               for (j=jGeneral;j<sizeJ;j++) 
+               {
+                       dist2Min=1000000;
+                       for (i=iGeneral;i<sizeI;i++) 
+                       {       
+                               dx              = In0[i]-In4[j];
+                               dy              = In1[i]-In5[j];
+                               dz              = In2[i]-In6[j];
+                               dist2           = dx*dx + dy*dy + dz*dz;
+                               if (dist2<dist2Min) 
+                               {
+                                               dist2Min=dist2;
+                                               iBack=i;
+                               } // if
+                       } // for j
+                       Out0[j]=In0[iBack]; 
+                       Out1[j]=In1[iBack]; 
+                       Out2[j]=In2[iBack]; 
+               } // for i
+
+
+       }       // Type 7
+
+
+
+       if (bbGetInputType()==8)   // order all vectors using as base the vector In0
+       {
+printf("EED VectorFilterDouble::Process Type 8 Start\n");
+               double tmp;
+               int i,j,ii,sizeII;
+               sizeII=pLstVec.size();
+
+
+               int size=In0.size();
+               for (i=0;i<size; i++)
+               {
+                       for (ii=0;ii<sizeII;ii++)
+                       {
+                                (*pLstVecOut[ii]).push_back( (*pLstVec[ii])[i] ); 
+                       } // for ii
+               } // i
+               for (i=0;i<size;i++)
+               {
+                       for (j=i;j<size;j++)
+                       {
+                               if ((*pLstVecOut[0])[j] <= (*pLstVecOut[0])[i] ) 
+                               {       
+                                       
+                                       for (ii=0;ii<sizeII;ii++)
+                                       {
+                                               tmp = (*pLstVecOut[ii])[i]; 
+                                               (*pLstVecOut[ii])[i] = (*pLstVecOut[ii])[j]; 
+                                               (*pLstVecOut[ii])[j] = tmp; 
+//                                             tmp=Out0[i]; Out0[i]=Out0[j]; Out0[j]=tmp; 
+                                       }
+                               }
+                       } // for j
+               } // for i
+printf("EED VectorFilterDouble::Process Type 8 End\n");
+
+       } // Type 8
+
+
+
+
        bbSetOutputOut0( Out0 );
        bbSetOutputOut1( Out1 );
        bbSetOutputOut2( Out2 );