Arkadiusz Jadczyk Arkadiusz Jadczyk
1607
BLOG

Kręcimy kwaterniony

Arkadiusz Jadczyk Arkadiusz Jadczyk Nauka Obserwuj temat Obserwuj notkę 21

Jak to jest gdy się jest wirującą gajką-nakrętką w pustej przestrzeni? Kot to wiadomo – może spać, przeciągać się, wyginać, skakać, drapać, wspinać na drzewa. Ale gajka? Co ona może? Nawet swego środka masy sama z miejsca nie ruszy. Ma tylko trzy stopnie swobody. Może się ustawić tak czy inaczej w stosunku do gwiazd. I to wszystko.

A dokładniej, to jak wygląda jej świat? Jak to opisać matematycznie? No a jak opisać orientację jednego prostokątnego układu współrzędnych względem drugiego? Zakładając, że początki są te same?

Taką właśnie matematykę, bez względu na to czy ją rozumieją czy nie, muszą opanować twórcy gier komputerowych w 3D. Tak wygląda jedna ze stron internetowych programisty gier, Adama Sawickiego

Kręcimy kwaterniony

Widzimy tam macierze, widzimy kwaterniony. Na stronach „Kwaterniony w praktyce” znajdujemy

Artykuł poświęcony jest w całości kwaternionom. To obiekty matematyczne, które służą programistom grafiki i gier do reprezentowania rotacji (obrotów) i orientacji w przestrzeni 3D.

Nam się kwaterniony przydadzą do malowania historii obrotów przewrotek naszej gajki, gajki Dżanibekowa co ją obrabiamy bez wytchnienia. Skoro rotująca i fikająca gajka ma trzy stopnie swobody, zatem jej pozycja w każdej chwili winna się dać opisać trzema współrzędnymi, zatem będzie to punkt w trójwymiarowej przestrzeni.... W zasadzie tak, tyle, że są tu szczegóły i diabeł się w nich ukrywa.

Można oczywiście „na pałę” wziąć trzy kąty Eulera jako współrzędne punktu w trójwymiarowej przestrzeni, ale jest to nieeleganckie. Kąty 0 i 2Pi to przecież ten sam obrót, a na obrazku będą wypadały jako różne. Programiści kątów Eulera specjalnie nie lubią. Bardziej lubią kwaterniony. Nasza gajka też kwaterniony polubiła.

Rzecz w tym, że: Każdą macierz obrotu (macierz ortogonalna o wyznaczniku 1) można przedstawić jako jednostkowy kwaternion. I każdy jednostkowy kwaternion definiuje pewną macierz obrotu. I to jest bardzo bardzo bardzo wygodne.

A co to jest kwaternion? Wystarczy nam, że jest to czwórka liczb rzeczywistych q0,q1,q2,q3. Kwaternion jednostkowy to taki, gdzie suma kwadratów tych liczb jest równa 1.

No a jak macierzy obrotów przyporządkowuje się kwaternion? Na ten temat są całe rozprawy – jak to zrobić, żeby było „numerycznie bezpiecznie”. Nam wystarczy jedna formuła. Weźmiemy ją z artykułu w Wikipedii „Rotation formalisms in three dimensions

Kręcimy kwaterniony

Zamiast naszych q0,q1,q2,q3 w Wiki mają qr,qi,qj,qk. Można sobie sprawdzić, że z tego iż nasza macierz jest macierzą ortogonalną automatycznie wynika, że otrzymany z niej kwaternion jest jednostkowy. Macierzy odwrotnej odpowiada przy tym kwaternion sprzężony. Macierzy jednostkowej odpowiada kwaternion 1,0,0,0. To miłe. Skąd się taka formuła wzięła? A co jeśli mianownik jest zerem? Nie będziemy w to wchodzić Wzięła się z powodów, zaś mianownik u nas zerem nie będzie. Chyba, że będzie – wtedy się będziemy martwić. W końcu bawimy się tu a nie wysyłamy prawdziwy statek kosmiczny z załogą na pokładzie.

No dobrze, ale po co mamy reprezentować macierz obrotu przez czwórkę liczb o sumie kwadratów równej 1?

Hmmm.

Trójka liczb o sumie kwadratów równej liczb to punkt powierzchni kuli o promieniu 1. Tak kula mieści się w trójwymiarowej przestrzeni. Powierzchnię takiej kuli można zrzutować na dwuwymiarową płaszczyznę poprzez rzut stereograficzny.

Czwórka liczb o sumie kwadratów równej liczb to punkt powierzchni kuli o promieniu 1. Tak kula mieści się w czterowymiarowej przestrzeni. Powierzchnię takiej kuli można zrzutować na trójwymiarową przestrzeń poprzez rzut stereograficzny.

I to jest miłe.

W wydaniu kwaternionowym rzut stereograficzny jest prosty:

(q0,q1,q2,q3) rzutuje się na punkt w trójwymiarowej przestrzeni o współrzędnych (q1/(1-q0), q2/(1-q0),q3/(1-q0)). Tylko jeden punkt umyka naszemu rzutowaniu, mianowicie jednostkowy kwaternion (1,0,0,0), ten co odpowiada macierzy jednostkowej.

I teraz możemy robić tak: stosujemy do gajki nasz algorytm. Dla każdej chwili t dostajemy macierz obrotu R(t). Miast obracać tą macierzą naszą gajkę, jak to robimy w animacji, obliczamy odpowiadający jej kwaternion q(t)= (q0(t),q1(t),q2(t),q3(t)). Następnie ten kwaternion przedstawiamy jako punkt w trójwymiarowej przestrzeni o współrzędnych

( q0(t) / (1-q0(t)), q1(t) / (1-q0(t)), q2(t) / (1-q0(t)), q3(t) / (1-q0(t)) )

I tak cała historia naszej gajki to jedna przestrzenna krzywa. Możemy porównywać różne krzywe, patrzeć jak się zwijają, patrzeć jak fikają.

Ale to nie wszystko. Bowiem w tym wszystkim ukryta jest geometria. Od czasów Riemanna, Clifforda i Einsteina wiemy, że masy mogą geometrię „czuć”.

Kręcimy kwaterniony

I nasza gajka geometrię z jednej strony tworzy a z drugiej ją czuje. Niby to tylko inny punkt widzenia na to samo. Ale nigdy nie wiadomo z góry, który punkt widzenia będzie użyteczny w przyszłości. Czeka nas więc jeszcze z tą gajką przygoda.

Naukowiec, zainteresowany obrzeżami nauki. Katalog SEO Katalog Stron map counter Życie jest religią. Nasze życiowe doświadczenia odzwierciedlają nasze oddziaływania z Bogiem. Ludzie śpiący są ludźmi małej wiary gdy idzie o ich oddziaływania ze wszystkim co stworzone. Niektórzy ludzie sądzą, że świat istnieje dla nich, po to, by go pokonać, zignorować lub zgasić. Dla tych ludzi świat zgaśnie. Staną się dokładnie tym co dali życiu. Staną się jedynie snem w "przeszłości". Ci co baczą uważnie na obiektywną rzeczywistość wokół siebie, staną się rzeczywistością "Przyszłości" Lista wszystkich wpisów  

Nowości od blogera

Komentarze

Inne tematy w dziale Technologie