#include "bbUtilitiesSpline.h" #include "bbUtilitiesPackage.h" namespace bbUtilities { BBTK_ADD_BLACK_BOX_TO_PACKAGE(Utilities,Spline) BBTK_BLACK_BOX_IMPLEMENTATION(Spline,bbtk::AtomicBlackBox); void Spline::Process() { xControlPoints = bbGetInputXControlPoints(); yControlPoints = bbGetInputYControlPoints(); zControlPoints = bbGetInputZControlPoints(); xSpline.clear(); ySpline.clear(); zSpline.clear(); if(xKSpline==NULL) xKSpline = vtkKochanekSpline::New(); if(yKSpline==NULL) yKSpline= vtkKochanekSpline::New(); if(zKSpline==NULL) zKSpline= vtkKochanekSpline::New(); xKSpline->RemoveAllPoints(); yKSpline->RemoveAllPoints(); zKSpline->RemoveAllPoints(); double xControlPoint=0; double yControlPoint=0; double zControlPoint=0; int xSize=xControlPoints.size(); int ySize=yControlPoints.size(); int zSize=zControlPoints.size(); if(xSize == ySize && xSize == zSize && ySize == zSize ) { for(int i= 0; i < xSize ; i++) { xControlPoint = xControlPoints[i]; yControlPoint = yControlPoints[i]; zControlPoint = zControlPoints[i]; xKSpline->AddPoint(i,xControlPoint); yKSpline->AddPoint(i,yControlPoint); zKSpline->AddPoint(i,zControlPoint); } } double x=0,y=0,z=0,t,delta; int np,nps; if(xSize==ySize && xSize==zSize && ySize==zSize ) { np = xSize; nps = 10*xSize; delta=( double ) ( np ) / ( double ) ( nps ); for(int i = 0; i < nps; i++ ) { t = delta * (double)i; if (xSize==0) { x = 0; y = 0; z = 0; } if (xSize>=2) { x = xKSpline->Evaluate(t); y = yKSpline->Evaluate(t); z = zKSpline->Evaluate(t); } xSpline.push_back(x); ySpline.push_back(y); zSpline.push_back(z); } } xControlPoints.clear(); yControlPoints.clear(); zControlPoints.clear(); bbSetOutputXSplinePoints( xSpline ); bbSetOutputYSplinePoints( ySpline ); bbSetOutputZSplinePoints( zSpline ); } void Spline::bbUserSetDefaultValues() { xKSpline= NULL; yKSpline= NULL; zKSpline= NULL; } void Spline::bbUserInitializeProcessing() { xControlPoints.push_back(0.0); yControlPoints.push_back(0.0); zControlPoints.push_back(0.0); } void Spline::bbUserFinalizeProcessing() { } } // EO namespace bbUtilities