我想知道 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];
}];
处理更新,您正在寻找音高,但在此示例中,它将向您显示所有三个值,以便您可以尝试并决定您需要什么:
-(void)processMotion:(CMDeviceMotion*)motion {
NSLog(@"Roll: %.2f Pitch: %.2f Yaw: %.2f", motion.attitude.roll, motion.attitude.pitch, motion.attitude.yaw);
}
这些是欧拉角,您还可以选择获取旋转矩阵或四元数格式。每个都有自己的优点和缺点。