00001
00002
00004
00005 #ifdef WIN32
00006 #pragma warning(disable:4786)
00007 #endif
00008 #include "CubicSplineInterpolator1D.h"
00009
00011
00013 namespace Interpolator
00014 {
00016 CubicSplineInterpolator1D::CubicSplineInterpolator1D()
00017 {
00018
00019 }
00020
00022 CubicSplineInterpolator1D::~CubicSplineInterpolator1D()
00023 {
00024 gsl_spline_free (spline);
00025 gsl_interp_accel_free (acc);
00026 }
00027
00028
00033 CubicSplineInterpolator1D::CubicSplineInterpolator1D( std::string sName,
00034 std::string sDescription,
00035 InterpolationData1D* mInterpolationData) :
00036 Interpolator1D(sName,sDescription,"Cubic Spline",mInterpolationData)
00037
00038 {
00039 acc = gsl_interp_accel_alloc ();
00040 spline = gsl_spline_alloc (gsl_interp_cspline, getNbData());
00041 gsl_spline_init (spline, mInterpolationData->getXValues(), mInterpolationData->getYValues(), getNbData());
00042 }
00043
00045 double CubicSplineInterpolator1D::getInterpolatedValue(double dValue)
00046 {
00047 return gsl_spline_eval (spline, dValue, acc);
00048 }
00049
00051 void CubicSplineInterpolator1D::updateInterpolator()
00052 {
00053 gsl_spline_free (spline);
00054 gsl_interp_accel_free (acc);
00055 acc = gsl_interp_accel_alloc ();
00056 spline = gsl_spline_alloc (gsl_interp_cspline, getNbData());
00057 gsl_spline_init (spline, getInterpolatedData()->getXValues(), getInterpolatedData()->getYValues(), getNbData());
00058 }
00059 }
00060
00061