Optymalny algorytm rotacji wokół zadanej osi

0

Obrót punkt v w 3D wokół zadanej osi: u, i o kąt f.

Z kwaternionów mamy tu obliczenia typu:

v' = q * v *q'

gdzie: q = cos(f/2) + sin(f/2)*u;
oraz: q' = cos(f/2) - sin(f/2)*u;

niby to ładnie wygląda - wystarczy zapisać operator mnożenia kwaternionów i tyle...
no, ale czy nie lepiej zastosować wprost wzór Rodriguesa na obrót wokół osi?
http://en.wikipedia.org/wiki/Rodrigues'_rotation_formula

Mamy tu tylko jedno mnożenie wektorowe i dwa skalarne,
natomiast jeden iloczyn kwaternionów to przecież dwa skalarne + wektorowy,
więc dwa takie iloczyny dają 4 skalarne + 2 wektorowe, co raczej będzie bardziej kosztowne - nie?

Zatem o co w ogóle chodzi w tej kwaternionowej propagandzie,
gdzie niby jest lepiej z obrotami, bo szybciej, no i w ogóle super?
To jakaś moda, czy jak?

0

Nie jestem tutaj specem, ale ja widzę parę możliwych powodów:

  1. Obroty z kwaterionami można łatwiej na siebie nakładać, tzn. jak masz obrót p i q to możesz sobie łatwo obliczyć złożenie tego obrotu jako p \circ q
  2. Obliczenia na kwaterionach są łatwiejsze w implementacji sprzętowej, więc mimo iż w teorii jest więcej obliczeń, to wynikowo procesor będzie potrzebował mniej cykli.
  3. Dokładność obliczeń. W grafice 3D nie zawsze ma to znaczenie, ale możliwe, że straty precyzji są na tyle duże, że się nie opłaca.
0
winerfresh napisał(a):

Nie jestem tutaj specem, ale ja widzę parę możliwych powodów:

  1. Obroty z kwaterionami można łatwiej na siebie nakładać, tzn. jak masz obrót p i q to możesz sobie łatwo obliczyć złożenie tego obrotu jako p \circ q

Mało istotne a i wątpliwe: musiałbyś pokazać jak wygląda złożenie obrotów na kwaternionach.

  1. Obliczenia na kwaterionach są łatwiejsze w implementacji sprzętowej, więc mimo iż w teorii jest więcej obliczeń, to wynikowo procesor będzie potrzebował mniej cykli.

Nie ma żadnego wspomagania sprzętowego dla kwaternionów!
A więc jest nawet gorzej, ponieważ dla wektorów (3d) jest takie wspomaganie sprzętowe, więc tym bardziej lepiej użyć operacji na 3D.

  1. Dokładność obliczeń. W grafice 3D nie zawsze ma to znaczenie, ale możliwe, że straty precyzji są na tyle duże, że się nie opłaca.

Im mniej operacji tym i wynik mniej zaburzony- podstawy metod numerycznych...

0

i co z tego?

1 użytkowników online, w tym zalogowanych: 0, gości: 1