2011-01-24 10 views
0

オブジェクトの回転を見つける必要があります。だから私は2軸でキューブを回転させています。ユーザーがクリックすると、クリックした面にキューブを回転させる必要があります。私はModelView行列を見て、ラジアンから点に変換しましたが、範囲は0から180になります(90は2回起こります)。iPhone OpenGL:オブジェクトの回転を見つける

答えて

2

モデルビュー行列を知っていれば、回転を明白に表す四元数を見つけることができます。ここで

は回転行列から四元数を計算する式とのリンクである http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm

EDIT:

あなたがオブジェクトの2つのモデルビュー行列を持っていて、一つの位置からのスムーズな動きをしたい場合あなたはまだ四元数を使用することができます!

2つの行列があります。w1w2それぞれについて、既存の公式を使用して四元数q1q2を作成します。これは簡単です。各アニメーションステップに

オブジェクトの回転のための現在の四元数を構築する:このようなアニメーションを作る

t[0, 1]からであるあなたは currentTransform四元がモデルビューを構築する知っている場合は、allTransformがS四元 ある
allTransform = q2 - q1 
currentTransform = q1 + t*allTransform 

それからの行列 - ただ準備式を使って。

これはすてきで滑らかなアニメーションを生成します。

+0

これを使用する方法がわかりません。x、y、zの度合いを調べるだけです。これを行う簡単な方法が必要です – Burf2000

+0

3つの角度(オイラー角またはクリロフの角度など)ごとに、角度の1つを決定する際にあいまいさがあるため、角度を使用する最良の方法はありません。クォータニオンはあいまい性がなく、どのように動作するのか全く理解することが難しくありません。あなたはインターネット上のクオータニオンについて読むことができますが、それはちょうどベクトルとこのベクトルの回りの回転角を意味します! – Andrew

+0

私は血まみれですので、私はあなたのアドバイスを取って調査します。私は今、各位置の行列を格納していますが、ちょうどその点にジャンプします.2つの行列の間にアニメーション化する関数があればいいと思います。 – Burf2000

関連する問題