4

我有一个 3 轴加速度计(任何手机),但我找不到任何好的公式来解释来自它的数据。无论我做什么动作都是生涩的/不敏感的。我读到我还需要欧拉角或旋转矩阵?

我将不胜感激任何好的阅读材料......

4

2 回答 2

4

对于它的价值,来自 Apple 的一些加速度计样本:

  • AccelerometerGraph示例应用程序绘制了设备的运动图。它演示了如何使用 UIAccelerometer 类以及如何使用 Quartz2D 和 Core Animation 来提供高性能图形视图。它还演示了一个可用于隔离重力影响的低通滤波器,以及一个可用于消除重力影响的高通滤波器。
  • GLGravity示例应用程序演示了如何将 UIAccelerometer 类与 OpenGL 渲染结合使用。它展示了如何使用基本的低通滤波器从加速度计值中提取重力矢量,以及如何从中构建 OpenGL 变换矩阵。

如果你的目标是像 Wolfenstein 3D 的倾斜控制,你可以去阅读源代码...... :-)

于 2009-09-20T14:41:27.447 回答
3

您是否正在尝试为 iPhone 构建 3D 鼠标程序?(已经有一些。)你能准确描述你想要什么用户动作对应什么动作吗?

最简单的方法是通过将加速度矢量与 (0, 0, 1000) 的点积取反余弦来获得设备的间距。

如果您尝试实现一种设备,其中在空间中来回滑动 iPhone 会在屏幕上来回移动指针,这将是困难的,因为与重力加速度相比,它需要相对剧烈的手部动作来产生更大的加速度. iPhone 中的 MEMS 加速度计在测量重力方向方面非常出色,但在测量设备本身的实际加速度方面却很差。

如果您稍微描述一下您的应用程序,我或许可以为您提供更具体的指示。

表示空间旋转的方式有很多种,但四元数在游戏编程社区中非常流行。谷歌搜索会为您提供一些引物的链接。GamaSutra 是一个很好的起点。

http://www.gamasutra.com/features/19980703/quaternions_01.htm
http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation
http://www.flipcode.com/documents/matrfaq.html
于 2009-09-13T06:23:59.053 回答