質問

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

私が必要とするのは、ある軸とどの方向(+符号=反時計回り、=右側の規則に従って時計回り)で回転させるかです。

私はプロパティの回転レートを見つけましたが、私は私が毎秒ラジアンを与えているので、私は今から角度を抽出する方法を確かにしています。

最後の日にすべての種類のものをやりましたが、安定した値は何もありません。私はNSTIMERを使用してコアモーションデータのタイミングサンプルを実行し、2つのサンプル間の違いを計算しようとしましたので、最後のサンプル以降に回転したものがあるが、時々13600度のようなクレイジー数を与えます。iPhoneがテーブルの上に休んでいるときでさえ。

これがどのように達成できるかについての考えはいかなる考えですか?

ありがとう

役に立ちましたか?

解決

There is indeed. You can get what you're looking for by drilling down into the properties of CMMotionManager, through CMDeviceMotion and finally to CMAttitude. The attitude of the device is defined as:

the orientation of a body relative to a given frame of reference.

In the case of DeviceMotion's CMAttitude, that frame of reference is established by the framework when starting device motion updates. From that point in time on, the attitude of the device is reported relative to that reference frame (not relative to the previous frame).

The CMAttitude class provides some handy built in functionality to convert a CMAttitude to a form that is actually useful for something, like Euler Angles, a rotation matrix, or a quaternion. You sound like you're looking for the Euler Angle representation (Pitch, Yaw, Roll).

他のヒント

The answer provided above isn't quite accurate, though it's probably sufficient to answer this question. Core Motion tries to determine the device's absolute attitude at all times, meaning that the definition of the axes can vary depending on the device's orientation. For example, if the device is face-up, then pitch up/down is a rotation about the y-axis, but if the device is in landscape orientation, then pitch is a rotation about the z-axis (perpendicular to the plane of the screen). This is somewhat helpful if your application will only be used in one orientation, or you want a delta like the question asked for, but makes it excessively complicated if you want to know absolute orientation.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top