#ifndef CUBICSPLINE_H #define CUBICSPLINE_H #include <vector> #include <utility> #include <tuple> #include <map> #include <Color.h> class CubicSpline { /// contains x, y and y' of each interpolation point std::vector<std::tuple<float, float, float>> points; bool useSlopes; public: CubicSpline(const std::vector<std::pair<float, float>>& dataPoints, bool useSlopes, bool minSlopes); float interpolateAt(float x); }; class ColorSpline { /// /// \brief at each position, stores the color value and the channel-wise /// slopes of the spline. /// std::map<float, std::pair<RGBColorf, RGBColorf>> points; bool useSlopes; public: ColorSpline(void) = default; ColorSpline(const std::vector<std::pair<float, RGBColorf>>& dataPoints, bool useSlopes, bool minSlopes); RGBColorf interpolateAt(float x) const; }; #endif // CUBICSPLINE_H