オイラー角と位置を介して彼女の向きを保持するカメラ クラスがあります。そんな感じ:
float m_x;
float m_y;
float m_z;
Vector4 m_pos;
そして、このカメラを空間上で自由に動かしたい。ユーザーがマウスを上下に動かすと、カメラは独自の座標系で x 軸を中心に回転する必要があります。しかし、私はこの 3 つの角度と位置だけを保持したいと考えています。
したがって、アルゴリズムは次のようになります。
- カメラのローカル システム軸 (u、v、n) を見つける
- 角度アルファで u 軸を中心に回転
- u 軸を中心とした角度アルファの回転に対応する (1, 0, 0)、(0, 1, 0)、(0, 0, 1) の周りの角度を見つけます
- それらをm_x、m_y、m_zに追加します
質問: ローカル カメラ座標の回転角度に応答するデフォルトの座標系 ((1, 0, 0)、(0, 1, 0)、および (0, 0, 1) を意味する) で回転角度を計算するにはどうすればよいですか?システム?
または、この問題に対するより良い解決策が存在する可能性がありますか?