Тригонометрия

Тригонометрия и вращения в 3D

Кватернионы - расширение комплексных чисел для 3D вращений. Используются в каждом 3D движке (Unity, Unreal, ROS для роботов), каждой камере смартфона, в спутниковой навигации. Аполлон-13 едва не потерялся в космосе из-за gimbal lock - проблемы, которую кватернионы решают элегантно.

  • Unity и Unreal Engine: Quaternion.Slerp для плавной анимации персонажей без рывков
  • ROS (Robot Operating System): tf2 использует кватернионы для всех трансформаций систем координат
  • IMU датчики: гироскоп в смартфоне выдаёт угловую скорость, AHRS интегрирует её в кватернион
  • SLAM (Simultaneous Localization and Mapping): поза робота = позиция + кватернион ориентации

Предварительные знания

  • Теоремы синусов и косинусов
  • Тригонометрическая подстановка

Матрицы вращения SO(3): геометрия преобразований

Кватернионы используются в каждом 3D движке: Unity, Unreal, ROS для роботов. Это расширение комплексных чисел для 3D-вращений, найденное Гамильтоном в 1843 году. Прежде чем понять кватернионы, нужно понять, что они решают - проблему gimbal lock в матрицах вращения.

**Группа SO(3)** - все матрицы вращения в 3D: R ∈ SO(3) тогда и только тогда, когда Rᵀ·R = I и det(R) = +1 **Базовые повороты вокруг осей:** Rx(α) = [[1,0,0],[0,cos α,-sin α],[0,sin α,cos α]] Ry(β) = [[cos β,0,sin β],[0,1,0],[-sin β,0,cos β]] Rz(γ) = [[cos γ,-sin γ,0],[sin γ,cos γ,0],[0,0,1]] **Формула Родрига:** R = I + sin(θ)K + (1-cos θ)K² где K - кососимметрическая матрица оси вращения n̂.

R1 = Rz(90°)·Rx(30°) и R2 = Rx(30°)·Rz(90°). Это одно и то же вращение?

SO(3) некоммутативна: Rz(90°)·Rx(30°) ≠ Rx(30°)·Rz(90°). Физически: сначала повернуть голову, потом наклонить ≠ сначала наклонить, потом повернуть. Исключение: вращения вокруг одной оси коммутируют.

Углы Эйлера и gimbal lock: почему НАСА теряло спутники

Аполлон-13 едва не потерялся в космосе из-за gimbal lock в инерциальной навигационной системе. Углы Эйлера (yaw/pitch/roll) интуитивны, но при pitch = 90° теряется одна степень свободы - два кольца гироскопа совмещаются в одну плоскость.

**ZYX-конвенция (aerospace):** R = Rz(ψ) · Ry(θ) · Rx(φ) ψ - yaw (рыскание, вокруг Z) θ - pitch (тангаж, вокруг Y) φ - roll (крен, вокруг X) **Gimbal lock при θ = ±90°:** Ry(90°) = [[0,0,1],[0,1,0],[-1,0,0]] При этом Rz(ψ)·Ry(90°)·Rx(φ) зависит только от (ψ - φ), а не от ψ и φ по отдельности. Одна степень свободы потеряна.

Gimbal lock при pitch = 90°: почему теряется одна степень свободы?

Ry(90°) отображает Z → −X. В Rz(ψ)·Ry(90°)·Rx(φ) вращения вокруг Z и X оказываются в одной плоскости. Якобиан отображения (ψ,θ,φ) → матрица теряет ранг: ψ и φ входят только через разность (ψ−φ). Кватернионы решают это - нет особых точек.

Кватернионы: 4 числа вместо 9 без gimbal lock

Unity, Unreal, Blender - все хранят ориентацию в кватернионах. Четыре числа (w, x, y, z) полностью описывают 3D-вращение без особых точек. Интерполяция через SLERP обеспечивает плавную анимацию с постоянной угловой скоростью.

**Кватернион вращения** на угол θ вокруг единичной оси n̂: q = cos(θ/2) + sin(θ/2)·(nₓi + nᵧj + n_zk) или в форме (w, x, y, z): w = cos(θ/2), (x,y,z) = sin(θ/2)·n̂ **Применение к вектору v:** v' = q · (0+v) · q* (через умножение кватернионов) **SLERP** (Spherical Linear intERPolation): slerp(q₁, q₂, t) = q₁·(q₁⁻¹·q₂)^t, t ∈ [0,1] **q и -q описывают одно вращение** (двойное покрытие SO(3) группой SU(2)).

Почему кватернион q и −q описывают одно и то же вращение?

(−q)·v·(−q)* = (−q)·v·(−q*) = (−1)²·(q·v·q*) = q·v·q*. Кватернион кодирует ось и half-angle: θ+2π меняет знак всего q, но вращение то же. Поэтому SU(2) → SO(3) - двулистное покрытие: двум кватернионам (q и −q) соответствует одна матрица вращения.

Ключевые идеи

  • SO(3): R ∈ SO(3) тогда и только тогда, когда RᵀR = I и det(R) = +1; вращения некоммутативны
  • Формула Родрига: R = I + sin(θ)K + (1-cos θ)K² - вращение вокруг произвольной оси через одну формулу
  • Gimbal lock при pitch = 90°: Rz и Rx действуют в одной плоскости, ранг якобиана падает до 2
  • Кватернион вращения: q = [cos(θ/2), sin(θ/2)·n̂], |q| = 1; q и -q описывают одно вращение
  • SLERP: равномерная интерполяция по геодезической на 3-сфере - стандарт для анимации в game engines

Связанные темы

3D вращения объединяют тригонометрию, линейную алгебру и комплексный анализ:

  • Сферическая тригонометрия — Кватернионы живут на 3-сфере S³; slerp - геодезическая на ней
  • SVD и линейные преобразования — Матрицы вращения SO(3) - частный случай ортогональных матриц из SVD

Связанные уроки

  • la-01-vectors-intro
Тригонометрия и вращения в 3D

0

1

Войти