Distance parcourue par L'accéléromètre

je veux déplacer des objets sur l'écran de l'iPhone (rectangle, cercle et ainsi de suite) en déplaçant l'iPhone. Par exemple, je déplace iPhone le long de l'axe X et l'objet se déplace le long de l'axe X. La même chose pour y, z-axis.

Comment faire? Puis-je obtenir de l'algorithme?

Merci.

P. S: J'ai cherché pendant un certain temps et semble que c'est possible en utilisant l'accéléromètre.

7
demandé sur MeIr 2011-07-11 06:08:18

3 réponses

pas facile à faire avec précision. Un accéléromètre indique seulement accélération , pas de mouvement. Vous pouvez essayer (numériquement) d'intégrer l'accélération au fil du temps, mais vous êtes susceptible de finir avec des erreurs cumulatives s'additionnant et conduisant à un mouvement involontaire.

Pseudocode, évidemment non testé:

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)
3
répondu duskwuff 2011-07-11 03:46:56

pourquoi ne pas utiliser l'accélération elle-même à la place de la distance déplacée? Exemple; Si votre accélération est de 1,4 G est, votre objet devrait se déplacer à l'est de 14pixels par seconde jusqu'à ce que votre accélération change.

pour que le mouvement de l'objet soit comme sous une force relative et je pense que c'est plus réaliste. Appareil mobile plus rapide, plus grande force pour effectuer l'objet.

aussi regarder:

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

et

utilisant accéléromètre, gyroscope et boussole pour calculer le mouvement de l'appareil dans le monde 3D

2
répondu kubudi 2017-05-23 12:02:27