Tyto čtveřic jednotky poskytují pohodlný matematický zápis pro představující orientaci a otáčení objektů ve třech rozměrech. Ve srovnání s Eulerovými úhly se snadněji skládají a vyhýbají se problému blokování kardanového kloubu . Ve srovnání s rotačními maticemi jsou numericky stabilnější a mohou být efektivnější. Čtveřice byly přijaty v aplikacích v počítačové grafice , robotika , navigace , molekulární dynamiky a prostorové mechaniky z družic .
Altmann podrobně zdůvodňuje vlastnosti použité v této části.
Čtverce jednotek představují relativně jednoduchý matematický prostor rotací ve třech rozměrech (kolem osy procházející počátkem). Soulad mezi rotacemi a čtveřicemi můžeme pochopit tak, že začneme intuitivní představou o prostoru samotných rotací (důslednější prezentace by interpretovala množinu rotací jako Lieovu skupinu a přidružený prostor jako 3-varietu , ale tato úroveň abstrakce je pro praktické aplikace popsané v tomto článku zbytečná).
Každá trojrozměrná rotace spočívá v rotaci o určitý úhel kolem určité osy. Když je úhel nulový, na ose nezáleží, takže rotace nulového stupně je jediný bod v prostoru rotace (toto je rotace identity). Pro malý, ale nenulový úhel je množinou možných rotací malá koule obklopující rotaci identity, kde každý bod koule představuje osu směřující v určitém směru (ve srovnání s nebeskou sférou ). Rotace stále větších úhlů se postupně vzdalují od rotace identity a můžeme si je představit jako soustředné sféry zvyšujících se poloměrů. Výsledkem je, že v blízkosti rotace identity se abstraktní prostor rotací podobá běžnému trojrozměrnému prostoru (který lze také považovat za centrální bod obklopený koulemi různých poloměrů). Tam podobnost končí: když úhel natočení přesáhne 180 °, přestanou se otáčení podél různých os rozcházet a znovu se začnou navzájem podobat, až se úhel stane 360 °, nakonec se stanou identickými (a rovnými rotaci identity).
Podobný jev vidíme na povrchu koule . Pokud stojíme na severním pólu a odtud nakreslíme přímky (ve skutečnosti meridiány ) v několika směrech, rozcházejí se a pak se znovu sbíhají na jižním pólu. Soustředné kruhy se zvětšujícím se poloměrem nakreslené kolem severního pólu ( rovnoběžky ) se nakonec zhroutí v bodě na jižním pólu, jakmile jeden urazí vzdálenost mezi póly. Můžeme asimilovat různé směry od pólu (tj. Různé meridiány) k různým osám rotace a různé vzdálenosti k severnímu pólu v různých úhlech : máme tedy analogii prostoru rotací. Ale povrch koule je dvourozměrný, zatímco osy otáčení již používají tři rozměry. Prostor otáčení je proto modelován sférou dimenze 3 v prostoru 4 dimenzí ( hypersféra ). Obyčejnou sféru si můžeme představit jako část hypersféry, stejně jako kruh je částí koule. Můžeme si vzít část, která reprezentuje například pouze rotace os v rovině xy (viz obrázek naproti). Všimněte si, že úhel otočení je dva krát rozdíl šířky s severního pólu: ve skutečnosti, body na rovníku představují rotace 180 °, 90 °, a jižní pól je rotace identity 360 °, a ne 180 ° Otočení.
Severní pól a jižní pól představují stejnou rotaci a ve skutečnosti to platí pro jakoukoli dvojici bodů, které jsou navzájem antipody: pokud bod odpovídá rotaci úhlu kolem osy l 'směrované vektorem , odpovídá druhý bod k rotaci úhlu kolem osy směrované vektorem . Ve skutečnosti není prostorem rotace samotná hypersféra, ale hypersféra, kde identifikujeme body na protilehlých navzájem. Ale pro zjednodušení si můžeme rotace představit jako body koule v dimenzi 4, i když polovina z těchto bodů je nadbytečná ( dvojitý povlak ).
Nakonfigurujte prostor rotaceMůžeme parametrizovat povrch koule pomocí dvou souřadnic, jako je zeměpisná šířka a délka. Zeměpisná šířka a délka se ale na severním a jižním pólu chovají špatně ( zdegenerovaně ), zatímco póly se svou povahou neliší od ostatních bodů sféry. Na severním a jižním pólu (zeměpisných šířek + 90 ° a -90 °) ztrácí zeměpisná délka svůj význam.
Můžeme ukázat, že žádný dvouparametrový souřadný systém se této degeneraci nevyhne (jedná se o vlasovou větu ). Těmto problémům se můžeme vyhnout tím, že vrhneme kouli do trojrozměrného prostoru a parametrizujeme ji pomocí tří karteziánských souřadnic (zde w , x a y ) a umístíme severní pól na ( w , x , y ) = (1, 0, 0), jižní pól na ( w , x , y ) = (−1, 0, 0) a rovník bude kruh rovnic w = 0 a x 2 + y 2 = 1. Body koule splňují omezení w 2 + x 2 + y 2 = 1, takže stále máme dva stupně volnosti , i když máme tři souřadnice. Bod ( w , x , y ) koule představuje rotaci obyčejného prostoru kolem vodorovné osy směrované vektorem a úhlem .
Podobně lze hypersféru popisující prostor rotací v trojrozměrném prostoru parametrizovat pomocí tří úhlů ( Eulerovy úhly ), ale jakákoli parametrizace tohoto typu degeneruje v určitých bodech hypersféry, což vede k problému kardanového kloubu blokování . Tomu lze předejít pomocí čtyř Euclidean souřadnic w , x , y a Z , s w 2 + x 2 + y 2 + z 2 = 1. souřadnic bodu ( w , x , y , z ) představuje rotaci kolem osy směrováno vektorem a úhlem
Složitá čísla můžeme definovat zavedením abstraktního symbolu i, který odpovídá obvyklým pravidlům algebry a který se navíc řídí pravidlem i 2 = −1. To stačí například k reprodukci všech pravidel pro výpočet komplexních čísel .
Podobně lze čtveřice definovat zavedením abstraktních symbolů i , j a k, které splňují pravidla i 2 = j 2 = k 2 = ijk = −1 a obvyklá algebraická pravidla kromě komutativity násobení (známý příklad nekomutativního multiplication je maticové násobení ). Všechna pravidla výpočtu jsou odvozena z těchto definic; například to můžeme ukázat .
Imaginární část čtveřice se chová jako vektor z trojrozměrného vektorového prostoru a reálná část má jako skalární části . Pokud jsou čtveřice používá se v geometrii, je vhodné je definovat jako skalár plus vektoru : .
Těm, kteří studovali vektory na základní úrovni, může připadat podivné přidávat číslo do vektoru , protože jsou objekty velmi odlišné povahy, nebo rozmnožovat dva vektory mezi nimi, protože tato operace obvykle není definována. Pokud si však člověk pamatuje, že se jedná pouze o zápis pro skutečné a imaginární části čtveřice, stává se legitimnějším.
Násobení čtveřice ( Hamiltonův produkt ) můžeme v moderní řeči vyjádřit jako křížový součin a bodový součin vektorů (které byly původně původně inspirovány čtveřicemi). Místo pravidel i 2 = j 2 = k 2 = ijk = −1 máme pravidlo pro násobení dvou vektorů , kde:
Násobení vektorů není komutativní (kvůli křížovému součinu), zatímco násobení mezi skaláry a mezi skalárem a vektorem je komutativní. Z těchto pravidel bezprostředně vyplývá, že .
Inverzní (levá a pravá) nenulového čtveřice je , jak lze ověřit přímým výpočtem.
Vztah mezi rotacemi a čtveřicemi jednotekNechť ( w , x , y , z ) jsou souřadnice rotace, jak bylo popsáno výše. Definujte čtveřice: kde je jednotkový vektor . Nechť je také obyčejný vektor prostoru ve 3 dimenzích, považovaný za čtveřice s nulovou skutečnou souřadnicí. Poté můžeme ukázat (viz další část), že produkt čtveřice
vrací vektor otočený o úhel kolem osy směrované . Rotace je ve směru hodinových ručiček, pokud naše přímá viditelnost směřuje stejným směrem jako . Tato operace je známá jako konjugace pomocí q .
Z toho vyplývá, že násobení čtveřic odpovídá složení rotací, protože pokud p a q jsou čtveřice představující rotace, pak rotace (konjugace) pq je
,což se rovná převrácení (konjugaci) o q , pak o p .
Reverzní čtveřice rotace odpovídá zpětné rotaci, protože . Čtverec čtveřice je rotace stejného úhlu dvakrát kolem stejné osy. Obecněji q n odpovídá rotaci n násobku úhlu kolem stejné osy jako q . To lze rozšířit na libovolné reálné n , což umožňuje počítat mezilehlé rotace tekutinovým způsobem mezi rotacemi prostoru, jedná se o sférickou lineární interpolaci (in) .
Demonstrace ekvivalence mezi konjugací čtveřic a rotací prostoruBuď jednotkový vektor (osa otáčení) a buď .
Naším cílem je ukázat, že:
vrací vektor otočený o úhel kolem osy směrované .
Rozšířením ve skutečnosti získáme:
kde a jsou složky příslušně ortogonální a kolineární k . Toto je vzorec Olinde Rodriguesa, který udává úhlovou rotaci kolem osy, kterou směruje .
Uvažujme rotaci f kolem osy směrované a pod úhlem 120 °, tj. 2π / 3 radiány .
.Standardní je √3 je polovina úhlu je π / 3 (60 °) se kosinus poloviční úhel je 1 / 2 , (cos 60 ° = 0,5) a jeho sinus je √3 / 2 , (sin 60 ° ≈ 0,866). Musíme tedy konjugovat s unitárním čtveřicí:
Pokud je f funkce rotace,
Můžeme dokázat, že inverzi unitárního čtveřice získáme jednoduše změnou znaménka jeho imaginárních souřadnic. Tudíž,
a
Použitím běžných pravidel výpočtu s čtveřicemi získáme
.Jak se dalo očekávat, rotace je jako držení krychle za jeden z jejích vrcholů a její otočení o 120 ° podél nejdelší úhlopříčky, která prochází tímto bodem. Pozorujeme, jak tři osy procházejí kruhovou permutací .
DemonstraceProkažme předchozí výsledek: Rozšířením výrazu f (ve dvou krocích) a použitím pravidel:
získáváme:
což je oznámený výsledek. Vidíme, že takové výpočty jsou poměrně zdlouhavé dělat ručně, ale v počítačovém programu se scvrkává na volání čtyřnásobné rutiny násobení čtveřice.
Násobení čtveřic je nekomutativní . Protože vynásobení čtverců jednotek představuje skládání rotací v trojrozměrném prostoru, můžeme tuto vlastnost učinit intuitivní díky skutečnosti, že trojrozměrné rotace obecně nedojíždějí.
Může to vysvětlit jednoduché cvičení aplikace dvou po sobě jdoucích rotací na asymetrický objekt (např. Knihu). Nejprve otočte knihu o 90 stupňů ve směru hodinových ručiček kolem osy Z. Poté ji otočte o 180 stupňů kolem osy X a výsledek si zapamatujte. Vraťte se do výchozí polohy, abyste si mohli znovu přečíst název knihy, a použijte otočení v opačném pořadí. Porovnejte výsledek s předchozím výsledkem. To ukazuje, že složení dvou různých rotací kolem dvou různých os prostoru se obecně nemění.
Všimněte si, že čtverce, stejně jako jakékoli rotace nebo lineární mapování, nejsou „orientovány“ (neexistuje žádný přímý nebo nepřímý smysl). Orientace souřadného systému vychází z interpretace čísel ve fyzickém prostoru. Bez ohledu na zvolenou konvenci orientace otočení vektoru X o 90 stupňů kolem vektoru Z vrátí vektor Y - teorie a výpočty poskytnou stejný výsledek.
Reprezentace rotace jako čtveřice (4 čísla) je kompaktnější než reprezentace jako ortogonální matice (9 čísel). Navíc pro danou osu a úhel lze snadno vytvořit odpovídající čtveřici a naopak pro daný čtveřice lze snadno extrahovat osu a úhel. Všechny tyto operace jsou mnohem obtížnější s maticemi nebo Eulerovými úhly .
Ve videohrách a jiných aplikacích často existuje potřeba „plynulých rotací“, to znamená, že vyobrazená scéna by se měla otáčet plynule a ne všechny najednou. Tento výsledek můžeme získat výběrem křivky, jako je sférická lineární interpolace v prostoru čtveřice, přičemž jeden konec je identická transformace 1 (nebo odpovídá další počáteční rotaci) a druhý konec odpovídá požadované konečné rotaci. S jinými reprezentacemi rotací je obtížnější.
Když na počítači vytvoříte několik rotací, nevyhnutelně se hromadí chyby zaokrouhlování. Čtvrtek, který je mírně chybný, stále představuje rotaci poté, co byl renormalizován; matice, která je mírně chybná, již nebude ortogonální a bude obtížné ji převést zpět na vhodnou ortogonální matici.
Čtvrtiny se také vyhýbají jevu zvanému zablokování kardanového kloubu, ke kterému může dojít, když je například v systémech rotací popisujících náklon, rozteč a vybočení rozteč 90 ° nahoru nebo dolů, takže válec a vybočení odpovídají stejnému pohybu a stupni svobody byla ztracena. Například v inerciálním navigačním systému založeném na kardanovém kloubu to může mít strašlivé následky, pokud letadlo prudce stoupá nebo prudce klesá.
Ortogonální matice odpovídající rotaci pomocí jednotky čtveřice (s ) je dána vztahem
Z ortogonální čtvercové maticeNalezení čtveřice odpovídající matici rotace může být numericky nestabilní, pokud je stopa (součet prvků úhlopříčky matice) matice rotace nulová nebo velmi malá. Robustní metoda spočívá ve výběru prvku úhlopříčky, který má největší hodnotu v absolutní hodnotě. Zvážit
Tento zápis je legitimní, protože výraz pod kořenem je pozitivní. Pokud je r nula, odpovídá to stopě rovné -1 (tj. Úhel rotace π). Rotace je osová symetrie, a proto má čtveřice následující tvar (0 , .x, .y , .z) s jednotkovým vektorem směrujícím osu rotace. Jinak lze čtveřici napsat ve tvaru:
Buďte opatrní, pro vektory existují dvě konvence: jedna předpokládá, že matice rotace jsou vynásobeny řádkovými vektory vlevo, druhou sloupcovými vektory vpravo; tyto dvě konvence vedou k maticím, které jsou transponovány jeden od druhého. Výše uvedená matice předpokládá, že používáme vektory pravého sloupce. Historicky konvence vektor-sloupec-doprava vychází z matematiky a klasické mechaniky, zatímco konvence vektor-řádek-doleva pochází z počítačové grafiky, kde bylo v prvních dnech snazší psát do řádkových vektorů.
Výše uvedená část popisuje, jak obnovit čtveřici q z rotační matice 3 x 3 Q . Předpokládejme však, že máme matici Q, která není maticí čisté rotace, například kvůli zaokrouhlovacím chybám, a že chceme co nejpřesněji najít kvaternion q, který představuje Q. V tomto případě vytvoříme symetrickou matici 4 × 4
a hledáme vlastní vektor souřadnic ( x , y , z , w ) odpovídající největšímu vlastnímu číslu (tato hodnota má hodnotu 1 právě tehdy, když Q je čistá rotace). Takto získaný čtveřice bude odpovídat rotaci nejblíže výchozí matici Q.
Tato část pojednává o implikacích výkonu použití čtveřic oproti jiným metodám (osové a úhlové nebo rotační matice) k provádění 3D rotací.
VýsledekMetoda | Paměť |
---|---|
Rotační matice | 9 |
Čtveřice | 4 |
Osa a úhel | 4 * |
* Poznámka: zobrazení jako úhel a osa lze uložit na 3 místech pouze vynásobením osy otáčení úhlem otáčení; před jeho použitím však musí být jednotkový vektor a úhel obnoveny renormalizací, což stojí další matematické operace.
Metoda | Násobení | Sčítání a odčítání | Celkový počet operací |
---|---|---|---|
Rotace umírá | 27 | 18 | 45 |
Čtveřice | 16 | 12 | 28 |
Metoda | Násobení | Sčítání a odčítání | hřích a cos | Celkový počet operací | |
---|---|---|---|---|---|
Rotační matice | 9 | 6 | 0 | 15 | |
Čtveřice | Bez mezilehlé matice | 15 | 15 | 0 | 30 |
Čtveřice | S mezilehlou maticí | 21 | 18 | 0 | 39 |
Osa a úhel | Bez mezilehlé matice | 18 | 13 | 2 | 30 + 3 |
Osa a úhel | S mezilehlou maticí | 21 | 16 | 2 | 37 + 2 |
Existují tři základní techniky otáčení vektoru :
Metoda | Násobení | Sčítání a odčítání | hřích a cos | Celkový počet operací | |
---|---|---|---|---|---|
Rotační matice | 9n | 6n | 0 | 15n | |
Čtveřice | Bez mezilehlé matice | 15n | 15n | 0 | 30n |
Čtveřice | S mezilehlou maticí | 9n + 12 | 6n + 12 | 0 | 15 n + 24 |
Osa a úhel | Bez mezilehlé matice | 18n | 12n + 1 | 2 | 30 n + 3 |
Osa a úhel | S mezilehlou maticí | 9n + 12 | 6n + 10 | 2 | 15 n + 24 |
Pseudokód pro rotaci pomocí čtveřic
Vzhledem k čtveřici z = a + bi + cj + dk (se | z | = 1) a vektoru souřadnic v1 , v2 a v3 se následující kód otáčí. Všimněte si použití dočasných proměnných t xx. Všimněte si také optimalizace prvků úhlopříčky matice R : jako bychom přepsali prvek vlevo nahoře jako ; další dva prvky úhlopříčky lze přepsat stejným způsobem.
t2 = a*b t3 = a*c t4 = a*d t5 = -b*b t6 = b*c t7 = b*d t8 = -c*c t9 = c*d t10 = -d*d v1new = 2*( (t8 + t10)*v1 + (t6 - t4)*v2 + (t3 + t7)*v3 ) + v1 v2new = 2*( (t4 + t6)*v1 + (t5 + t10)*v2 + (t9 - t2)*v3 ) + v2 v3new = 2*( (t7 - t3)*v1 + (t2 + t9)*v2 + (t5 + t8)*v3 ) + v3Pseudokód pro vytvoření matice úhlu a osy
Vzhledem k jednotkovému vektoru souřadnic ( v1 , v2 , v3 ) a úhlu θ lze rotační matici vypočítat pomocí:
t1 = cos(theta) t2 = 1 - t1 t3 = v1*v1 t6 = t2*v1 t7 = t6*v2 t8 = sin(theta) t9 = t8*v3 t11 = t6*v3 t12 = t8*v2 t15 = v2*v2 t19 = t2*v2*v3 t20 = t8*v1 t24 = v3*v3 R[1, 1] = t1 + t2*t3 R[1, 2] = t7 - t9 R[1, 3] = t11 + t12 R[2, 1] = t7 + t9 R[2, 2] = t1 + t2*t15 R[2, 3] = t19 - t20 R[3, 1] = t11 - t12 R[3, 2] = t19 + t20 R[3, 3] = t1 + t2*t24Dvojice nečleněných čtveřic z l a z r může představovat jakoukoli rotaci prostoru ve čtyřech rozměrech. Vzhledem k čtyřrozměrnému vektoru , který je považován za čtveřice, můžeme rotovat následovně:
Tyto dvě matice ověřují : každá z těchto dvou matic (a tedy i jejich kombinace) představuje rotaci. Všimněte si, že jako dvě matice se musí přepínat. Proto existují dvě dojíždějící podskupiny množiny rotací čtyřrozměrného prostoru. Pro každou rotaci 4-dimenzionálního prostoru existuje šest stupňů volnosti, každá z těchto dvou matic představuje 3 z těchto 6 stupňů volnosti.
Stejným způsobem, že nekonečně čtyřrozměrná rotace může být znázorněna následovně, dvojicí čtveřic, můžeme představovat všechny rotace prostoru ve 4 rozměrech.