nuclear@4: #ifndef CURVE_H_ nuclear@4: #define CURVE_H_ nuclear@4: nuclear@4: #include nuclear@4: #include nuclear@4: nuclear@4: struct CurvePoint { nuclear@4: uint16_t t_int; // save time as an integer to allow exact lookup and change nuclear@4: float value; nuclear@4: }; nuclear@4: nuclear@4: class Curve { nuclear@4: private: nuclear@4: std::vector cp; nuclear@4: nuclear@4: public: nuclear@4: void set_point(float t, float val); nuclear@4: void set_point_int(uint16_t ti, float val); nuclear@4: nuclear@4: bool delete_point(uint16_t ti); nuclear@4: nuclear@4: CurvePoint *get_point(int idx); nuclear@4: const CurvePoint *get_point(int idx) const; nuclear@4: int get_num_points() const; nuclear@4: nuclear@4: CurvePoint *get_point_at(uint16_t ti); nuclear@4: const CurvePoint *get_point_at(uint16_t ti) const; nuclear@4: nuclear@4: float value(float t) const; nuclear@4: float value_int(uint16_t ti) const; nuclear@4: }; nuclear@4: nuclear@4: #endif // CURVE_H_