2009-09-12 89 views

回答

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 
+0

尝试核心位置? – Leo 2009-09-14 08:52:58

+0

它的设计目的和用途是两件不同的事情。 – Leo 2009-09-23 01:53:23

4

对于它的价值,从苹果的一些加速度计样本:

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

而且如果你瞄准了像从德军总部3D倾斜控制,你可以去阅读the source code为.... :-)