mirror of
https://github.com/RawAccelOfficial/rawaccel.git
synced 2025-05-11 18:36:46 +02:00
Change classic, natural, naturalgain to use gain offset
This commit is contained in:
parent
0b50f9c855
commit
c7e9641e86
3 changed files with 15 additions and 6 deletions
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -10,16 +10,18 @@ namespace rawaccel {
|
|||
struct natural_impl {
|
||||
double rate;
|
||||
double limit;
|
||||
double offset;
|
||||
|
||||
natural_impl(const accel_args& args) :
|
||||
rate(args.accel), limit(args.limit - 1)
|
||||
rate(args.accel), limit(args.limit - 1), offset(args.offset)
|
||||
{
|
||||
rate /= limit;
|
||||
}
|
||||
|
||||
inline double operator()(double speed) const {
|
||||
// f(x) = k(1-e^(-mx))
|
||||
return limit - (limit * exp(-rate * speed));
|
||||
double base_speed = speed + offset;
|
||||
return limit * (1 - ((exp(-rate * speed) * speed + offset) / base_speed));
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
@ -18,8 +18,9 @@ namespace rawaccel {
|
|||
return 0;
|
||||
}
|
||||
|
||||
double base_speed = speed + offset;
|
||||
double scaled_speed = rate * speed;
|
||||
return limit * (((exp(-scaled_speed) - 1) / scaled_speed) + 1);
|
||||
return limit * (((exp(-scaled_speed) - 1) / (base_speed * rate) ) + 1 - offset / base_speed);
|
||||
}
|
||||
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue