//=====
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);
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)