X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fvtk%2Fsrc%2FbbvtkSphereList.cxx;h=24624139132c46c63f31b4217fa60e039438aec5;hb=3b9ae551acae07891da406ab6fd0f0ce392dc923;hp=8d5cfe7069f7604a2069db6f0957d108a9daa25a;hpb=c9eb653b2c0dc9384356c7de79ad9c2422be523c;p=bbtk.git diff --git a/packages/vtk/src/bbvtkSphereList.cxx b/packages/vtk/src/bbvtkSphereList.cxx index 8d5cfe7..2462413 100644 --- a/packages/vtk/src/bbvtkSphereList.cxx +++ b/packages/vtk/src/bbvtkSphereList.cxx @@ -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,67 +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. - // Stops at iMax - 1 because of a bug of the box stdReadColumnsDouble creating an extra line at the end of the file. - for ( int i=iMin ; i