Ослабление кубических функций. Объяснение

На этой замечательной веб-странице я нашел список алгоритмов ослабления, которые могут добавить привлекательную визуальную привлекательность для моих веб-страниц.

Несмотря на это, я нашел там краткое упоминание аргументов функции (см. ниже), алгоритм не ведет себя так, как я бы хотел. Могу ли я попросить объяснить, какие значения/диапазоны следует вводить в аргументы функции, указанной ниже?

Список аргументов:

  • t: текущее время - должны быть значения 0... 1 или действительный номер текущего кадра?
  • b: начальное значение - я предполагаю, что начальная координата X или Y перемещаемого объекта
  • c: изменение значения - может ли быть номер 1 все время для всех кадров?
  • d: duration - количество кадров вообще?

Math.easeOutCubic = function (t, b, c, d) {
    t /= d;
    t--;
    return c*(t*t*t + 1) + b;
};

Если значения должны быть добавлены к последнему значению, полученному из функции, или должны быть добавлены в начальную позицию 0?

Ответы

Ответ 1

Вы правы, d - для продолжительности, а t - текущее время. Поэтому t должен быть от 0 до d.

c - полное изменение, должно быть равно end value - start value.

  • Для t = 0 имеем c*(-1 + 1) + b или b
  • Для t = d имеем c*(0 + 1) + b или b + c

Функция будет одинаковой для любых fps, это зависит от того, как часто обновлять позицию и вызывать функцию.