0

我想知道 iPhone 直立时倾斜了多少度 - 也就是说,如果我将 iPhone 指向上方,我想知道它向上看的度数是多少?我认为我可以为此使用陀螺仪和核心运动,并且我认为这是我想要的音高,但是,音高是以弧度每秒为单位的“速度”。我对用户移动 iPhone 的速度并不感兴趣,我只对倾斜角度感兴趣。因此,如果我将手机指向上方拍照,我想知道指向的角度 - 有什么想法吗?

谢谢你。

4

1 回答 1

8

陀螺仪数据以每秒弧度为单位,但您要查找的是 CMMotionManager.attitude 属性。它以弧度表示物体相对于某个参考系的姿态。

创建类变量motionManager和init:

 motionManager = [[CMMotionManager alloc] init];
    motionManager.deviceMotionUpdateInterval = 0.1f;
    [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
        [self processMotion:motion];
    }];

处理更新,您正在寻找音高,但在此示例中,它将向您显示所有三个值,以便您可以尝试并决定您需要什么:

    -(void)processMotion:(CMDeviceMotion*)motion {
        NSLog(@"Roll: %.2f Pitch: %.2f Yaw: %.2f", motion.attitude.roll, motion.attitude.pitch, motion.attitude.yaw);
}

这些是欧拉角,您还可以选择获取旋转矩阵或四元数格式。每个都有自己的优点和缺点。

于 2012-07-23T14:49:59.240 回答