diff options
| author | Jacob Palecki <[email protected]> | 2021-01-20 00:30:50 -0800 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2021-01-20 00:30:50 -0800 |
| commit | 9c2be5743fb44e8a68084ac0bd15c02f6cce637a (patch) | |
| tree | c0b09b75f7974a50ae6959fe385c1ec768fc7c83 /common | |
| parent | further tweaks (diff) | |
| download | rawaccel-9c2be5743fb44e8a68084ac0bd15c02f6cce637a.tar.xz rawaccel-9c2be5743fb44e8a68084ac0bd15c02f6cce637a.zip | |
Final graph fidelity tweaks and fixes
Diffstat (limited to 'common')
| -rw-r--r-- | common/accel-motivity.hpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/common/accel-motivity.hpp b/common/accel-motivity.hpp index f88320b..246cf37 100644 --- a/common/accel-motivity.hpp +++ b/common/accel-motivity.hpp @@ -55,28 +55,40 @@ namespace rawaccel { inline void fill(si_pair* lookup) const { double lookup_speed = 0; + double integral_interval = 0; double gain_integral_speed = 0; + double gain_integral_speed_prev = 0; double gain = 0; double intercept = 0; double output = 0; + double output_prev = 0; double x = -2; + double logarithm_interval = 0.01; + double integral_intervals_per_speed = 10; + double integral_interval_factor = pow(10, logarithm_interval) / integral_intervals_per_speed; + lookup[0] = {}; for (size_t i = 1; i < LUT_SIZE; i++) { - x += 0.01; + x += logarithm_interval; + // Each lookup speed will be 10^0.01 = 2.33% higher than the previous + // To get 10 integral intervals per speed, set interval to 0.233% lookup_speed = pow(10, x); + integral_interval = lookup_speed * integral_interval_factor; while (gain_integral_speed < lookup_speed) { - gain_integral_speed += 0.001; + output_prev = output; + gain_integral_speed_prev = gain_integral_speed; + gain_integral_speed += integral_interval; gain = operator()(gain_integral_speed); - output += gain * 0.001; + output += gain * integral_interval; } - intercept = output - gain * lookup_speed; + intercept = output_prev - gain_integral_speed_prev * gain; lookup[i] = { gain, intercept }; } |