Spaces:
Sleeping
Sleeping
| import {tpmt} from "./math.js"; | |
| var tau = 2 * Math.PI, | |
| amplitude = 1, | |
| period = 0.3; | |
| export var elasticIn = (function custom(a, p) { | |
| var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); | |
| function elasticIn(t) { | |
| return a * tpmt(-(--t)) * Math.sin((s - t) / p); | |
| } | |
| elasticIn.amplitude = function(a) { return custom(a, p * tau); }; | |
| elasticIn.period = function(p) { return custom(a, p); }; | |
| return elasticIn; | |
| })(amplitude, period); | |
| export var elasticOut = (function custom(a, p) { | |
| var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); | |
| function elasticOut(t) { | |
| return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p); | |
| } | |
| elasticOut.amplitude = function(a) { return custom(a, p * tau); }; | |
| elasticOut.period = function(p) { return custom(a, p); }; | |
| return elasticOut; | |
| })(amplitude, period); | |
| export var elasticInOut = (function custom(a, p) { | |
| var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau); | |
| function elasticInOut(t) { | |
| return ((t = t * 2 - 1) < 0 | |
| ? a * tpmt(-t) * Math.sin((s - t) / p) | |
| : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2; | |
| } | |
| elasticInOut.amplitude = function(a) { return custom(a, p * tau); }; | |
| elasticInOut.period = function(p) { return custom(a, p); }; | |
| return elasticInOut; | |
| })(amplitude, period); | |