Ослабление кубических функций. Объяснение
На этой замечательной веб-странице я нашел список алгоритмов ослабления, которые могут добавить привлекательную визуальную привлекательность для моих веб-страниц.
Несмотря на это, я нашел там краткое упоминание аргументов функции (см. ниже), алгоритм не ведет себя так, как я бы хотел. Могу ли я попросить объяснить, какие значения/диапазоны следует вводить в аргументы функции, указанной ниже?
Список аргументов:
- 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, это зависит от того, как часто обновлять позицию и вызывать функцию.