Ich habe ein Objekt, das entlang eines 3D-Vektors in Bezug auf X, Y, Z verfährt ... Ich muss das Objekt entsprechend jeder Achse drehen (x- Achse, Y-Achse und Z-Achse).OpenGL-Richtung eines Vektors in Grad (X, Y, Z)
Wie bekomme ich diese Messungen in Grad ausgedrückt?
(I OpenGL verwenden und nur weiß von glRotatef(...)
) [glRotatef (...) Dokumentation here] Mit Blick auf this Frage, gibt die Antwort
viewvector =
<x, y, z>
r = sqrt (x² + y² + z²)
phi = arctan2 (y, x)
theta = arccos (z/r)
aber von this wiki Seite Ich verstehe, dass:
[Bearbeiten von Ignacio Vazquez-Abrams]
phi => Winkel um die Z-Achse
theta => Winkel zwischen x/y plane
aber wie finde ich Y? oder muss ich?
Die eigentliche Frage ist, wie stelle ich dies in Bezug auf glRotatef(...)
?
Der dritte Winkel ist beliebig, da er die Fahrtrichtung nicht beeinflusst. Sie benötigen eine weitere Einschränkung, wenn Sie einen bestimmten Wert erzwingen möchten. –
Also, wenn ich es richtig verstehen soll, 'glRotatef (Theta, 1.0, 1.0, 0.0)' und 'glRotatef (phi, 0.0, 0.0, 1.0)' funktioniert? – Wallter
glRotatef (phi, 0,0,1); glRotatef (Theta, 1,0,0); –