Interpolace poloh: proč ne po složkách
Rameno má být v poloze A a má dojet do B. Napadne nejjednodušší věc: proložit čísla v maticích lineárně. Je to jeden řádek kódu, funguje to a je to špatně — a co je horší, na první pohled to vypadá skoro dobře.
Důvod: množina rotací není rovná. Průměr dvou rotačních matic už rotační matice není — sloupce přestanou být jednotkové — takže objekt se cestou zmenší a zase naroste. Při otočení o 90° je propad v polovině cesty na 0,707, tedy skoro 30 %. To je změřená hodnota, ne odhad: testy v repu ji kontrolují.
Jak správně
Rozložit polohu na části a interpolovat každou zvlášť: posun lineárně, úhel zvlášť. V rovině je to snadné. V prostoru je „úhel zvlášť“ přesně to, k čemu slouží kvaterniony a SLERP — a to je RotLab.
A ještě jedna past: kudy kolem. Z 350° do 10° je to 20° dopředu, ne 340° zpátky. Interpolace musí brát kratší cestu, jinak se rameno v jedné šestině případů rozjede opačným směrem než čekáte. Solver to dělá a má na to test.
Že je zelená dráha v obrázku hladká a oranžová se prohýbá dovnitř, není estetika: prohnutá dráha znamená, že nástroj jede jinudy, než měl, a v úzkém místě do něčeho narazí.