2011-07-11 13 views
6

iPhoneを動かすことで、iPhone画面(四角形、円など)上のオブジェクトを移動したいと考えています。 たとえば、iPhoneをX軸に沿って移動させ、オブジェクトをX軸に沿って移動させます。 Y、Z軸も同じです。アクセラレータによる距離移動

どうすればいいですか? アルゴリズムを取得できますか?

ありがとうございます。

P.S: 私はしばらくの間見ましたが、加速度計を使用することが可能なようです。

答えて

13

あなたはエラーが恐ろしいです倍直線加速度を統合することで位置を取得しますが。実際には役に立たない。

ここには23:20にan explanation why (Google Tech Talk)があります。私はこのビデオを強く勧めます。

ただし、ジャイロマウスがアプリケーションで動作する可能性があります(動画の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?

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

だからあなたはiPhone上で行うには実用的なものではないと言っていますか? – MeIr

+1

正しい。アリの反応の中のリンクは、これがおそらく役に立たないことを示している。 – duskwuff

1

?例えば; アクセラレーションが1.4G eastの場合、アクセラレーションが変更されるまでオブジェクトは1秒あたり東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

+0

あなたは運動を行います場合は、左の例のために、あなたはこのような出力を取得します:あなたが移動を停止しますときに負になる力を得ますので -1g 0グラム 0グラム 0グラム 1グラム を初期の力は動きを作り出しました。 何とかそれをフィルタリングする必要があり、それは簡単ではありません。 –