2009-09-03 5 views

Répondre

9

Vous pouvez lisser les données de l'accéléromètre en appliquant un filtre aux données entrantes avant de l'utiliser. La première chose que vous voulez faire est de mettre en place une constante pour votre filtre.

#define kFilteringFactor 0.1 

Dans la méthode didAccelerate, vous devrez ajouter le code de filtrage suivant

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration 
{ 
    sx = acceleration.x * kFilteringFactor + sx * (1.0 - kFilteringFactor); 
    sy = acceleration.y * kFilteringFactor + sy * (1.0 - kFilteringFactor); 
    sz = acceleration.z * kFilteringFactor + sz * (1.0 - kFilteringFactor); 
} 

Le code ci-dessus devrait lisser les données pour vous. Les valeurs sx, sy et sz sont de type UIAccelerationValue.

Il existe de nombreuses informations connexes dans la documentation d'Apple que vous pourriez trouver utiles à cet égard.

+0

Bonne réponse! La seule chose à ajouter est que les variables sx, sy et sz doivent être déclarées dans le fichier d'en-tête afin que la valeur puisse être utilisée dans le calcul suivant. A travaillé super pour moi. – Structurer