//===== // 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) //===== #include "bbvtkMeasureLength.h" #include "bbvtkPackage.h" namespace bbvtk { BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,MeasureLength) BBTK_BLACK_BOX_IMPLEMENTATION(MeasureLength,bbtk::AtomicBlackBox); //===== // 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) //===== void MeasureLength::Process() { _points = bbGetInputPoints(); _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; 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(i = 1; i<_points->GetNumberOfPoints();i++) { double* second; second = _points->GetPoint(i); double secondWorld[3]; secondWorld[0] = second[0]*spc[0] + origin[0]; secondWorld[1] = second[1]*spc[1] + origin[1]; secondWorld[2] = second[2]*spc[2] + origin[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]; 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 } // 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) //===== void MeasureLength::bbUserSetDefaultValues() { bbSetOutputLength(0); } //===== // 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) //===== void MeasureLength::bbUserInitializeProcessing() { } //===== // 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) //===== void MeasureLength::bbUserFinalizeProcessing() { } } // EO namespace bbvtk