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