X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fvtk%2Fsrc%2FbbvtkMeasureLength.cxx;h=8cd7e4a037fa69d2f033cbd95514bfd8bd65f659;hb=d024c7fa8b822877956e4dee7fe98ea749415d47;hp=1b2a64551cf1b2b1c8fa7aec5b2563eb1aa7256c;hpb=9a0cff4a61edd2b20bc0d7d00f4509193b8c50b6;p=bbtk.git diff --git a/packages/vtk/src/bbvtkMeasureLength.cxx b/packages/vtk/src/bbvtkMeasureLength.cxx index 1b2a645..8cd7e4a 100644 --- a/packages/vtk/src/bbvtkMeasureLength.cxx +++ b/packages/vtk/src/bbvtkMeasureLength.cxx @@ -13,32 +13,33 @@ BBTK_BLACK_BOX_IMPLEMENTATION(MeasureLength,bbtk::AtomicBlackBox); //===== void MeasureLength::Process() { - //std::cout << "RaC MeasureLength::Process START"<< std::endl; - _points = bbGetInputPoints(); - _image = bbGetInputImageData(); - - double sumLength =0; + _image = bbGetInputImageData(); + double sumLength = 0 ; + double sumLengthVoxels = 0 ; if(_image != NULL && _points->GetNumberOfPoints()>1) { double spc[3]; double origin[3]; + double XFactor; + double YFactor; + double ZFactor; + _image->GetSpacing(spc); _image->GetOrigin(origin); double* first; - first = _points->GetPoint(0); - double firstWorld[3]; + int i; + +//--Length + first = _points->GetPoint(0); firstWorld[0] = first[0]*spc[0] + origin[0]; firstWorld[1] = first[1]*spc[1] + origin[1]; firstWorld[2] = first[2]*spc[2] + origin[2]; - - - - for(int i = 1; i<_points->GetNumberOfPoints();i++) + for(i = 1; i<_points->GetNumberOfPoints();i++) { double* second; second = _points->GetPoint(i); @@ -47,21 +48,43 @@ void MeasureLength::Process() secondWorld[1] = second[1]*spc[1] + origin[1]; secondWorld[2] = second[2]*spc[2] + origin[2]; - double XFactor = secondWorld[0]-firstWorld[0]; - double YFactor = secondWorld[1]-firstWorld[1]; - double ZFactor = secondWorld[2]-firstWorld[2]; + XFactor = secondWorld[0]-firstWorld[0]; + YFactor = secondWorld[1]-firstWorld[1]; + ZFactor = secondWorld[2]-firstWorld[2]; sumLength += XFactor*XFactor + YFactor*YFactor + ZFactor*ZFactor; firstWorld[0] = secondWorld[0]; firstWorld[1] = secondWorld[1]; firstWorld[2] = secondWorld[2]; + } // for - } - } +//--Length Voxels + first = _points->GetPoint(0); + firstWorld[0] = first[0]; + firstWorld[1] = first[1]; + firstWorld[2] = first[2]; + for(i = 1; i<_points->GetNumberOfPoints();i++) + { + double* second; + second = _points->GetPoint(i); + double secondWorld[3]; + secondWorld[0] = second[0]; + secondWorld[1] = second[1]; + secondWorld[2] = second[2]; - bbSetOutputLength(sumLength); + XFactor = secondWorld[0]-firstWorld[0]; + YFactor = secondWorld[1]-firstWorld[1]; + ZFactor = secondWorld[2]-firstWorld[2]; + sumLengthVoxels += XFactor*XFactor + YFactor*YFactor + ZFactor*ZFactor; + + firstWorld[0] = secondWorld[0]; + firstWorld[1] = secondWorld[1]; + firstWorld[2] = secondWorld[2]; + } // for - //std::cout << "RaC MeasureLength::Process END"<< std::endl; + } // if + bbSetOutputLength( sqrt(sumLength) ); + bbSetOutputLengthVoxels( sqrt(sumLengthVoxels) ); } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)