【问题标题】:iphone - core motion range of yaw, pitch and rolliphone - 偏航、俯仰和滚动的核心运动范围
【发布时间】:2011-06-27 15:13:23
【问题描述】:

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

我知道加速度计在 -1 到 +1 之间变化,但昨天在我的 iPhone 上进行的测试显示,侧倾从 -M_PI 到 +M_PI 不等,但偏航和俯仰范围是其中的一半。这是正确的吗?

在哪里可以找到有关这些范围的文档?我没有在 Apple vague docs 上看到它。

谢谢。

【问题讨论】:

    标签: iphone core-motion


    【解决方案1】:

    这不是一个完整的答案,而是为了开始滚动:

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

    有趣的是(我面前有一台 ipod touch 4 gen 显示这些值):

    pitch:看起来是 -(M_PI/2) -> +(M_PI/2) 的范围,尽管我的上限为 ~ +1.55 / -1.51

    滚动:-M_PI -> +M_PI

    偏航:-M_PI -> +M_PI

    请注意,至少在我的设备俯仰角上并没有区分“向前”与“向后”倾斜,只是给出了设备相对于重力方向的角度。要确定屏幕是朝下还是朝上,您当然可以检查gravity.z。

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

    请注意,CMDeviceMotion 使用的算法非常擅长将重力与用户加速度分开,但在某些类型的运动下,在值变得正确之前可能会有一些滞后,我希望有更好的解决方案的人来这里。

    【讨论】:

    • 谢谢,如何检查重力?我的意思是,我如何使用重力方向的信息来扩大俯仰,使其在 -M_PI -> +M_PI 范围内???
    • 在我的答案末尾添加了几段关于使用重力方向的扩展。
    • 谢谢!!!!!!!!!我会检查一下。我想看看我是否可以使用四元数提取旋转......我认为这有潜力。我最大的问题是为什么苹果让事情变得如此困难?他们喜欢创建“优雅”的解决方案,但优雅会多次损害功能,您必须始终创建周而复始的东西才能获得所需的东西。无论如何,谢谢!
    • 您的解决方案有任何更新吗?我也很期待解决方案。谢谢!
    • @DigitalRobot:轻微的困难不是因为“他们想让它变得优雅”。这是因为俯仰、滚动和偏航部分重叠。例如,假设您要将电话从平放在桌子上的位置提升到垂直的横向位置。您可以通过 90 度偏航和 90 度滚动来实现这一点。或者,您可以通过 90 度俯仰和 90 度偏航来实现相同的效果。为了避免这种歧义,Apple 似乎限制了音高范围。
    【解决方案2】:

    我最近在一个 iOS 应用程序中遇到了同样的问题,该应用程序计算手机的翻转次数。 Apple 拒绝了它,所以我将它发布在 GitHub 上,可能对你有用:

    翻转你的手机! - https://github.com/apascual/flip-your-phone

    我从没想过使用重力 Z 变量的解决方案,我会尽快尝试并回来更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多