// // interpolate.h // // Provide smooth steps between values // // Copyright (C) J. Belson 2000.02.03 // #ifndef _INTERPOLATE_H_ #define _INTERPOLATE_H_ /** * Utility class for interpolating between two values with a particular * number of steps */ // // Three floating point // class interpolate_3f { private: float n1, n2, n3; float n1_inc, n2_inc, n3_inc; public: interpolate_3f(float start1, float start2, float start3, float end1, float end2, float end3, int step); void set(float start1, float start2, float start3, float end1, float end2, float end3, int step); void next(void); float val1(void) const { return n1; }; float val2(void) const { return n2; }; float val3(void) const { return n3; }; }; // // Two floating point // class interpolate_2f { private: float n1, n2; float n1_inc, n2_inc; public: interpolate_2f(float start1, float start2, float end1, float end2, int step); void set(float start1, float start2, float end1, float end2, int step); void next(void); float val1(void) const { return n1; }; float val2(void) const { return n2; }; }; // // One floating point // class interpolate_f { private: float n; float n_inc; public: interpolate_f(float start, float end, int step); void set(float start, float end, int step); void next(void); float val(void) const { return n; }; }; // // Single integer // class interpolate_i { private: long int a; // Current value long int inc; // Increment enum { SHIFT = 16 }; public: interpolate_i(int start, int end, int steps); void set(int start, int end, int steps); // Next value void next(void); int val(void) const { return a >> SHIFT; } }; // // Three integers // class interpolate_3i { private: long int inc_a, inc_b, inc_c; long int a, b, c; enum { SHIFT = 16 }; public: interpolate_3i( int a1, int a2, int a3, int b1, int b2, int b3, int steps); void set( int a1, int a2, int a3, int b1, int b2, int b3, int steps); // Next values void next(void); int val1(void) const { return a >> SHIFT; } int val2(void) const { return b >> SHIFT; } int val3(void) const { return c >> SHIFT; } }; #endif // _INTERPOLATE_H_