2012-05-13 5 views
8

Was ich versuche, ist ein Strahl von meiner Kamera zu werfen. Ich kenne die x-, y- und z-Koordinaten der Kamera sowie deren Nick- und Gierwinkel. Ich muss seinen Richtungsvektor berechnen, damit ich ihn an meinen Raytracing-Algorithmus übergeben kann.Kamera Pitch/Yaw in Richtung Vektor

Der Aufwärtsvektor der Kamera ist (0, 1, 0). "Pitch" schaut aus der Perspektive der Kamera auf und ab.

(ich würde es vorziehen, nicht Matrizen zu verwenden, aber ich werde, wenn ich zu haben)

+0

Warum der Einwand gegen Matrizen? Das scheint der logischste Weg zu sein, es für mich zu tun. Zu verwirrend, zu teuer? Wenn du keine Matrizen machst, musst du es nur mit viel Trigonometrie erstellen, was letztendlich dazu führt, dass du dasselbe machst. – Tim

Antwort

10

Unter der Annahme, dass Ihr Koordinatensystem so eingerichtet ist, dass die folgenden Bedingungen erfüllt sind:

(pitch, yaw) -> (x, y, z) 
(0,  0) -> (1, 0, 0) 
(pi/2, 0) -> (0, 1, 0) 
(0, -pi/2) -> (0, 0, 1) 

Dieser Wille berechnen (x, y, z):

xzLen = cos(pitch) 
x = xzLen * cos(yaw) 
y = sin(pitch) 
z = xzLen * sin(-yaw) 
+0

Super, das hat mir sehr geholfen: D – CyanPrime

+0

@Neil Forrester, welche Dosis xzlen bedeuten? Wo finde ich die mathematische Ableitung der Formel? – wangdq

+0

'xzLen' ist die Länge des Einheitsvektors in der gewünschten Richtung, nachdem er in die Ebene mit den x- und z-Achsen projiziert wurde. Die Formel folgt direkt aus den Definitionen von sin() und cos(). –