Тригонометрия в движении: угол, скорость, ускорение

Основы: угол и направление

Представь, что твой игровой персонаж стоит в центре круга. Куда бы он ни пошел, его движение можно описать с помощью угла. Это и есть основа тригонометрии в геймдеве!

В математике мы используем три основные функции:

  • Синус (sin) — показывает вертикальную составляющую движения
  • Косинус (cos) — показывает горизонтальную составляющую движения
  • Тангенс (tan) — отношение вертикали к горизонтали

🎯 Запомни: косинус всегда идет с осью X, синус — с осью Y. Это правило поможет не путать направления!

Вот как это работает на практике:

direction_x = cos(angle)
direction_y = sin(angle)

Эти две строчки кода — основа движения в любом направлении!


Движение с постоянной скоростью

Теперь добавим скорость. Если у нас есть угол и скорость, мы можем легко рассчитать движение объекта в каждом кадре.

Формула движения выглядит так:

x = x + cos(angle) * speed * time
y = y + sin(angle) * speed * time

Где time — это время между кадрами (delta time), которое обеспечивает плавное движение независимо от частоты кадров.

⏱️ Всегда используй delta time в расчетах движения! Это сделает анимацию плавной на любом компьютере.

Давай решим практическую задачу:

Задача 1: Объект движется под углом 45 градусов со скоростью 5 единиц в секунду. Какие будут координаты через 3 секунды, если начальная позиция (0, 0)?

Решение:

  1. Переведем угол в радианы: 45° = π/4 радиан
  2. Рассчитаем изменение координат:
    Δx = cos(π/4) * 5 * 3 ≈ 0.707 * 15 ≈ 10.606
    Δy = sin(π/4) * 5 * 3 ≈ 0.707 * 15 ≈ 10.606
  3. Конечные координаты: (10.606, 10.606)

Криволинейное движение и ускорение

Теперь сделаем движение более интересным — добавим ускорение! Это то, что делает движение персонажей и снарядов реалистичным.

Ускорение изменяет скорость со временем:

velocity_x = velocity_x + cos(angle) * acceleration * time
velocity_y = velocity_y + sin(angle) * acceleration * time

x = x + velocity_x * time
y = y + velocity_y * time

Обрати внимание: ускорение тоже имеет направление (угол), поэтому мы используем cos и sin для разложения его на компоненты.

🚀 В реальных играх часто используют несколько ускорений: движение вперед, трение, гравитация. Все они складываются!

Задача 2: Ракета стартует под углом 30° с ускорением 10 ед/с². Какая будет скорость через 2 секунды?

Решение:

  1. Угол в радианах: 30° = π/6
  2. Скорость через 2 секунды: v = a * t = 10 * 2 = 20 ед/с
  3. Компоненты скорости:
    vx = cos(π/6) * 20 ≈ 0.866 * 20 = 17.32 ед/с
    vy = sin(π/6) * 20 = 0.5 * 20 = 10 ед/с

Практическое применение: движение по кругу

Один из самых красивых примеров тригонометрии — круговое движение. Представь планету, вращающуюся вокруг звезды!

Формула для движения по кругу:

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

Чтобы объект вращался, мы просто постепенно увеличиваем угол:

angle = angle + rotation_speed * time

Это создает идеальное круговое движение без сложных расчетов!

🔄 Для плавного вращения используй небольшое значение rotation_speed, например 0.1 радиан в секунду.


Сводная таблица формул

Тип движения Формула для X Формула для Y
Прямолинейное x + cos(α)*v*t y + sin(α)*v*t
С ускорением x + vx*t + 0.5*ax*t² y + vy*t + 0.5*ay*t²
Круговое cx + r*cos(α) cy + r*sin(α)


Финальная задача: полет снаряда

Давай соберем все вместе и реализуем полет снаряда с учетом гравитации!

Условие: Снаряд выпущен под углом 60° со скоростью 25 м/с. Гравитация: -9.8 м/с². Рассчитай позицию через 3 секунды.

Решение по шагам:

  1. Начальные компоненты скорости:
    vx0 = cos(π/3) * 25 = 0.5 * 25 = 12.5 м/с
    vy0 = sin(π/3) * 25 ≈ 0.866 * 25 = 21.65 м/с
  2. Влияние гравитации на вертикальную скорость:
    vy = vy0 + gravity * time = 21.65 + (-9.8) * 3 = 21.65 - 29.4 = -7.75 м/с
  3. Позиция через 3 секунды:
    x = vx0 * time = 12.5 * 3 = 37.5 м
    y = vy0 * time + 0.5 * gravity * time²
    y = 21.65 * 3 + 0.5 * (-9.8) * 9
    y = 64.95 - 44.1 = 20.85 м

Поздравляю! Ты только что рассчитал траекторию снаряда с помощью тригонометрии 🎯

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

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

🎥 YouTube: программирование простым языком

Канал, где я спокойно и по шагам объясняю сложные темы — без заумных терминов и лишней теории.

Подходит, если раньше «не заходило», но хочется наконец понять.

▶️ Смотреть курсы на YouTube