Треугольники — основа современной компьютерной графики и игровой механики.
🔺 Почему треугольники важны в играх?
В компьютерных играх треугольники используются повсюду:
- Графика – все 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 блоков?
Геометрическая модель:
- Камера игрока — это точка, из которой исходят лучи к вершине и основанию дерева
- Эти лучи образуют два подобных треугольника:
- Один треугольник — для дерева на расстоянии 20 блоков
- Другой треугольник — для дерева на расстоянии 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)
- Это важно для расчёта занимаемой территории и столкновений