0

オイラー角と位置を介して彼女の向きを保持するカメラ クラスがあります。そんな感じ:

float m_x;
float m_y;
float m_z;

Vector4 m_pos;

そして、このカメラを空間上で自由に動かしたい。ユーザーがマウスを上下に動かすと、カメラは独自の座標系で x 軸を中心に回転する必要があります。しかし、私はこの 3 つの角度と位置だけを保持したいと考えています。

したがって、アルゴリズムは次のようになります。

  1. カメラのローカル システム軸 (u、v、n) を見つける
  2. 角度アルファで u 軸を中心に回転
  3. u 軸を中心とした角度アルファの回転に対応する (1, 0, 0)、(0, 1, 0)、(0, 0, 1) の周りの角度を見つけます
  4. それらをm_x、m_y、m_zに追加します

質問: ローカル カメラ座標の回転角度に応答するデフォルトの座標系 ((1, 0, 0)、(0, 1, 0)、および (0, 0, 1) を意味する) で回転角度を計算するにはどうすればよいですか?システム?

説明

または、この問題に対するより良い解決策が存在する可能性がありますか?

4

1 に答える 1

1

私はあなたのコメントからの簡潔な質問に答えています:

別の座標系での回転に応答するある座標系での回転を計算する方法は?

適切な変換行列を適用することで、座標系間の回転を変換できます。これは、オイラー角から計算できます。変換式に関するウィキペディアのセクションを参照してください。

アプリケーションによっては、翻訳も考慮する必要がある場合と考慮しない場合があります。あなたの質問を理解しているので、各変換の回転部分に集中できます。

于 2013-01-15T13:44:43.753 に答える