🔺 Почему треугольники важны в играх?

В компьютерных играх треугольники используются повсюду:

  • Графика – все 3D-объекты состоят из треугольников (треугольные полигоны).
  • Физика – расчёты столкновений, траекторий, теней.
  • Игровая логика – зоны видимости, искусственный интеллект, навигация.

🎮 Как подобие треугольников помогает в играх?

Подобные треугольники помогают создавать реалистичные эффекты, например:

  • Уменьшение объектов при удалении (перспектива)
  • Расчет расстояний между персонажами
  • Создание теней и отражений
  • Определение высоты объектов по их теням
  • Масштабирование игрового интерфейса

📐 Признаки подобия треугольников

Треугольники подобны, если их углы равны, а стороны пропорциональны.

Если ΔABC ∼ ΔA₁B₁C₁, то:

  • ∠A = ∠A₁, ∠B = ∠B₁, ∠C = ∠C₁
  • AB/A₁B₁ = BC/B₁C₁ = AC/A₁C₁ = k, где k — коэффициент подобия

Три признака подобия:

1. По двум углам

∠A = ∠A₁, ∠B = ∠B₁ ⇒ ΔABC ∼ ΔA₁B₁C₁

Применение: определение высоты здания по его тени в игре.

2. По двум сторонам и углу между ними

AB/A₁B₁ = AC/A₁C₁, ∠A = ∠A₁ ⇒ ΔABC ∼ ΔA₁B₁C₁

Применение: масштабирование текстур с сохранением пропорций.

3. По трём сторонам

AB/A₁B₁ = BC/B₁C₁ = AC/A₁C₁ ⇒ ΔABC ∼ ΔA₁B₁C₁

Применение: проверка соответствия 3D-моделей разных масштабов.

🎮 Пример 1: Перспектива в Minecraft

В Minecraft, как и в других 3D-играх, размер объектов на экране уменьшается по мере их удаления от камеры игрока. Это явление основано на принципах перспективы и подобия треугольников.

Задача:

Дерево в Minecraft высотой 10 блоков. На расстоянии 20 блоков оно кажется высотой 5 блоков. Во сколько раз уменьшится его высота на расстоянии 40 блоков?

Геометрическая модель:

  • Камера игрока — это точка, из которой исходят лучи к вершине и основанию дерева
  • Эти лучи образуют два подобных треугольника:
    1. Один треугольник — для дерева на расстоянии 20 блоков
    2. Другой треугольник — для дерева на расстоянии 40 блоков
  • Подобие треугольников означает, что соотношение высоты дерева к расстоянию до него остаётся постоянным

Решение:

Проверка через подобие треугольников:

  • На расстоянии 20 блоков видимая высота: 5 блоков
  • На расстоянии 40 блоков видимая высота: ? блоков

Из подобия треугольников следует, что:

видимая высота / реальная высота = постоянная / расстояние

Для расстояния 20 блоков:

5 / 10 = постоянная / 20

постоянная = (5 × 20) / 10 = 10

Для расстояния 40 блоков:

видимая высота / 10 = 10 / 40

видимая высота = (10 × 10) / 40 = 2.5 блока

Таким образом, видимая высота уменьшилась в:

5 / 2.5 = 2 раза

Таким образом, видимая высота дерева обратно пропорциональна расстоянию до него. Если расстояние увеличивается в 2 раза (с 20 до 40 блоков), то видимая высота уменьшается в 2 раза (с 5 до 2.5 блоков).

Ответ: На расстоянии 40 блоков высота дерева уменьшится в 2 раза.

🎮 Пример 2: Трассировка лучей в Wolfenstein 3D

Для задачи трассировки лучей в стиле Wolfenstein 3D, где луч от игрока до стены образует прямоугольный треугольник, и известен угол между лучом и направлением взгляда игрока, можно найти реальную горизонтальную дистанцию до стены.

Задача:

Игрок видит стену под углом 30°. Расстояние до стены по прямой – 10 метров. Какова реальная дистанция (по горизонтали)?

Геометрическая модель:

  • ΔABC – прямоугольный треугольник
  • ∠A = 30° (угол между лучом и горизонтом)
  • Гипотенуза AB = 10 м (расстояние по прямой)
  • Нужно найти катет AC (горизонтальное расстояние)

Решение:

Используем формулу для нахождения катета в прямоугольном треугольнике:

горизонтальное расстояние = длина луча × cos(θ)

В прямоугольном треугольнике:

  • Горизонтальное расстояние (смежный катет) = гипотенуза × cos(угла)
  • Вертикальное расстояние (противоположный катет) = гипотенуза × sin(угла)

Нам нужно найти горизонтальное расстояние, поэтому используем косинус угла:

cos(30°) = AC / AB

AC = AB × cos(30°)

Подставляем значения:

cos(30°) ≈ 0.866

AC = 10 × 0.866 ≈ 8.66 м

Ответ: ≈ 8.66 м

Зачем это нужно в играх?

Коррекция расстояния с помощью косинуса угла необходима для устранения оптического искажения («эффект рыбьего глаза»), обеспечивая правильное и равномерное отображение стен на экране независимо от угла, под которым они видны.

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

📊 Коэффициент подобия и его свойства

Что такое коэффициент подобия (k)?

Коэффициент подобия (k) — это число, показывающее, во сколько раз стороны одного треугольника больше (или меньше) сторон другого треугольника.

  • Если k > 1 — треугольник увеличивается
  • Если 0 < k < 1 — треугольник уменьшается
  • Если k = 1 — треугольники равны (частный случай подобия)

Свойства коэффициента подобия:

1. Для линейных размеров:

L₂ = k · L₁

Высота, ширина, длина сторон — всё изменяется в k раз

2. Для периметра:

P₂ = k · P₁

Периметр — сумма сторон, поэтому тоже изменяется в k раз

3. Для площади:

S₂ = k² · S₁

Площадь зависит от произведения двух измерений, поэтому изменяется в k² раз

🎮 Пример из игры:

В стратегической игре вы увеличиваете размер здания в 3 раза (k = 3):

  • Высота и ширина: ×3
  • Периметр основания: ×3
  • Площадь основания: ×9 (3² = 9)
  • Это важно для расчёта занимаемой территории и столкновений