2010-12-06 14 views
5

Tengo un Model3DGroup que se gira alrededor de cualquiera de los ejes x, y, z utilizando un AxisAngleRotation3D aplicado en la propiedad Transformar del objeto.¿Cómo recuperar el ángulo de rotación 3D en cada eje?

El problema es que no tengo el control de las distintas rotaciones aplicadas en la malla. Necesito mostrar el ángulo de la malla en cada uno de los ejes x, y, z en cada ciclo de renderizado.

¿Cómo puedo hacer eso? Traté de recuperar el objeto AxisAngleRotation3D en el objeto, pero solo me da la rotación que se aplicó por última vez. Lo cual no es correcto

Si, por ejemplo, hubo una rotación aplicada de Eje: Vector3D (1, 1, 0) Ángulo: 45

La rotación real alrededor del eje Z no sería 0. ¿Cómo puedo obtener el real ángulo en cada eje?

Respuesta

2
double rotationX = Vector3D.AngleBetween(new Vector3D(1, 0, 0), yourMatrix3D.Transform(new Vector3D(1, 0, 0))); 
double rotationY = Vector3D.AngleBetween(new Vector3D(0, 1, 0), yourMatrix3D.Transform(new Vector3D(0, 1, 0))); 
double rotationZ = Vector3D.AngleBetween(new Vector3D(0, 0, 1), yourMatrix3D.Transform(new Vector3D(0, 0, 1))); 
Cuestiones relacionadas