TransformLab posunout, otočit, složit

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.

Do prostoru: matice 4×4

Všechno z předchozích kapitol platí v prostoru beze změny, jen matice mají 4×4 a rotace mají tři osy místo jedné.

T = [[R (3×3), t (3×1)], [0 0 0, 1]]prostorová transformace

Rotační blok je 3×3, poslední sloupec je posun, poslední řádek pořád (0, 0, 0, 1). Bod má na konci 1, směr 0 — přesně jako v rovině.

Tři věci se ale změní, a všechny bolí

  • Otáčení přestane komutovat. V rovině je jedno, v jakém pořadí se otáčí; v prostoru rozhodně ne. Otočit o 90° kolem x a pak kolem y je něco úplně jiného než naopak — a je to snadné si vyzkoušet s krabičkou od zápalek.
  • Úhly se nesčítají. V rovině bylo natočení nástroje součtem kloubových úhlů. V prostoru žádný takový součet neexistuje.
  • Zápis rotace přestane být samozřejmý. Devět čísel na tři stupně volnosti je šest čísel navíc, takže existuje pořádí konvencí — Eulerovy úhly (dvanáct sekvencí!), osa-úhel, kvaterniony. Každá má svoji past.

Tady tahle labka končí a začíná RotLab. Orientace v prostoru je vlastní téma s vlastními pastmi — gimbal lock, dvě konvence kvaternionů, dvanáct Eulerových sekvencí — a mít na ně dvě odpovědi ve dvou labkách by znamenalo mít je za chvíli rozejité. TransformLab tedy 4×4 používá, ale rotační blok bere jako danou věc.

A jedna věc navíc: perspektiva

Až dosud byl poslední řádek pořád (0, …, 0, 1). Když se nechá být něčím jiným, poslední souřadnice po vynásobení nebude 1 — a bod se musí vydělit tou hodnotou. Tomu se říká perspektivní dělení a je to přesně to, čím kamera dělá vzdálené věci menšími. Homogenní souřadnice tedy nejsou trik na posun; posun je jen jejich nejjednodušší použití. Viz VisionLab.

Vzorce v této kapitole

T (3-D) — prostorová tuhá transformace
T = [[R, t], [0ᵀ, 1]], R ∈ SO(3) [—] kap. 10