Геометрия
Тела вращения
Каждый физический движок (Bullet, PhysX, Jolt) использует иерархию bounding volumes: сначала сферы, потом AABB, потом точная геометрия. Это разница между 60 FPS и 10 FPS в насыщенной 3D сцене.
- **3D графика:** sphere proxy - первый уровень collision broadphase
- **3D-печать:** объём и площадь поверхности детали = время печати и расход материала
- **Архитектура:** теорема Паппа для расчёта объёма тороидальных конструкций
- **Astro/геодезия:** объём атмосферного слоя = объём большой сферы − малой
Предварительные знания
Основные тела вращения
Тело вращения получается вращением плоской фигуры вокруг оси. Цилиндр, конус и сфера - три базовых примитива, которые часто используют как collision proxy в 3D.
| Тело | Объём | Полная площадь поверхности |
|---|---|---|
| Цилиндр (r, h) | V = πr²h | S = 2πr² + 2πrh = 2πr(r+h) |
| Конус (r, h) | V = πr²h/3 | S = πr² + πrl = πr(r+l), l=√(r²+h²) |
| Сфера (r) | V = 4πr³/3 | S = 4πr² |
| Тор (R, r) | V = 2π²Rr² | S = 4π²Rr |
Объём конуса с радиусом r=3 и высотой h=4 равен:
Теорема Паппа
Теорема Паппа - мощный инструмент вычисления объёмов и площадей поверхностей тел вращения без интегрирования: достаточно знать площадь фигуры и расстояние её центроида до оси.
**Теорема Паппа об объёме:** V = 2π · d · A где d - расстояние от центроида фигуры до оси вращения, A - площадь фигуры. **Теорема Паппа о площади:** S = 2π · d · L где L - длина кривой (образующей поверхности).
Теорема Паппа даёт объём тора без тройного интеграла - идеально для 3D-печати тороидальных деталей.
Треугольник площадью 6 вращается вокруг оси. Центроид треугольника находится на расстоянии 4 от оси. Объём тела вращения:
Тор и параметрические поверхности
Параметрические поверхности задаются функцией двух параметров (u, v) ↦ (x, y, z). Это стандартный способ определения поверхностей в компьютерной графике.
**Тор (R - большой радиус, r - малый):** x(u,v) = (R + r·cos v)·cos u y(u,v) = (R + r·cos v)·sin u z(u,v) = r·sin v u, v ∈ [0, 2π] **Сфера:** x = r·sin θ·cos φ, y = r·sin θ·sin φ, z = r·cos θ
Сколько параметров нужно для задания точки на поверхности тора?
LOD и сферические прокси в 3D
Level of Detail (LOD) и bounding volumes - практические применения тел вращения в 3D движках. Простые фигуры заменяют сложные меши на расстоянии или для быстрой collision detection.
**Иерархия bounding volumes (по скорости):** 1. Bounding Sphere - самая быстрая проверка, O(1) 2. AABB (Axis-Aligned Bounding Box) - немного медленнее 3. OBB (Oriented Bounding Box) - точнее, но дороже 4. Convex Hull - точнее всех, самая дорогая Practice: сначала sphere-test, при совпадении - детальная проверка.
Почему bounding sphere используют перед более точными collision tests?
Ключевые идеи
- **Сфера:** V = 4πr³/3, S = 4πr² - самый простой collision proxy
- **Теорема Паппа:** V = 2πdA - объём тела вращения без интегрирования
- **Параметрические поверхности:** точка задаётся функцией (u,v) - стандарт 3D графики
- **LOD:** bounding sphere → AABB → convex hull - иерархия точности vs скорости
Связанные темы
Тела вращения связывают стереометрию с векторной алгеброй:
- Многогранники — Сфера как предел икосаэдра при бесконечном subdivision
- Векторная геометрия — Нормаль к параметрической поверхности = кросс-произведение частных производных
- Геометрия на собеседовании — Задачи на объём тел вращения - классика на интервью
Вопросы для размышления
- Как найти минимальную описывающую сферу для набора точек (алгоритм Велцля)? В чём его сложность?
- Почему параметрические поверхности предпочтительнее implicit уравнений для рендеринга?
- Как теорема Паппа объясняет формулы объёма цилиндра и конуса через формулу тела вращения?