Jak przekonwertować kąty Eulera na wektory przednie, w górę, w prawo

Potrzebuję funkcji, która dała Yaw, Pitch i Roll, aby stworzyć wektor Front (lub Patrząc na), Right i Up w „światowych współrzędnych”.

W mojej szczególnej przestrzeni świata, począwszy od początku (0,0,0), X jest dodatni w lewo, Z jest dodatni odchodząc od widza / początku, a Y jest dodatni w górę.

Na przykład podane ... (kąty w stopniach)

yaw = 0, pitch = 0, roll = 0, oczekiwane wyjście:

przód = (0,0,0,0,1.0)right = (-1.0,0.0.0.0)do góry = (0.0,1.0,0.0)

yaw = 90, pitch = 0, roll = 0, oczekiwane wyjście:

front = (1,0,0,0,0,0)right = (0,0,0,0,1.0)do góry = (0.0,1.0,0.0)

yaw = 0, pitch = 90, roll = 0, oczekiwane wyjście:

front = (0.0,1.0,0.0)right = (-1.0,0.0.0.0)up = (0,0,0,0, -1,0)

yaw = 0, pitch = 0, roll = 90, oczekiwane wyjście:

przód = (0,0,0,0,1.0)right = (0.0,1.0,0.0)up = (1,0,0,0,0,0)

Język, w którym pracuję, to C ++ i chętnie użyję glm, aby rozwiązać ten problem, jeśli to ma największy sens. Jeśli uda mi się tam dotrzeć przez kwaternion, to dobrze też z tym rozwiązaniem, ponieważ znalazłem inne tutoriale, które opisują, jak uzyskać kwaternion z kątów eulera.

questionAnswers(1)

yourAnswerToTheQuestion