首页 文章

操纵陀螺仪/加速度计从iPhone 4获得的值

提问于
浏览
0

我正在为我的大学开发一个项目,用于操纵从iPhone 4获得的陀螺仪/加速度计值 . 但是我遇到了一个数学问题,我希望你们可以帮助我 .

我会举一个例子来说明:

  • 您的iPhone正面朝上,并在Y轴上向上移动 .

  • 你的iPhone面朝右,这次你在X轴上向上移动(因为你将iphone旋转了90度) .

在第二次,计算机解释我已经将iphone移动到右边,但这是错误的 . 我把它向上移动了,但是因为iphone面朝右,我的轴被旋转了 .

我需要什么?我需要一种方法来VIRTUALY将iphone面朝上放回(3轴正确的位置)并给每个轴正确的移动值 .

如果iphone旋转90度,那么我可以轻松切换X-Z轴及其正确 . 但我想让它适用于任何旋转角度 .

如果有人能用某种伪算法或数学描述来做什么,我真的很感激 .

注意:我只需要一种方法来补偿iPhone旋转时所有三个轴的编码 .

更新:

我实际上并不需要精确的值,因为我正在从陀螺仪获得的所有记录之间进行图形协作 . 我会说得更清楚 .

  • 只需将iphone移动到空中即可绘制一封信,我的应用程序将识别您刚刚绘制的字母 . 我用于识别的方法是基于TFT算法,并使用源自我之前绘制的字母的样本值记录到数据库 .

我的观点是:我得到的 Value 或者他们所代表的 Value 并不重要 . 我需要的是即使iPhone处于不同的位置,所有图表都是相同的 . 很难解释,但是如果你在iphone打开的情况下绘制字母“P”,如果你在iPhone右转的情况下画出'P',那么图表的起源会有所不同 .

所以我需要将轴补偿到它们的原始方向,这样我总会得到类似的图形 .

2 回答

  • 1

    这篇文章是在iOS5发布之前发布的 . 对于来到这里的任何人,仅供参考,DeviceMotion relative to world - multiplyByInverseOfAttitude展示了如何将iOS5及以上版本的设备相对加速度值转换为地球相对值 .

  • 0

    所以,你想要的是从iPhone转换's coordinate system (or object/tangent system) to world coordinate system (or vice versa, as you see it, doesn' t) . 你知道iPhone坐标系,因为你有陀螺仪数据 . 所以你想要的是创建对象 - >世界变换矩阵,并通过它创建每个速度矢量(来自加速度计) .
    看看here以获得切线空间的良好解释以及如何创建切线空间 - >世界变换矩阵 . 如果您不熟悉3D /线性数学,可能会有点棘手,但值得一试 .

相关问题