00001
00002
00003
00004
00005
00006
00007 #include "SplineCoeff.h"
00008 #include "SplinePair.h"
00009 #include <vector>
00010
00021 class Spline
00022 {
00023 public:
00027 Spline(const std::vector<double> &t,
00028 const std::vector<SplinePair> &xy);
00029
00030 virtual ~Spline();
00031
00034 SplinePair findSplinePairForFunctionX (double x,
00035 int numIterations) const;
00036
00039 SplinePair interpolateCoeff (double t) const;
00040
00043 SplinePair interpolateControlPoints (double t) const;
00044
00046 SplinePair p1 (unsigned int i) const;
00047
00049 SplinePair p2 (unsigned int i) const;
00050
00051 private:
00052 Spline();
00053
00054
00055
00056
00057 void checkTIncrements (const std::vector<double> &t) const;
00058
00059 void computeCoefficientsForIntervals (const std::vector<double> &t,
00060 const std::vector<SplinePair> &xy);
00061 void computeControlPointsForIntervals ();
00062
00063
00064 std::vector<SplineCoeff> m_elements;
00065
00066
00067 std::vector<double> m_t;
00068
00069
00070 std::vector<SplinePair> m_xy;
00071
00072
00073 std::vector<SplinePair> m_p1;
00074 std::vector<SplinePair> m_p2;
00075 };