Dlaczego ludzie używają czwartorzędów?

15

Od jakiegoś czasu używam ich jako czarnych skrzynek, dopiero uczę się matematyki, ale chciałbym uzyskać ostateczne odpowiedzi na to pytanie.

Jak dotąd jedyną korzyścią, na którą natknąłem się osobiście, jest możliwość SLERP między dwoma kątami - aby osiągnąć ten sam efekt z wektorem, którego potrzebujesz dość brzydka praca (wewnętrzne połączenie 0 i 2PI razem).

SirYakalot
źródło
SLERP to nie tylko interpolacja między dwoma kątami: można to łatwo zrobić za pomocą matrycy. Może interpolować między dwiema dowolnymi orientacjami, co jest znacznie bardziej złożone, gdy wykonujemy je za pomocą matryc.
Calmarius

Odpowiedzi:

23

Czwartorzędy rozwiązują kilka problemów elegancko:

  • Są tak zwarte jak reprezentacje kąta osi (4 wartości skalarne)
  • Można je łatwo przekonwertować na i z reprezentacji macierzowych
  • Interpolacja działa od dowolnego kąta początku do końca bez specjalnej obudowy
  • Nigdy nie wykazują blokady gimbala

Można obejść te problemy z innymi reprezentacjami, ale czwartorzędy dobrze pasują do ich algorytmicznej prostoty i wydajności.

Kai
źródło
1
właśnie tego dokładnie szukałem!
SirYakalot
@Kai Interpolation works from any start to end angle without special casing, jest tak naprawdę szczególny przypadek, gdy nie znajdują się na tej samej półkuli hipersfery, jest to tak naprawdę szczególny przypadek, który należy wziąć pod uwagę, ponieważ zawsze istnieją 2 kierunki interpolacji do celu i chcesz wybrać właściwa
Maik Semder
2
@Kai They never exhibit gimbal lock- to nie do końca prawda. Mogą po prostu pomnożyć q(Xaxis, 0) * q(YAxis, 90) * q(Zaxis, 20). To prawda, że ​​można ich użyć, aby uniknąć blokady gimbala, ale także matryce, kąty osi i inne. To nie jest unikalna właściwość czwartorzędów. W rzeczywistości możesz to zrobić z większością reprezentacji obrotu, ale z kątami eulera. Jedynym prawdziwym przesłaniem może być „Euler engles cierpi z powodu blokady gimbala”, ale może temu zapobiec wiele innych reprezentacji obrotu, nie tylko czwartorzędów.
Maik Semder
Również wydajność czwartorzędu nie jest na ogół lepsza we wszystkich przypadkach, na przykład szybsze jest obracanie wektora za pomocą macierzy 3x3 niż za pomocą czwartorzędu. Oto interesujący artykuł na ten temat.
Maik Semder,
3

Wspomniane użycie SLERP jest szczególnym przypadkiem bardziej ogólnego atrybutu czwartorzędów: możesz płynnie interpolować różne wartości obrotu.

Podczas interpolacji wartości obrotu kątów eulera uzyskuje się dziwnie wyglądające ruchy i po prostu nie ma logicznie żadnego sposobu interpolacji wartości obrotu kąta osi (cóż, poza dwoma różnymi kątami wokół tej samej osi).

jhocking
źródło
+1. Można interpolować między (w1, alpha1) i (w2, alpha2), konwertując te reprezentacje osi kąta na quaty, a następnie stosując SLERP. Oczywiście można to zrobić za pomocą schematu / splajnu Beziera / de Casteljau i użyć w ten sposób „wielokąta / zestawu” kluczowych czwartorzędów i uzyskać skomplikowany obrót. Jest to być może jedyna rzecz, którą czwartorzędy robią bardziej naturalnie niż inne reprezentacje, ponieważ SLERP i multiSLERP lub ich odmiany (NLERP, SQUAD) tworzą pary pośrednich osi obrotu / kątów, które leżą na geodezyjnej / najkrótszej ścieżce obrotu. Sława.
teodron