2011-12-22 20 views
7

Mam kwaternion reprezentujący obrót górnego ramienia znaków 3D. Mam też linię, która ma reprezentować nową pozycję ramienia tej postaci. Ta pozycja linii jest określona przez dwa punkty 3D.Wektor kierunkowy z kwaternionu?

To są jedyne dane, które mam i próbuję wywołać metodę w pakiecie 3D (Digital Rune), która pobiera 2 kierunkowe wektory i zwraca kwaternion reprezentujący obrót potrzebny do przesunięcia ramienia do nowej pozycji.

Problem polega na tym, że widzę pewne dziwne zachowanie, tak jakby osie są pomieszane i ogólnie po prostu nie zachowują się. Również obiekt Quaternion (który pochodzi z pakietu 3D) reprezentujący ramię facetów 3D ma W, X, Y i Z. Czy X, Y i Z reprezentują wektor kierunkowy? Ponieważ właśnie to muszę wywołać poprawnie. Używałem tego wraz z obliczonym kierunkiem wektora z punktów końcowych mojej linii, ale jak już powiedziałem, wygląda to zabawnie.

Jeśli X, Y i Z nie są wektorami kierunkowymi, to jak przekonwertować z kwaternionów do dwóch punktów końcowych, aby móc obliczyć wektor kierunkowy?

+2

może to być pomocne http://stackoverflow.com/q/1171849/10468 i to http://stackoverflow.com/q/2646121/10468 – DarenW

Odpowiedz

7

W twoim kontekście (i w większości kontekstów grafiki komputerowej), quaternion is used to represent a rotation. Nie chcesz używać X, Y i Z bezpośrednio; zamiast tego (jak opisano w powyższym samouczku), używasz go do generowania rotation matrix. Powinieneś wtedy użyć macierzy obrotu jak każdy inny 3D transformation matrix; będzie obracał punkty wokół miejsca pochodzenia, jak opisano w kwaternioności, z której pochodzi.

X, Y i Z kwaternionów reprezentują oś obrotu, ale kwaternion również koduje wielkość obrotu, w niezbyt prosty sposób. Jeśli twój pakiet zawiera funkcje, które zwracają kwaternion, powinien on również zawierać funkcje, które zamieniają jego kwaternion w macierze rotacyjne; powinieneś użyć funkcji pakowanej, o ile jest to możliwe (ponieważ powinno używać tych samych konwencji co metoda, która je wytworzyła).

Po zapoznaniu się z kwaternionami i macierzami transformacji należy uważnie przeczytać dokumentację danej funkcji, aby upewnić się, że podajesz odpowiednie argumenty i upewnić się, że używasz wyników. właściwą drogę (łatwo jest to zepsuć, nawet jeśli znasz matematykę ...).

Powiązane problemy