我希望能够通过移动iPhone来移动屏幕上的对象(如矩形、圆等)。例如,我沿着X轴移动iPhone,对象也沿着X轴移动。Y、Z轴同理。
我该如何实现呢?是否有算法可供参考?
谢谢。
附注: 我查了一下,好像可以使用加速度计实现。
我该如何实现呢?是否有算法可供参考?
谢谢。
附注: 我查了一下,好像可以使用加速度计实现。
您可以通过两次线性加速度积分来获取位置,但是误差非常大,在实践中无用。
这里是一个解释(Google Tech Talk),在23:20处。我强烈推荐这个视频。
然而,陀螺仪鼠标可能适用于您的应用程序,请参见视频中的37:00-38:25。
类似的问题:
如何跟踪没有GPS的iPhone的微小移动
当用于定位时,手机加速计的真实世界精度是多少?
如何从静止状态计算电话在垂直方向上的运动?
iOS:3D空间中的运动精度
如何使用加速度计为Android应用程序开发测量距离?
如何使用陀螺仪和加速度计找到行驶距离?
要准确地完成这项工作并不容易。加速度计只报告加速度,而不是运动。您可以尝试(数值上)随时间积分加速度,但很可能会累积误差,导致意外运动。
伪代码,显然未经测试:
init:
loc = {0, 0, 0} ; location of object on screen
vel = {0, 0, 0} ; velocity of object on screen
t = 0 ; last time measured
step:
t0 = time ; get amount of time since last measurement
dt = t0 - t
accel = readAccelerometer()
vel += accel * dt ; update velocity
loc += vel * dt ; update position
displayObjectAt(loc)
http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf
和