blob: 2bd57b80db6a57e9fc487c785004d1551998a255 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#pragma once
#include "accel-base.hpp"
namespace rawaccel {
/// <summary> Struct to hold linear acceleration implementation. </summary>
struct linear_impl {
double accel;
double offset;
double subtractive_const;
double divisive_const;
linear_impl(const accel_args& args) : accel(args.accel), offset(args.offset) {
subtractive_const = 2 * accel * offset;
divisive_const = accel * offset * offset;
}
inline double operator()(double speed) const {
double base_speed = speed + offset;
return accel * base_speed - subtractive_const + divisive_const / base_speed;
}
inline double legacy_offset(double speed) const {
return accel * speed;
}
};
using accel_linear = additive_accel<linear_impl>;
}
|