]> Creatis software - bbtk.git/blobdiff - packages/vtk/src/bbvtkSphereList.cxx
2042 Feature bbpConfigurator
[bbtk.git] / packages / vtk / src / bbvtkSphereList.cxx
index 50889bd9dc746a47fba9e79a37a34de6f5f8c0c8..24624139132c46c63f31b4217fa60e039438aec5 100644 (file)
@@ -38,6 +38,49 @@ namespace bbvtk
 BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SphereList)
 BBTK_BLACK_BOX_IMPLEMENTATION(SphereList,bbtk::AtomicBlackBox);
 
+double SphereList::GetRadio(int i)
+{
+    double radio;
+       if (bbGetInputlstRadio().size()==0)
+        {
+            radio = 1.0;
+        } else if (bbGetInputlstRadio().size() < i )
+       {
+            radio = bbGetInputlstRadio()[i];
+        } else  
+        {
+            radio = bbGetInputlstRadio()[ bbGetInputlstRadio().size() - 1 ];
+        }  
+
+       return radio;
+}
+
+
+void SphereList::GetPoint(int i, double &px,double &py,double &pz)        
+ {
+      double spc[3];
+      if (bbGetInputSpacing().size()==3)
+      {
+               spc[0]=bbGetInputSpacing()[0];
+               spc[1]=bbGetInputSpacing()[1];
+               spc[2]=bbGetInputSpacing()[2];
+      } else {
+               spc[0]=spc[1]=spc[2]=1;
+       }
+
+       px = bbGetInputlstPointX()[i]*spc[0];
+       if (bbGetInputlstPointY().size() == bbGetInputlstPointX().size() )
+       {
+               py = bbGetInputlstPointY()[i]*spc[1];
+       }
+               if (bbGetInputlstPointZ().size() == bbGetInputlstPointX().size() )
+       {                       
+               pz = bbGetInputlstPointZ()[i]*spc[2];
+       }
+}  
+
+                       
+
 void SphereList::Process()
 {
 
@@ -45,8 +88,7 @@ void SphereList::Process()
        double px = 0.0;
        double py = 0.0;
        double pz = 0.0;
-       double radio;
-       double spc[3];
+       
  
        int last_valid_color_index = 0;
 
@@ -57,66 +99,41 @@ void SphereList::Process()
                if (sphereActor.size() != 0)
                 {
                   for (int i = 0; i < sphereActor.size(); i++)
-                    sphereActor[i] -> GetProperty() -> SetOpacity( bbGetInputOpacity() );
-               }
-                else
-                {
-                    if (bbGetInputSpacing().size()==3)
-                    {
-                       spc[0]=bbGetInputSpacing()[0];
-                       spc[1]=bbGetInputSpacing()[1];
-                       spc[2]=bbGetInputSpacing()[2];
-                    }
-                    else
-                    {
-                       spc[0]=spc[1]=spc[2]=1;
-                    }
+                  {
+                       GetPoint(i, px,py,pz);
+                       sphereActor[i] ->SetPosition( px,py,pz );
+                       sphereActor[i] -> GetProperty() -> SetOpacity( bbGetInputOpacity() );
+                       vtkspheresourceLst[i] -> SetRadius( GetRadio(i) ); 
+                 } // for i
+               } else {
+                   
 
                     iMin=0;
                     iMax=bbGetInputlstPointX().size();
-                    printf("EED SphereList::Process   iMax=%d \n", iMax);
-                    for (int i = 0; i < iMax; i++)
-                      {
-                        std::cout << "CM SphereList::Process i=" <<  i  << " bbGetInputlstPointX()[i]=" << bbGetInputlstPointX()[i] << std::endl;
-                        std::cout << "CM SphereList::Process i=" <<  i  << " bbGetInputlstPointY()[i]=" << bbGetInputlstPointY()[i] << std::endl;
-                        std::cout << "CM SphereList::Process i=" <<  i  << " bbGetInputlstPointZ()[i]=" << bbGetInputlstPointZ()[i] << std::endl;
-                      }
-                    // If the vector Y or respectively the vector Z has a different size from the vector X, the position value py or respectively pz is set to 0.
+//                    printf("EED SphereList::Process   iMax=%d \n", iMax);
+//                    for (int i = 0; i < iMax; i++)
+//                      {
+//                        std::cout << "CM SphereList::Process i=" <<  i  << " bbGetInputlstPointX()[i]=" << bbGetInputlstPointX()[i] << std::endl;
+//                        std::cout << "CM SphereList::Process i=" <<  i  << " bbGetInputlstPointY()[i]=" << bbGetInputlstPointY()[i] << std::endl;
+//                        std::cout << "CM SphereList::Process i=" <<  i  << " bbGetInputlstPointZ()[i]=" << bbGetInputlstPointZ()[i] << std::endl;
+//                      } // for i
+                   // If the vector Y or respectively the vector Z has a different size from the vector X, the position value py or respectively pz is set to 0.
                     for ( int i=iMin ; i<iMax; i=i+1 )
                     {
-                       px = bbGetInputlstPointX()[i]*spc[0];
-                       if (bbGetInputlstPointY().size() == bbGetInputlstPointX().size() )
-                       {
-                           py = bbGetInputlstPointY()[i]*spc[1];
-                       }
-                       if (bbGetInputlstPointZ().size() == bbGetInputlstPointX().size() )
-                       {                       
-                           pz = bbGetInputlstPointZ()[i]*spc[2];
-                       }
+                         
 
-                       // If the number of elements in the radio list is different from the number of X coordinates, the radio value is set to 1.
-                       if (bbGetInputlstRadio().size() == bbGetInputlstPointX().size() )
-                       {
-                           radio = bbGetInputlstRadio()[i];
-                        }
-                       else
-                       {
-                            if (bbGetInputlstRadio().size()>=1)
-                            {
-                                radio = bbGetInputlstRadio()[ bbGetInputlstRadio().size() - 1 ];
-                            } 
-                            else 
-                            {
-                                radio = 1.0;
-                            }
-                       }
+                        GetPoint(i, px,py,pz);
+
+                       
 
                        // Sphere
                        vtkSphereSource * newSphere =  vtkSphereSource::New();
+                       vtkspheresourceLst.push_back(newSphere);
 
                        newSphere -> SetThetaResolution(20);
                        newSphere -> SetPhiResolution(20);
-                       newSphere -> SetRadius(radio); 
+                       newSphere -> SetRadius( GetRadio(i) ); 
 
                        vtkPolyDataMapper * newMapper = vtkPolyDataMapper::New();
                        newMapper -> SetInput( newSphere -> GetOutput() );