Media is too big
VIEW IN TELEGRAM
День 18: Заметка 1: Moving Objects 2 - более наглядное применение интерполяторов
🤟 Хай, Кодерс!
Как-то я показывал применение интерполяторов для движения объектов:
👉 линейный
👉 с ускорением
👉 скачущий
👉 и bubble
В прошлый ряз демо
👉 шарики двигаются в переделах ширины экрана панели
👉 есть финиш - белая линия, на которой движение шариков должно прекратиться
Детально по шарикам:
👉 1 шарик: применен линейный интерполятор, поэтому он двигается равномерно.
👉 2 шарик: применен интерполятор с ускорением, его скорость нарастает
👉 3 шарик: движется со скачущим интерполятором, поэтому происходит имитация соударения со стенкой и угасающие отскоки
👉 4 шарик: движется с bubble интерполятором, он заходит за финиш и возвращается, амплитуда гаснет, и он останаливается на финише
👉 5 шарик: движется с ускорением до определенного момента и затем с замедлением
📷 Пример на видео
#Arduino
🤟 Хай, Кодерс!
Как-то я показывал применение интерполяторов для движения объектов:
👉 линейный
👉 с ускорением
👉 скачущий
👉 и bubble
В прошлый ряз демо
Moving Objects было ненаглядным, в этот раз я доработал его до более привлекательного вида:👉 шарики двигаются в переделах ширины экрана панели
👉 есть финиш - белая линия, на которой движение шариков должно прекратиться
Детально по шарикам:
👉 1 шарик: применен линейный интерполятор, поэтому он двигается равномерно.
👉 2 шарик: применен интерполятор с ускорением, его скорость нарастает
👉 3 шарик: движется со скачущим интерполятором, поэтому происходит имитация соударения со стенкой и угасающие отскоки
👉 4 шарик: движется с bubble интерполятором, он заходит за финиш и возвращается, амплитуда гаснет, и он останаливается на финише
👉 5 шарик: движется с ускорением до определенного момента и затем с замедлением
📷 Пример на видео
#Arduino
🔥1
День 18: Заметка 2: AccelerateDecelerate интерполятор
На видео выше 5 шарик движется с ускорением до определенного момента и затем с замедлением.
Для этого в файл с интерполяторами дописал новую реализацию, которая использует формулу
#Arduino
На видео выше 5 шарик движется с ускорением до определенного момента и затем с замедлением.
Для этого в файл с интерполяторами дописал новую реализацию, которая использует формулу
y = cos((time+1)π)/2+0.5
class AccelerateDecelerateInterpolator : public Interpolator {
public:
int type = Interpolator::TYPE_ACCELERATE_DECELERATE;
float a = 0.5;
float b = 2;
virtual float calculate(double time) {
return cos((time + 1) * 3.14)/b + a;
}
};
#Arduino
👍1
День 18: Заметка 4: Сувениры на память
👨💻 Почти
👉 Проект работает и по сей день. Тот, кто живет в
👍 Прошло столько времени, а сувенир до сих пор напоминает о тех интересных временах, товарищах, с которыми вместе работали.
🤔 Примерно в
#Life
👨💻 Почти
10 лет назад мне довелось принимать участие в одном из крупных проектов (в те времена проект только стартовал и было не понятно, что станет таким каким стал). 👉 Проект работает и по сей день. Тот, кто живет в
Мск, возможно, о нем даже слышал. Ну, не суть. 👍 Прошло столько времени, а сувенир до сих пор напоминает о тех интересных временах, товарищах, с которыми вместе работали.
🤔 Примерно в
2015 году (если не ошибаюсь) у меня появился этот сувенир, тогда не предполагал, что в 2023 году я о нем напишу здесь. #Life
👍1
Media is too big
VIEW IN TELEGRAM
День 19: Заметка 1: Продолжаю двигать кружочки
Реализовал парочку интерполяторов.
👉
👉
Наглядно видно на демо.
Реализовал парочку интерполяторов.
👉
Cycle - циклический, позволяет повторять несколько раз цикл перемещения, описывается формулой y = sin (2π × C × t)👉
OvershootInterpolator - интерполятор с перерегулированием, описывается формулой y = (T + 1) × (t − 1)^3 + T × (t − 1)^2 + 1; позволяет реализовать движение с замедлением и в конечной точке небольшой отскок.Наглядно видно на демо.
🔥1
👉 Для наглядности cycle интерполятор
class CycleInterpolator : public Interpolator {
public:
int type = Interpolator::TYPE_CYCLE;
float c = 2;
virtual float calculate(double time) {
return sin(c * 3.14 * time);
}
};
👍1
👉 Overshooting интерполятор
class OvershootingInterpolator : public Interpolator {
public:
int type = Interpolator::TYPE_CYCLE;
float c = 0.5;
virtual float calculate(double time) {
return (c + 1) * pow(time - 1, 3) + c * pow(time - 1, 2) + 1;
}
};
👍1
Media is too big
VIEW IN TELEGRAM
День 20: Заметка 1: Анимация пульсации
Сегодня решил набросать пример пульсирующей точки.
Код анимации прост и состоит из двух частей:
👉 сначала необходимо последовательно расширять круг до целевого радиуса
👉 затем наоборот круг сворачивается обратно в точку.
На каждом цикле отрисовки радиус увеличивается (или уменьшается) на 1 единицу (или с определенным шагом). При уменьшении нужно еще затирать ранее нарисованные окружности, чтобы создавался эффект уменьшения круга.
📷 Демо на видео.
#Arduino
Сегодня решил набросать пример пульсирующей точки.
Код анимации прост и состоит из двух частей:
👉 сначала необходимо последовательно расширять круг до целевого радиуса
👉 затем наоборот круг сворачивается обратно в точку.
На каждом цикле отрисовки радиус увеличивается (или уменьшается) на 1 единицу (или с определенным шагом). При уменьшении нужно еще затирать ранее нарисованные окружности, чтобы создавался эффект уменьшения круга.
📷 Демо на видео.
#Arduino
👍1
Media is too big
VIEW IN TELEGRAM
День 21: Заметка 1: Падающие шарики
👨💻Собрал демо падающих объектов.
👉 Использовал ранее наработанные интерполяторы.
На демо видно, как объекты генерируются рандомно в пределах ширины и высоты панели со случайны радиусом.
Затем вычисляется расстояние, которое они должны пролететь до края панели и применяется bounce интерполятор.
#Arduino
👨💻Собрал демо падающих объектов.
👉 Использовал ранее наработанные интерполяторы.
На демо видно, как объекты генерируются рандомно в пределах ширины и высоты панели со случайны радиусом.
Затем вычисляется расстояние, которое они должны пролететь до края панели и применяется bounce интерполятор.
#Arduino
👍1