2012-05-09 7 views
1

キューブの最も目に見える側の新しい角度と回転ベクトルをどのように把握するのですか?3Dキューブを回転させて、面がユーザーを向くようにする

理由:ユーザーはキューブを回転できますが、終了したら、キューブをユーザーに向かう側にスナップします。

What:私は現在、Catransform3Dでローテーションを行うためにiOSでCoreAnimationを使用しています。私は、現在の角度と回転ベクトルを持っているので、私はこれを行うことができます。

CATransform3DMakeRotation(angle, rotationVector[0], rotationVector[1], rotationVector[2]); 

追加情報:私は現在、運動を生成し、角度と回転ベクトルを計算するBill Dudney's Trackballコードを使用しています。

I need the cube to rotate so the purple side is facing user

+0

ここで答えが得られない場合は、[ゲーム開発](http://gamedev.stackexchange.com)のスタックエクスチェンジについて考えてみてください。彼らはiOSとグラフィックスの数学でうまくいきます。 – sblom

+0

良いアイデア。もしここにリードがなければ私はそこに投稿します。 –

+0

カメラも回転していますか? –

答えて

1

お使いのカメラのlookAtベクトル - おそらく{0、0、1} - 側がユーザーに近いかを決定します。

キューブのすべての面に標準を作成する必要があります。その後、キューブと同じ方法で回転します。その後、法線ベクトルとカメラlookAtベクトルの間の角度を内積を使って計算します。どちらの法線でも、最も大きなドット積はカメラに最も近い側です。