2012-05-13 12 views
8

私がやっていることは、カメラからレイを投げることです。私はカメラのx、y、z座標、そのピッチとヨーを知っています。その方向ベクトルを計算してレイトレーシングアルゴリズムに渡す必要があります。カメラのピッチ/ヨーと方向ベクトル

カメラのアップベクトルは(0、1、0)です。カメラの視点から見た「ピッチ」が上下に向かっています。

(私は行列を使用しないことを好むだろうが、私がしなければならない場合、私は意志)

+0

なぜ行列への反対ですか?それは私のためにそれをする最も論理的な方法のように思えます。あまりにも高価すぎる、あまりにも混乱する?行列を作成しない場合は、三角法を多用して工夫しなければなりません。同じことをやってしまうことになります。 – Tim

答えて

10

あなたの座標系は、以下の条件が満たされるように設定されていると仮定すると:

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

この意志計算する(x、y、z):

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

素晴らしい、これは私を助けてくれました:D – CyanPrime

+0

@Neil Forrester、x線量はどれくらいですか?式の数学的導出を見つけることができますか? – wangdq

+0

'xzLen'はx軸とz軸を含む平面に投影した後の単位ベクトルの長さです。この式は、sin()とcos()の定義から直接得られます。 –