Jestem fizykiem i uczyłem się programowania i spotkałem wielu ludzi używających kwaternionów do rotacji, zamiast pisać rzeczy w postaci macierzy / wektorów.
W fizyce są bardzo dobre powody, dla których nie używamy kwaternionów (pomimo dziwacznej historii, która czasami opowiada się o Hamilton / Gibbs / etc). Fizyka wymaga, aby nasze opisy miały dobre zachowanie analityczne (ma to precyzyjnie zdefiniowane znaczenie, ale na pewne raczej techniczne sposoby, które wykraczają daleko poza to, czego uczy się na normalnych zajęciach wprowadzających, więc nie będę wchodził w żadne szczegóły). Okazuje się, że kwaternionie nie mają tak przyjemnego zachowania, więc nie są przydatne, a wektory / macierze tak, więc ich używamy.
Jednak ograniczone do sztywnych obrotów i opisów, które nie używają żadnych struktur analitycznych, obroty 3D można opisać równoważnie w obie strony (lub na kilka innych sposobów).
Ogólnie rzecz biorąc, chcemy po prostu odwzorować punkt X = (x, y, z) na nowy punkt X '= (x', y ', z') podlegający ograniczeniu, że X 2 = X ' 2 . I jest wiele rzeczy, które to robią.
Naiwnym sposobem jest po prostu narysowanie trójkątów, które to definiuje i użycie trygonometrii lub użycie izomorfizmu między punktem (x, y, z) a wektorem (x, y, z) i funkcją f (X) = X 'i macierz MX = X ', lub używając kwaternionów lub rzutując składowe starego wektora wzdłuż nowego inną metodą (x, y, z) T. (a, b, c) (x', y ', z ') itp.
Z matematycznego punktu widzenia wszystkie te opisy są równoważne w tym ustawieniu (jako twierdzenie). Wszystkie mają taką samą liczbę stopni swobody, taką samą liczbę wiązań itd.
Dlaczego więc quaternions wydają się być preferowane w stosunku do wektorów?
Zwykłe powody, które widzę, to brak blokady gimbala lub problemy numeryczne.
Argument braku blokady gimbala wydaje się dziwny, ponieważ jest to tylko problem kątów Eulera. Jest to również problem tylko ze współrzędnymi (podobnie jak osobliwość przy r = 0 we współrzędnych biegunowych (jakobian traci rangę)), co oznacza, że jest to tylko problem lokalny i można go rozwiązać, zmieniając współrzędne, obracając się poza degeneracją, lub używając dwóch nakładających się układów współrzędnych.
Jestem mniej pewien co do kwestii liczbowych, ponieważ nie wiem szczegółowo, jak oba te (i jakiekolwiek alternatywy) zostaną zaimplementowane. Czytałem, że ponowna normalizacja kwaternionu jest łatwiejsza niż zrobienie tego dla macierzy rotacji, ale jest to prawdą tylko dla macierzy ogólnej; obrót ma dodatkowe ograniczenia, które to trywializują (które są wbudowane w definicję kwaternionów) (w rzeczywistości musi to być prawdą, ponieważ mają one taką samą liczbę stopni swobody).
Więc jaki jest powód używania kwaternionów zamiast wektorów lub innych alternatyw?