iPhoneを直立させたときに何度傾いているか知りたいのですが、iPhoneを上に向けると、何度見上げているのか知りたいのですが。これにはジャイロスコープとコアモーションが使えると思いますし、欲しいピッチだと思いますが、ピッチはラジアン/秒で表した「速度」です。ユーザーがiPhoneをどれだけ速く動かしたかにはあまり興味がなく、傾いた角度に興味があります。だから、写真を撮るために携帯電話を上に向けている場合、上に向ける角度を知りたいのですが、何かアイデアはありますか?
ありがとうございました。
ジャイロデータはラジアン/秒ですが、探しているのはCMMotionManager.attitudeプロパティです。これは、ある基準座標系に対するオブジェクトの姿勢をラジアンで示しています。
クラス変数motionManagerとinitを作成します。
motionManager = [[CMMotionManager alloc] init];
motionManager.deviceMotionUpdateInterval = 0.1f;
[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
[self processMotion:motion];
}];
更新を処理します。ピッチを探していますが、このサンプルでは3つの値すべてが表示されるので、いろいろ試して必要なものを決定できます。
-(void)processMotion:(CMDeviceMotion*)motion {
NSLog(@"Roll: %.2f Pitch: %.2f Yaw: %.2f", motion.attitude.roll, motion.attitude.pitch, motion.attitude.yaw);
}
これらはオイラー角です。rotationMatrixまたはクォータニオン形式を取得するオプションもあります。それぞれに長所と短所があります。