6

コア モーション クラスを見ていCMAttitudeます。デバイスの向きを 3x3 回転行列として表現できます。同時に、CATransform3Dビューの姿勢とスケーリングをカプセル化する を調べました。はCATransform3D4x4 マトリックスです。

OpenGL 回転行列は 4x4 で、4 行目と 4 列目に単に 0001 が埋め込まれていることがわかりました。

CMAttitude の回転行列が CATransform の行列に関連している場合、私は迷っていますか?

を使用して UIView を変換するために、回転行列を介して取得した空間でのデバイスの回転を使用できますCATransform3Dか? 私の意図は、ユーザーが電話を動かして、同じ変換を画面上の UIView に適用できるようにすることです。

おまけの質問: それらが関連している場合、CMAttitude の回転行列を CATransform3D に変換するにはどうすればよいですか?

4

1 に答える 1

4

ジャイロスコープは、空間内でのデバイスの向きのみを決定するために使用されます。方向自体をパラメータ化する方法は多数あります (理論的な情報については、SO(3)グループに関する情報を参照してください)。四元数、オイラー角、および 3x3 行列はその 1 つです。

3x3 マトリックスを 4x4 マトリックスに「埋め込む」ことは、GL 固有のトリックではありません。これは、平行移動のグループ (すべての 3D ベクトルに同形) と回転のグループ (上記の SO(3))の「半直接積」です。

CMAttitude から CATransform3D マトリックスを取得するには、オブジェクトの位置を想定する必要があります。ゼロの場合は、あなたが言ったように行列に 0001 を埋め込むだけです。

この質問はあなたにとって興味深いかもしれません:Appleジャイロスコープのサンプルコード

于 2012-06-01T17:37:15.480 に答える