expoOut glitch
Opened this issue · 2 comments
The expoOut function is meant to serve as an ease to gradually go from 0 to 1. I noted a glitch. When going from 0.0 to 1.0 in steps of 0.01, the last few values are as follows:
input: output:
0.96 0.9987114180558858
0.97 0.9987977105338428
0.98 0.9988782242626982
0.99 0.9989533462279919
1 1
Diff from 0.98 to 0.99: 0.00007512196529368964
Diff from 0.99 to 1.00: 0.001046653772008077
As you can see, the diff 0.99 to 1.00 is substantually bigger than the diff from 0.98 to 0.99. In animations, this causes excactly what you try to prevent!
Looking at the code:
function expoOut(t) {
return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t)
}
Returning 1.0 when t === 1.0 is WRONG in my opinion.
Agree?
Good catch — care to submit a PR with a working function? I am considering using a major verison bump for this, not sure...
Is this some standard thing? Is there an external definition? The discontinuity in the “expo” functions is very weird, but many of these easing functions seem just made up, so of course you can do whatever you like with them.