Кинематика: движение объектов по траектории

Основы кинематики: что такое траектория?

Представьте, что вы запускаете снаряд из пушки в игре 🎯. Линия, которую он описывает в воздухе, и есть его траектория. С математической точки зрения, траектория — это просто путь, который проходит объект в пространстве с течением времени.

В геймдеве мы почти всегда работаем с двумерным (2D) или трехмерным (3D) пространством. Движение по траектории означает, что и позиция объекта по оси X, и его позиция по оси Y (и Z в 3D) меняются согласно какому-то правилу, часто в зависимости от времени.

💡 Главный секрет: чтобы описать движение по любой сложной траектории, мы используем параметрические уравнения. Время (t) — это наш главный параметр. Мы задаем отдельные формулы для x(t) и y(t).

Движение по прямой линии ➖

Это самый простой вид траектории. Здесь нам помогут знакомые формулы равномерного движения.

Допустим, наш объект стартует из точки с координатами (start_x, start_y) и движется с постоянной скоростью. Нам нужно знать вектор скорости — его направление. Например, вектор (3, 1) означает, что за каждую единицу времени объект проходит 3 единицы вправо по X и 1 единицу вверх по Y.

Формулы для расчета позиции в момент времени t будут выглядеть так:

x(t) = start_x + velocity_x * t
y(t) = start_y + velocity_y * t

Движение по окружности 🔄

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

Здесь на помощь приходит тригонометрия! Вспомним единичную окружность. Позиция точки на окружности задается с помощью косинуса (для X) и синуса (для Y).

Нам понадобятся:

  • center_x, center_y — центр окружности.
  • radius — ее радиус.
  • angle — угол поворота, который будет меняться со временем.
  • angular_velocity — угловая скорость (на сколько радиан изменяется угол за единицу времени).

Формулы для вычисления позиции:

angle = initial_angle + angular_velocity * t
x(t) = center_x + radius * cos(angle)
y(t) = center_y + radius * sin(angle)

🎮 На практике: чтобы объект двигался быстрее, увеличивайте angular_velocity. Чтобы сделать окружность больше, увеличьте radius.


Параболическая траектория (движение снаряда) 🚀

Классика жанра! Броски мяча, выстрелы из катапульты, прыжки — всё это описывается параболой.

Такое движение уже не равномерное. На объект действует ускорение, например, гравитация. Начальная скорость задается как вектор (velocity_x, velocity_y).

Формулы для симуляции полета снаряда с учетом гравитации:

x(t) = start_x + velocity_x * t
y(t) = start_y + velocity_y * t - (gravity * t * t) / 2

Обратите внимание на минус в формуле для Y: гравитация тянет объект вниз, уменьшая его высоту.

Кривые Безье ✨

Хотите создать плавное и красивое движение, например, для кат-сцены или полета птицы? Используйте кривые Безье! Это мощный инструмент для описания гладких кривых с помощью контрольных точек.

Для квадратичной кривой Безье (2-го порядка) нужны три точки: начальная (P0), контрольная (P1) и конечная (P2). Параметр t здесь изменяется от 0 до 1.

x(t) = (1-t)*(1-t)*P0_x + 2*(1-t)*t*P1_x + t*t*P2_x
y(t) = (1-t)*(1-t)*P0_y + 2*(1-t)*t*P1_y + t*t*P2_y

🛠️ Совет: Поэкспериментируйте с положением контрольной точки P1. Она не лежит на кривой, но определяет ее форму, «притягивая» к себе траекторию.


Практикуемся: решаем задачи

Задача 1: Прямолинейное движение

Условие: Моб в игре появляется в точке (10, 20) и движется с постоянной скоростью (5, 0) (пикселей в секунду). Где он окажется через 3 секунды?

Решение:

  1. Подставляем значения в формулы для прямолинейного движения:
x(3) = 10 + 5 * 3 = 10 + 15 = 25
y(3) = 20 + 0 * 3 = 20 + 0 = 20
  1. Ответ: через 3 секунды моб будет находиться в точке (25, 20).

Задача 2: Движение по окружности

Условие: Спутник вращается вокруг планеты в центре (100, 100) по орбите радиусом 50 единиц. Угловая скорость составляет 0.5 радиан/сек. Начальный угол равен 0. Каковы его координаты через π секунд (~3.14 сек)?

Решение:

  1. Сначала найдем угол в момент времени t = π:
angle = 0 + 0.5 * π ≈ 0 + 1.57 = 1.57 радиан
  1. Теперь вычислим координаты по формулам окружности:
x(π) = 100 + 50 * cos(1.57) ≈ 100 + 50 * 0 ≈ 100
y(π) = 100 + 50 * sin(1.57) ≈ 100 + 50 * 1 ≈ 150
  1. Ответ: через π секунд спутник будет в точке (100, 150).

Задача 3: Движение снаряда

Условие: Снаряд вылетает из точки (0, 0) с начальной скоростью (40, 30). Сила гравитации g = 10. Найдите его координаты через 2 секунды.

Скрыть рекламу навсегда

🌱 Индвидидулаьные занятия

Индивидуальные онлайн-занятия по программированию для детей и подростков

Личный подход, без воды, с фокусом на понимание и реальные проекты.

🚀 Записаться на занятие