我想通过移动iPhone在iPhone屏幕上移动对象(矩形,圆形等)。 例如,我沿着X轴移动iPhone,对象沿着X轴移动。 Y轴,Z轴相同。
我该怎么做? 我可以为它获得算法吗?
谢谢。
P.S: 我看了一会儿,似乎可以使用加速度计。
答案 0 :(得分:13)
通过将线性加速度积分两次得到位置,但错误很可怕。它在实践中毫无用处。
这是an explanation why (Google Tech Talk) 23:20。我强烈推荐这个视频。
然而陀螺鼠标可能适合您的应用,请参阅视频中的37:00-38:25。
类似的问题:
track small movements of iphone with no GPS
What is the real world accuracy of phone accelerometers when used for positioning?
how to calculate phone's movement in the vertical direction from rest?
iOS: Movement Precision in 3D Space
How to use Accelerometer to measure distance for Android Application Development
How can I find distance traveled with a gyroscope and accelerometer?
答案 1 :(得分:3)
不容易做到准确。加速度计仅报告加速度,而非运动。您可以尝试(数字地)对加速度进行积分,但最终可能会导致累积误差累加并导致意外运动。
伪代码,显然未经测试:
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)
答案 2 :(得分:2)
为什么不使用加速度本身而不是距离移动?例如; 如果你的加速度是1.4G以东,你的物体应该每秒向东移动14像素,直到你的加速度变化。
所以对象的运动就像是在相对的力量下,我觉得它更现实。更快的移动装置,更大的力量来影响物体。
另见:
http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf
和
Using accelerometer, gyroscope and compass to calculate device's movement in 3D world