Модуль вектора и нормализация

Что такое модуль вектора? 🎯

Представь, что ты запускаешь ракету в игре. Ты знаешь её направление (север, юго-запад), но не менее важно знать, какова её сила или скорость. Вот именно эту «силу» вектора в математике и называют его модулем или длиной.

Модуль вектора — это всегда неотрицательное число, которое показывает, «сколько» в этом векторе. Обозначается он так: |a| (вектор заключается в вертикальные чёрточки, как модуль числа).


Как вычислить модуль? 📏

Формула расчёта модуля напрямую связана с теоремой Пифагора, которую ты наверняка помнишь. Всё очень логично!

В 2D-пространстве

Если у нас есть вектор с координатами (x, y), то его модуль вычисляется по формуле:

|a| = √(x² + y²)

Мы просто находим гипотенузу прямоугольного треугольника с катетами x и y.

🧠 Пример: Дан вектор a = (3, 4). Найдём его модуль.

|a| = √(3² + 4²) = √(9 + 16) = √25 = 5

Его длина равна 5. Это классический «египетский» треугольник!

В 3D-пространстве

Для 3D-вектора с координатами (x, y, z) формула лишь немного удлиняется. Мы находим диагональ прямоугольного параллелепипеда:

|a| = √(x² + y² + z²)

🧠 Пример: Дан вектор b = (1, 2, 2).

|b| = √(1² + 2² + 2²) = √(1 + 4 + 4) = √9 = 3

Его длина равна 3.

Эта же логика работает и для пространств с большей размерностью!


Зачем нужна нормализация? ✨

А теперь представь, что твоя ракета летит с силой в 5 единиц. А тебе нужно, чтобы она летела в том же направлении, но с силой 1 (например, для расчёта освещения или направления взгляда камеры).

Вот этот процесс приведения вектора к длине 1 без изменения его направления и называется нормализацией. Полученный вектор называется единичным вектором или ортом.

Единичные векторы — это фундаментальные «строительные блоки» в геймдеве. Они идеально подходят для описания чистых направлений.

💡 Совет: Почему длина 1 так удобна? Потому что это нейтральный элемент умножения. Умножив нормализованный вектор на нужное число (например, на скорость 10), мы мгновенно получим вектор длиной ровно 10 в том же направлении!


Формула нормализации 🧮

Чтобы нормализовать любой ненулевой вектор, нужно каждую его координату разделить на его длину (модуль).

a_norm = (x / |a|, y / |a|, z / |a|)

Давай нормализуем наш вектор a = (3, 4) из предыдущего примера. Мы уже вычислили, что его модуль |a| = 5.

a_norm = (3 / 5, 4 / 5) = (0.6, 0.8)

Теперь проверим длину получившегося вектора:

|a_norm| = √(0.6² + 0.8²) = √(0.36 + 0.64) = √1 = 1

🎉 Отлично! Мы получили единичный вектор.

⚠️ Важно: Нельзя нормализовать нулевой вектор (с координатами (0, 0, 0)). Его длина равна нулю, а деление на ноль приведёт к ошибке в коде. Всегда проверяй, что длина вектора больше нуля, прежде чем его нормализовать!


Практика: решаем задачи 🧩

Задача 1: Найти модуль

Дан вектор скорости снаряда: v = (-5, 12). Какова его скорость (длина)?

Пошаговое решение:

  1. Запишем формулу для модуля 2D-вектора: |v| = √(x² + y²).
  2. Подставим наши координаты: |v| = √((-5)² + 12²).
  3. Возведём координаты в квадрат: (-5)² = 25, 12² = 144.
  4. Сложим результаты: 25 + 144 = 169.
  5. Извлечём квадратный корень: √169 = 13.

Ответ: Скорость снаряда равна 13 единиц.

Задача 2: Нормализовать вектор

Персонаж смотрит в направлении, заданном вектором dir = (6, 0, 8). Найдите единичный вектор (орт) этого направления.

Пошаговое решение:

  1. Сначала найдём модуль вектора |dir|.
    |dir| = √(6² + 0² + 8²) = √(36 + 0 + 64) = √100 = 10
  2. Теперь нормализуем, разделив каждую координату на длину:
    dir_norm = (6/10, 0/10, 8/10) = (0.6, 0.0, 0.8)
  3. Проверим длину нового вектора для уверенности:
    |dir_norm| = √(0.6² + 0.0² + 0.8²) = √(0.36 + 0 + 0.64) = √1 = 1

Ответ: Единичный вектор направления взгляда равен (0.6, 0.0, 0.8).


Где это применяется в геймдеве? 🎮

  • Расчёт освещения: В шейдерах почти всегда используются нормализованные векторы нормали поверхности и направления к свету.
  • Движение и физика: Чтобы задать объекту движение в определённом направлении с определённой скоростью, мы часто умножаем нормализованный вектор направления на скаляр скорости.
Скрыть рекламу навсегда

📘 VK Видео — обучение без ограничений

Все уроки доступны без VPN, без блокировок и зависаний.

Можно смотреть с телефона, планшета или компьютера — в любое время.

▶️ Смотреть на VK Видео