Математика, используемая в анимации

С возрастом вы развиваете способность разбираться в сложных проблемах.

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

Что такое интерполятор времени?

Скажите, что вы дома и хотите зайти к другу. Существуют различные маршруты, по которым вы можете добраться до места назначения. Возможно, вы выберете маршрут A, или маршрут B, или маршрут C. Предположим, что все маршруты занимают одинаковое количество времени. Эти маршруты проходят по разным дорогам, но вы прибываете в один и тот же пункт назначения и занимают одинаковое количество времени.

Описанные выше маршруты называются интерполяторами времени. Это разные пути от начального значения A к целевому значению A + X.

Я буду расшифровывать математику, которую я сделал, чтобы найти необходимые уравнения для этих графиков.

Примечание 1.Для всех интерполяторов мы переходим от значений 2 к 8 за 4 секунды. Итак, A = 2, X = 6, T = 4. Это константы, которые мы объявляем и будем использовать в примерах.

Примечание 2.Говоря об интерполяторах, обратите внимание на скорость. С математической точки зрения обратите внимание на скорость изменения значений за бесконечно малое время.

Линейный интерполятор

Линейный интерполятор довольно прост. Это прямая линия от начала до конца. У них нет ускорения, и, следовательно, скорость остается постоянной повсюду.

Вам нужно пройти X значений за T времени. Таким образом, скорость (или наклон) будет X/T. Сохраняя этот наклон и вводя начальное значение (или точку пересечения по оси y), мы приходим к уравнению y = (X/T)x + A.

Ускорение-замедление интерполятора

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

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

Настройка уравнений

Скорость (или скорость изменения) представляет собой синусоиду. Обратите внимание, что скорость увеличивается в первой половине и замедляется во второй половине; отсюда и название. Мы начинаем анимацию почти со скоростью 0, которая ускоряется до максимальной точки, а затем замедляется до достижения 0 скорости в конце анимации, то есть на t = T.

a — амплитуда синусоиды. Нам нужно выяснить, что это за значение. На самом деле мы знаем, что общее изменение значений анимации составляет X. Другими словами, площадь, ограниченная кривой и осью x, должна быть приравнена к X — чистому изменению между начальной и конечной точками. Следовательно, мы приходим к:

Нахождение амплитуды кривой наклона

a на данный момент является неизвестной константой, и нам нужно выяснить, каково ее значение по отношению к другим константам, которые мы определили. По второму уравнению мы можем найти это значение:

Решение дифференциального уравнения

Из первого уравнения мы можем определить фактическую функцию этого графика ускорения-торможения.

Исходя из этого, мы можем построить график следующей функции, чтобы получить конкретные значения анимации от Aдо A + Xв любое время между 0 и T.

Интерполяторы другого времени

Следуя тому же процессу, что и выше, мы можем вывести уравнения для интерполяторов ускорения и замедления, просто изменив график наклона. Вы также найдете что-то важное со значением a, синусоидальной амплитуды наклона. Интерполятор Accelerate — это когда скорость изменения постепенно увеличивается, а интерполятор Deaccelerate — когда скорость изменения постепенно уменьшается. Вы можете просмотреть их в GIF, загруженном выше.

Заключение

Математика, на мой взгляд, очень эстетическая тема; и применить это к моей страсти — компьютерным наукам — идеальный рецепт.

Я больше года пытался понять, как вывести математические уравнения для такой сложной темы, но потерпел неудачу. Как было сказано ранее, только недавно я понял, как мне следует подходить к этой проблеме. Поэтому я понимаю, что некоторые из вас могут не сразу полностью понять эту статью по разным причинам. Однако со временем и опытом это будет иметь смысл. Я призываю вас перечитать эту статью еще раз, так как в ней много движущихся частей, связанных с математикой.

Это приводит меня к вопросу: Насколько необходима математика для информатики? Это зависит от того, какую область вы изучите и насколько глубоко вы хотите в нее погрузиться. На первый взгляд, математика крайне необходима не для Android или веб-разработки, а для эффективного построения моделей ИИ.

Надеюсь, вам понравилось читать мою статью и вы узнали что-то новое. Спасибо! ✌️

Want to connect?
My GitHub profile.
My Portfolio website.