По сути, функция возвращает интерполированное значение для новой позиции в зависимости от 4 факторов: текущего времени анимации, начального значения анимируемого свойства, общего изменения анимации и общей продолжительности анимации.
То, что у вас есть, это проверка на разные временные интервалы: если анимация все еще не достигает приблизительно 36% (1 / 2,75) от общей продолжительности, примените первое уравнение; если это между 36% и 72%, примените второе; и т.д.
Каждое уравнение является функцией, зависящей от первых аргументов дерева, поэтому в основном вам нужно немного их настроить.
Я бы предложил поиграть с этим жестко закодированным 7.5625 (увеличьте и уменьшите его, чтобы увидеть результаты), пока вы не будете удовлетворены.
7.5625
равен Math.pow(2.75, 2);
, но жестко запрограммирован для экономии при обработке.