2011-07-11 14 views
6

iPhone'u hareket ettirerek iPhone ekranındaki nesneleri (dikdörtgen, daire vb.) Taşımak istiyorum. Örneğin, iPhone'u X ekseni boyunca hareket ettiriyorum ve nesne X ekseni boyunca hareket ediyor. Y, Z ekseni için aynı.Distance, Accelerometer tarafından taşındı

Bunu nasıl yapabilirim? Bunun için algoritma alabilir miyim?

Teşekkür ederiz.

P.S: Bir süre aradım ve ivmeölçer kullanmak mümkün gibi görünüyor.

cevap

13
3

Doğru şekilde yapılması kolay değil. Bir ivmeölçer, hareket etmeden sadece ivmesini rapor eder. İvmenin zamanla entegre edilmesini (sayısal olarak) deneyebilirsiniz, ancak muhtemelen ekleyerek ve istenmeyen harekete yol açan kümülatif hatalarla sonuçlanabilirsiniz.

Pseudocode açıkçası denenmemiş:

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

Yani onu iphone yapılacak pratik bir şey değil diyorsun? – MeIr

+1

Doğru. Ali'nin cevabındaki bağlantılar, bunun muhtemelen işe yaramayacağını gösteriyor.Böyle – duskwuff

1

Neden ivme kendisi kullanmayan yerine taşındı mesafe T? Örneğin; Hızlanma 1,4G doğu ise, ikincisiniz ivme değişene kadar saniyede 14 piksel doğu hareket etmelidir.

Bu nesnenin hareketi göreli bir kuvvetin altında olduğu gibi olacak ve bence bu daha gerçekçi. Daha hızlı hareket eden cihaz, nesneyi etkilemek için daha büyük kuvvet.

Ayrıca bak:

http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf

ve

Using accelerometer, gyroscope and compass to calculate device's movement in 3D world

+0

sola örneğin bir hareketi, yapacak zaman, alacak çıkışı: -1g 0g 0g 0g 1g , hareketi durduracak ne zaman negatif olacaktır kuvvet alacak çünkü hareketi yaratan ilk kuvvet. Bir şekilde filtrelemeniz gerekiyor ve kolay değil. –

İlgili konular