如何使用3轴加速度计计算鼠标移动

时间:2009-09-12 23:58:39

标签: accelerometer

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

我会很感激阅读的任何好材料......

2 个答案:

答案 0 :(得分:4)

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

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

如果你的目标是像Wolfenstein 3D这样的倾斜控制,那么你可以阅读the source code ....: - )

答案 1 :(得分:3)

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

最简单的方法是通过将加速度矢量的点积的反余弦值设为(0,0,1000)来获得设备的音高。

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

如果您稍微描述一下您的应用程序,我可能会给您更具体的指示。

有许多不同的方式来表示空间旋转,但四元数在游戏编程社区中非常流行。 Google搜索为您提供了一些引导链接。 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