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