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

4
我有一个三轴加速度计(任何移动电话都有),但我找不到任何好的公式来解释它所产生的数据。无论我做什么,运动都很突兀/迟钝。我读到需要欧拉角或旋转矩阵?如果有好的资料供参考,我会非常感激...
2个回答

4

以下是苹果提供的一些加速度计示例:

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

如果您想要实现像《Wolfenstein 3D》中的倾斜控制一样的功能,您可以阅读源代码.... :-)


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

它的设计目的和使用目的是两回事。 - Leo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接