Pro*_*ber 5 iphone accelerometer ios gyroscope core-motion
我记得WWDC上有一个谈话,显示OpenGL ES中的茶壶,随着设备的移动而旋转.看来茶壶在太空中静止不动.
当应用程序启动时,茶壶开始处于特定位置.然后当设备旋转时,茶壶也旋转到空间静止不动.
在这次演讲中,他们提到我们必须获得"参考框架",例如在应用程序启动时,它告诉我们用户最初如何持有设备.
例如,这里是加速度计轴:

我想知道围绕Y轴的旋转,但是相对于用户如何握住设备.因此,当用户将其保持直立并围绕Y旋转时,我需要知道旋转值.
我认为关键是从读数中消除重力?另外我的目标是带有陀螺仪的iPhone 4/4S,但我认为CoreMotion会自动对它们进行传感器融合.
我怎么能弄清楚用户围绕Y轴旋转设备的程度?
从您的其他问题来看,为什么 CoreMotion 从未调用过这个 CMDeviceMotionHandler?我知道您正在使用 iOS 4 - iOS5 中的情况略有变化。一般来说,陀螺仪数据或在 DeviceMotion 中完成的加速度计和陀螺仪数据的更好传感器融合是获得正确结果的最佳方法。
因此,如果您启动并运行了该程序,则需要使用CMAttitude 的 multipByInverseOfAttitude方法来获取相对于参考系的所有 CMDeviceMotion 结果。只需将第一个 CMAttitude 的引用存储在类成员中,并在所有后续调用中使用它调用multiplyByInverseOfAttitude。那么 CMDeviceMotion.attitude 的所有成员都会引用这个参考系。
为了获得绕 Y 轴的旋转,第一种方法是采用欧拉角,即CMAttitude.roll。如果您只需要跟踪小动作,这可能没问题。如果运动范围更大,您将遇到万向节锁定的麻烦。然后你需要像四元数运算这样的先进技术来获得稳定的结果,但这听起来像是一个自己的问题。
| 归档时间: |
|
| 查看次数: |
2735 次 |
| 最近记录: |