【问题标题】:iphone - core motion (relative rotation)iphone - 核心运动(相对旋转)
【发布时间】:2011-06-30 12:59:12
【问题描述】:

有没有办法从核心运动中获得相对旋转?

我需要的是:它在一个轴上旋转了多少以及哪个方向(+ 符号 = 逆时针,- = 顺时针,根据右手法则)。

我找到了rotationRate 属性,但我现在确定如何从中提取角度,因为这是每秒给我的弧度。

在过去的几天里,我做了各种各样的事情,但没有什么能给我稳定的价值观。我尝试使用 NSTimer 对核心运动数据进行定时采样并计算两个样本之间的差异,所以我会知道它自上次采样以来旋转了多少,但有时它会给我疯狂的数字,比如 13600 度即使 iPhone 放在桌子上。

对如何实现这一点有任何想法吗?

谢谢

【问题讨论】:

    标签: iphone core-motion


    【解决方案1】:

    确实有。您可以通过深入了解CMMotionManager 的属性、通过CMDeviceMotion 以及最后到CMAttitude 来获得所需的内容。设备的姿态定义为:

    身体相对于的方向 给定的参考框架。

    在 DeviceMotion 的 CMAttitude 的情况下,该参考框架由框架在启动设备运动更新时建立。从那个时间点开始,设备的姿态是相对于该参考帧(而不是相对于前一帧)报告的。

    CMAttitude 类提供了一些方便的内置功能,可以将 CMAttitude 转换为实际有用的形式,例如欧拉角、旋转矩阵或四元数。您听起来像是在寻找欧拉角表示(俯仰、偏航、滚动)。

    【讨论】:

      【解决方案2】:

      上面提供的答案并不十分准确,但可能足以回答这个问题。 Core Motion 始终尝试确定设备的绝对姿态,这意味着轴的定义可能会因设备的方向而异。例如,如果设备正面朝上,则俯仰向上/向下是围绕 y 轴的旋转,但如果设备处于横向,则俯仰是围绕 z 轴的旋转(垂直于平面屏幕)。如果您的应用程序仅用于一个方向,或者您想要一个像所要求的问题一样的增量,这会有所帮助,但如果您想知道绝对方向,则会变得过于复杂。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-18
        • 2011-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多