RotLab orientace v prostoru
Otevřít interaktivní verzi →

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

7. Kvaterniony

Čtyři čísla s jednou vazbou (jednotková délka). Nemají singularitu, skládají se levněji než matice, dobře se interpolují a dobře se integrují. Za to platí jedinou vlastností, které je potřeba rozumět — dvojitým pokrytím.

Z osy a úhlu se kvaternion staví přímočaře, jen si všimni poloviny úhlu:

q = ( cos θ2 ,   k̂ · sin θ2 )

Ta polovina je zdrojem všeho, co je na kvaternionech zvláštní — i toho dvojitého pokrytí.

xyzw = cos(θ/2)0.5736x = k̂ₓ · sin(θ/2)0.5140y = k̂ᵧ · sin(θ/2)0.3599z = k̂_z · sin(θ/2)0.5265|q| = 1.0000
0.186-0.2340.9540.974-0.083-0.2110.1280.9690.212
Všimni si poloviny úhlu — z ní plyne všechno zvláštní na kvaternionech. Zkus θ = 0: vyjde (1, 0, 0, 0) a osa přestane mít smysl. A hlavně: q i −q dávají tutéž matici, tady na 0e+0 přesně. To je dvojité pokrytí.
Osa je čárkovaná, otočený rámec plný. Táhni úhel k nule a všimni si, že kvaternion jde k (1, 0, 0, 0) a osa přestane mít smysl — otočení o nic je kolem čehokoliv. Vpravo se rozepisuje, odkud se která složka bere.

Otočení vektoru

v′ = q ⊗ v ⊗ q*

kde v je „čistý“ kvaternion s nulovou skalární částí a q* je konjugovaný kvaternion (opačná rotace). Skládání rotací je prostý součin, ve stejném pořadí jako u matic: qAC = qAB ⊗ qBC.

Dvojité pokrytí

q a −q jsou tatáž rotace. Otočení o θ kolem k̂ a otočení o 2π−θ kolem −k̂ skončí ve stejné poloze, a kvaternion to pozná: převod na matici dá bit po bitu stejný výsledek. Důsledky, na které se naráží:

  • Porovnávat kvaterniony po složkách nejde — musíš připustit obě znaménka.
  • Filtr nebo regulátor, který počítá „chybu“ jako qcíl − qteď, se může rozjet opačným směrem. Chyba se počítá jako qcíl ⊗ qteď*.
  • Interpolace si musí vybrat kratší cestu (kapitola 8).

Numerika

Převod matice → kvaternion se nesmí psát naivně jako w = √(1+stopa)/2: blízko θ = π jde stopa k −1 a odmocnina ztratí všechny platné číslice. Nástroj používá Shepperdovu metodu — vybere se ta ze čtyř větví, jejíž odmocňovaný výraz je největší. V testech je to ověřené při θ → π, kde naivní varianta selhává.

Vzorce v této kapitole

q(k̂,θ) — kvaternion z osy a úhlu
q = (cos(θ/2), k̂·sin(θ/2)); q a −q jsou tatáž rotace [—] Hamilton
v′ — otočení vektoru kvaternionem
v′ = q ⊗ v ⊗ q*; q_AC = q_AB ⊗ q_BC [—] Hamilton