Cela dépend de l'axe sur lequel vous effectuez la rotation.
rotation autour de l'axe z est représentée comme suit:
a = angle in radians
x' = x*cos.a - y*sin.a
y' = x*sin.a + y*cos.a
z' = z
(cos.a sin.a 0 0)
(-sin.a cos.a 0 0)
(0 0 1 0)
(0 0 0 1)
si l'angle doit être a = atan2 (transform.m12, transform.m11);
rotation autour de l'axe x:
a = angle in radians
y' = y*cos.a - z*sin.a
z' = y*sin.a + z*cos.a
x' = x
(1 0 0 0)
(0 cos.a sin.a 0)
(0 -sin.a cos.a 0)
(0 0 0 1)
rotation autour de l'axe y:
a = angle in radians
z' = z*cos.a - x*sin.a
x' = z*sin.a + x*cos.a
y' = y
(cos.a 0 -sin.a 0)
(0 1 0 0)
(sin.a 0 cos.a 0)
(0 0 0 1)
Assurez-vous d'utiliser atan2 et not atan car ce dernier ne donnera pas d'angle dans le quadrant correct. –
Merci Nader, avant votre réponse, j'avais recouru à l'utilisation de la propriété affineTransform de CALayer pour convertir le Transform3D en un AffineTransform et en extraire l'angle de ce calcul: http: //stackoverflow.com/questions/2051811/iphone- sdk-cgaffinetransform-obtenir-l'-angle-de-rotation-d'un objet Maintenant, je sais, comment calculer directement à partir de Transform3D. Merci! – ravinsp
Ouais j'ai appris à ce sujet en première année et je me souviens avoir demandé à mon ami "pourquoi il le fera nous avons besoin de le savoir" –