iPhone - 核心运动的偏航、俯仰和翻滚范围

6

我现在手头没有iPhone 4,我正在寻找一份文档,其中显示设备的偏航、俯仰和翻滚范围以及相应位置。

我知道加速度计变化范围为-1到+1,但是昨天在我的iPhone上测试时,发现翻转范围从-M_PI到+M_PI,但是偏航和俯仰范围只有这个范围的一半。这是正确的吗?

我在苹果模糊的文档中没有看到关于这些范围的文档。我该在哪里找到这些文档?

谢谢。

2个回答

13

这不是一个完整的答案,但为了让讨论开始:

我假设您谈论的是设备姿态而不是原始陀螺仪数据。

根据经验(我面前有一台显示这些值的第四代iPod touch):

俯仰角:看起来范围为-(M_PI/2) -> +(M_PI/2),尽管我的设备限制在大约+1.55/-1.51

横滚角:-M_PI -> +M_PI

偏航角:-M_PI -> +M_PI

只是一个注意点,在我的设备上,俯仰角不能区分“向前”和“向后”倾斜,只给出设备相对于重力方向的角度。要确定屏幕是否向下或向上指向,当然可以检查gravity.z.

如果您正在使用CMDeviceMotion,则它有一个名为gravity的属性,只需获取gravity.z即可。如果设备的显示屏向上倾斜(远离重力),则其值为负数;如果显示屏向下(朝向重力)则为正数.

请注意,CMDeviceMotion使用的算法非常擅长将重力与用户加速度分离,但在某些运动类型下,可能需要等待一段时间才能使值正确,我很想听听有更好解决方案的人的看法。


谢谢,我该如何检查重力?我的意思是,我该如何利用重力方向的信息来扩展音高,使其在-M_PI -> +M_PI范围内? - Duck
在我的答案末尾添加了几段内容,扩展了使用重力方向的方法。 - J.Spiral
谢谢!我会去看看这个。我正在尝试使用四元数提取旋转...我认为这有潜力。我的一个大问题是为什么苹果让事情变得如此困难?他们喜欢创造“优雅”的解决方案,但优雅往往会损害功能性,你必须一次又一次地绕着东西转来获得所需的东西。无论如何,谢谢! - Duck
你的解决方案有更新吗?我也期待着一个解决方案。谢谢! - Raj Pawan Gumdal
1
@DigitalRobot:轻微的困难并不是因为“他们想要让它优雅”。这是因为俯仰、横滚和偏航部分重叠。例如,假设您想将手机从平放在桌子上的位置提起到垂直的横向位置。您可以通过90度偏航后跟90度横滚来实现这一点。或者,您可以通过90度俯仰后跟90度偏航来实现相同的效果。为了避免这些模糊性,苹果似乎限制了俯仰的范围。 - fishinear

1
我最近遇到了一个问题,开发了一个iOS应用程序,用于计算手机翻转的次数,但是苹果拒绝了它。因此,我将其发布在GitHub上,也许对您有用: 翻转您的手机! - https://github.com/apascual/flip-your-phone 我从未想过使用重力Z变量来解决这个问题,我很快就会尝试并回来更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接