iOS8设备姿态的初始参考系如何理解?

How to understand initial reference frame of iOS 8 device attitude?

在有关 iOS 的事件处理指南的苹果开发者文档中,我们可以找到一条语句“Core Motion establishes the reference frame when your app starts device-motion updates”。

  1. 这是否意味着当我启动我的应用程序时,第一个旋转数据是我的参考系?
  2. 如果这是真的,当我以任何姿态启动我的应用程序时,第一组四元数应该是 [1 0 0 0],对吗?

关于四元数的实验:

  1. 我用 iphone 平放在 table
    上启动我的应用程序 四元数:[0.999 0.003 0.010 -0.004]
    加速度计:[0.01 0.00 -1.00]
  2. 我以 X 轴的倾斜角度启动我的应用程序
    四元数:[0.97 0.22 0.000 0.000]
    加速度计:[0.00 -0.44 -0.89]

实验结果与文档中的说法不符。我真的很困惑。

当您对偏离初始位置感兴趣时,您可以使用参考系CMAttitudeReferenceFrameXArbitraryZVertical。在 CMAttitudeReferenceFrameXArbitraryZVertical 的参考系中,报告的第一个姿态建立了初始参考系。这意味着它的值本质上是任意的。你应该忽略它的值,但同时由你来保存这个初始态度,随后总是调用 multiplyByInverseOfAttitude: 任何新的态度,将保存的态度作为参数传递。这为您提供了与初始位置相关的信息。