Je suis actuellement confronté à un problème plus mathématique. Je développe une application qui s'intéresse à l'accélération dans les axes X et Y. En d'autres termes, je veux suivre l'accélération qui va à gauche ou à droite ou en arrière.Calcul de la matrice de rotation à l'aide de l'accéléromètre
Si l'appareil se trouve sur une table orientée vers le haut toutes les accélérations dans le sens nécessaire sont visibles dans les valeurs d'accélération de ces axes. Un problème survient lorsque le dispositif n'est pas placé dans une telle position et qu'il présente une certaine rotation autour de l'axe X ou Y (tangage, roulis).
je besoin d'une matrice de rotation (Rm) que je peux multiplier à une accélération des mesures (x) vecteur pour obtenir un nouveau vecteur calibré (x ') d'autres classes peuvent travailler avec: x' = Rm * x. Cela devrait être calculé à partir du vecteur de référence (0,0, -1) et du vecteur de gravité actuel du dispositif. Je sais que cela a quelque chose à voir avec les angles d'Euler mais je n'arrive pas à comprendre comment je peux les calculer et créer ma matrice de rotation avec ceux-ci. Je sais aussi qu'il y a une matrice de rotation dans la classe CMAttitude mais j'aimerais avoir plus d'informations sur la façon dont cette matrice est calculée.
Exemple:
Imaginez que vous voulez messure comment dur vous un freinage sur votre vélo. Si votre iPhone est monté sur le vélo avec l'affichage pointant vers le haut, vous pouvez lire l'accélération de la valeur y du vecteur d'accélération. Les autres classes de votre projet supposent que l'accélération au freinage peut toujours être vue dans cette valeur.
Le problème est lorsque l'iPhone est placé en mode portrait, l'affichage pointant vers vous. Alors le freinage n'augmenterait pas la valeur y mais la valeur z à la place. Vous devez donc faire pivoter votre valeur d'accélération de -90 degrés autour de l'axe des x.
J'ai besoin de cette matrice de rotation pour une rotation arbitraire de l'appareil. Je sais qu'il n'est pas possible de calculer la rotation autour de l'axe z à partir de vecteurs de gravité, mais comme les rotations x et y sont annulées, je vais bien.
Merci beaucoup pour votre aide
Je vous suggère de retag cette question pour l'ouvrir à un public plus large. Ce n'est pas vraiment un problème limité à l'iPhone mais parfaitement aussi bien expliqué par les codeurs Android par exemple. – Till