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