diff options
Diffstat (limited to 'common/accel-classic.hpp')
| -rw-r--r-- | common/accel-classic.hpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/common/accel-classic.hpp b/common/accel-classic.hpp index 4cc52ca..3f409c3 100644 --- a/common/accel-classic.hpp +++ b/common/accel-classic.hpp @@ -10,14 +10,20 @@ namespace rawaccel { struct classic_impl { double accel; double power; + double power_inc; + double offset; + double multiplicative_const; classic_impl(const accel_args& args) : - accel(args.accel), power(args.exponent - 1) - {} + accel(args.accel), power(args.exponent - 1), offset(args.offset) { + multiplicative_const = pow(accel, power); + power_inc = power + 1; + } inline double operator()(double speed) const { //f(x) = (mx)^(k-1) - return pow(accel * speed, power); + double base_speed = speed + offset; + return multiplicative_const * pow(speed, power_inc) / base_speed; } }; |