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.

Cesta zpátky — a zkratka, kterou má jen tuhá transformace

Transformace z rámce základny do rámce chapadla se hodí, ale hodí se i opačný směr: kde je ten předmět vzhledem k rameni? Odpověď je inverzní matice, a ta se dá spočítat dvěma způsoby — obecným a mnohem lepším.

Obecně: Gauss

Pro libovolnou transformaci se inverze spočítá jako u každé jiné matice (MatrixLab, kapitola 5). Funguje vždycky, když determinant není nula, a stojí to .

Tuhá: přímo, bez počítání

T = [[R, t], [0, 1]]   ⟹   T⁻¹ = [[Rᵀ, −Rᵀt], [0, 1]]inverze tuhé transformace

Pro tuhou transformaci se inverze napíše: rotační blok se transponuje (což je u ortogonální matice totéž co obrátit) a posun se otočí zpátky a obrátí znaménko. Žádná eliminace, žádné dělení.

Nejde jen o rychlost. Obecná inverze se počítá, takže do ní vstupují zaokrouhlovací chyby a výsledek nemusí být přesně tuhý. Tahle se skládá z týchž čísel, která už v matici jsou — takže z rotace vyjde zase rotace, exaktně. V systému, kde se transformace řetězí tisíckrát za sekundu, je to rozdíl mezi „drift roste“ a „drift neroste“.

Ale platí to jen pro tuhé. Použít tuhou zkratku na transformaci se škálou dá špatný výsledek bez varování — testy v repu na to mají případ, kde se obě inverze liší o víc než 0,1. Kalkulačka proto zkratku nabídne, teprve když ověří obě podmínky z předchozí kapitoly.

(A·B)⁻¹ = B⁻¹ · A⁻¹a pořadí se zase obrací

Vzorce v této kapitole

T⁻¹ — inverze tuhé transformace
T⁻¹ = [[Rᵀ, −Rᵀt], [0, 1]] [—] kap. 6