From e798ac56843a8e7b383433c479c802a4fb245a4c Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 23 Jul 2020 00:55:10 -0700 Subject: Fix offset for power mode, add scale factor for power mode --- common/rawaccel.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'common/rawaccel.hpp') diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp index a40b85b..52402d5 100644 --- a/common/rawaccel.hpp +++ b/common/rawaccel.hpp @@ -74,7 +74,8 @@ struct accel_function { double b = 0; // the limit for natural and sigmoid modes, - // or the exponent for classic mode + // the exponent for classic mode, + // or the scale factor for power mode double k = 1; vec2d weight = { 1, 1 }; @@ -98,7 +99,7 @@ struct accel_function { break; case mode::sigmoid: accel_val = k / (exp(-b * (speed - m)) + 1); break; - case mode::power: accel_val = pow(speed, b) - 1; + case mode::power: accel_val = b < 1 ? 0 : pow(speed, b*k) - 1; break; default: break; @@ -131,6 +132,7 @@ struct accel_function { if (args.time_min <= 0) error("min time must be positive"); if (args.lim_exp <= 1) { if (args.accel_mode == mode::classic) error("exponent must be greater than 1"); + else if (args.accel_mode == mode::power) error("scale factor must be greater than 1"); else error("limit must be greater than 1"); } -- cgit v1.2.3 From 2f76d693fdc8fe1616fb751a199818916a79b8bf Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 23 Jul 2020 15:16:30 -0700 Subject: Use speed instead of b, preserve speed < 1 behavior without offset --- common/rawaccel.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'common/rawaccel.hpp') diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp index 52402d5..9a072d1 100644 --- a/common/rawaccel.hpp +++ b/common/rawaccel.hpp @@ -99,7 +99,7 @@ struct accel_function { break; case mode::sigmoid: accel_val = k / (exp(-b * (speed - m)) + 1); break; - case mode::power: accel_val = b < 1 ? 0 : pow(speed, b*k) - 1; + case mode::power: accel_val = (speed_offset > 0 && speed < 1) ? 0 : pow(speed, b*k) - 1; break; default: break; -- cgit v1.2.3 From 988c049f044857e713e3cbe33b17307784df719d Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 23 Jul 2020 15:42:25 -0700 Subject: increment k for power style --- common/rawaccel.hpp | 1 + 1 file changed, 1 insertion(+) (limited to 'common/rawaccel.hpp') diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp index 9a072d1..a60fe1c 100644 --- a/common/rawaccel.hpp +++ b/common/rawaccel.hpp @@ -141,6 +141,7 @@ struct accel_function { b = args.accel; k = args.lim_exp - 1; if (args.accel_mode == mode::natural) b /= k; + if (args.accel_mode == mode::power) k++; speed_offset = args.offset; weight = args.weight; -- cgit v1.2.3