Bonjour,

J'essaye de calculer l'angle de rotation d'un joint en partant des translations XYZ des 2 points le compostant.

Pour trouver l'angle en degree, je fais un truc en trigo,

(a : main, b : epaule);

BC = (a.x-b.x);
AB = (a.y-b.y);
AC = sqrt((AB*AB)+(BC*BC));
BD = AC - AB;
YY = atan(AB/BC)+atan(BD/BC)
X = (YY*180/PI)*2;

et ensuite je convertit en quaternion regle le problem du gimbal lock, et reviens au degrees.

Mais je me suis basé pour cette derniere partie sur le cours de math pour jeux 3D qui parle de ca tres bien.

Or le resultat obtenu pour l'angle Z en cas de gimbal lock (cos(Y) > 0.005 | 90°) ne correspond pas a celui d'un calculateur en ligne.

Les coordonnée de rotation recupérées sont ensuite appliquées sur un cube, qui ne tourne pas comme il faut, j'en conclut donc que c'est mon code qui ne va pas .

quelqu'un peut il m'eclairer ou me corriger ? merci

voila les lignes du calcul qui ne marche pas


RX = ((sin_X*sin_Y)*sin_Z)+(cos_X*cos_Z);
RY = -(sin_X*sin_Y)*cos_Z+cos_X*sin_Z;

Z = Math.atan2(RY,RX);
Z *= RADIANS;