5

コアモーションから相対回転を取得する方法はありますか?

必要なのは、1つの軸でどれだけ回転し、どの方向に回転したかです(+記号=反時計回り、-=時計回り、右手の法則に従います)。

プロパティrotationRateを見つけましたが、これにより1秒あたりのラジアンが得られるため、このプロパティから角度を抽出する方法がわかりました。

私はこの数日間、あらゆる種類のことをしましたが、安定した価値を与えてくれるものは何もありません。NSTimerを使用してコアモーションデータのタイミングサンプルを作成し、2つのサンプル間の差を計算しようとしたので、最後のサンプルからどれだけ回転したかがわかりますが、時々、13600度のようなクレイジーな数値が得られますiPhoneがテーブルの上に置かれているときでも。

これをどのように達成できるかについて何か考えはありますか?

ありがとう

4

2 に答える 2

7

確かにあります。CMMotionManagerのプロパティにドリルダウンし、 CMDeviceMotionを介して、最後にCMAttitudeにドリルダウンすることで、探しているものを取得できます。デバイスの姿勢は次のように定義されます。

特定の参照フレームに対するボディの方向。

DeviceMotionのCMAttitudeの場合、その参照フレームは、デバイスのモーション更新を開始するときにフレームワークによって確立されます。その時点から、デバイスの姿勢は、その参照フレームに対して(前のフレームに対してではなく)報告されます。

CMAttitudeクラスは、CMAttitudeをオイラー角、回転行列、クォータニオンなどの実際に役立つ形式に変換するための便利な組み込み機能を提供します。オイラー角の表現(ピッチ、ヨー、ロール)を探しているように聞こえます。

于 2011-02-20T00:27:22.717 に答える
3

上記の答えは正確ではありませんが、この質問に答えるにはおそらく十分です。Core Motionは常にデバイスの絶対姿勢を決定しようとします。つまり、軸の定義はデバイスの向きによって異なる可能性があります。たとえば、デバイスが上向きの場合、ピッチアップ/ダウンはy軸を中心とした回転ですが、デバイスが横向きの場合、ピッチはz軸(の平面に垂直)を中心とした回転です。スクリーン)。これは、アプリケーションが1つの方向でのみ使用される場合、または要求された質問のようなデルタが必要な場合に多少役立ちますが、絶対的な方向を知りたい場合は非常に複雑になります。

于 2011-09-07T20:25:15.297 に答える