Blog de programación e ideas locas

Tag: cuaternión

Obtener los angulos de rotacion de un quaternion (cuaternión)

by on Sep.12, 2010, under General

Hubo un tiempo (no largo), el cual no sabia como extraer el ángulo de rotación de un cuaternión.
Para empezar no sabia que era un cuaternión aunque los había escuchado, averiguando por internet encontré la definición de ellos (pero como yo no soy matemático no pienso arriesgarme ni a copiar la definición), pero no sabia como extraer el ángulo de rotación ya que lo necesitaba para rotar un objeto en irrlicht. Mi búsqueda termino cuando me tope con esta función q={cos(Ɵ/2),sen(Ɵ/2)r}, donde Ɵ es el ángulo de rotación y r el vector del eje donde se rota un objeto, tal como se muestra en la siguiente imagen

Bueno con esa formula me quedaba más claro, aunque todavía no sabia sacar el ángulo. Para eso me di un caso particular, que la rotación se realiza en un solo eje, entonces tendría valores de r = (1,0,0) , (0,1,0) y (0,0,1). Entonces aplique la función inversa y saque en ángulo.

Por cierto lo hice en C

#include <math.h>
//....
float q[4]; //un arreglo para almacenar el quaternion
getBodyRotation(body,q); //función que almacena la rotación en un cuaternión
//asumo que r = (0,1,0)
float angulo = atan2(q[0],q[2]) * 2; //El ángulo obtenido

Bueno solo lo pude hacer para el caso particular donde r es un eje coordenado.
Saludos

Leave a Comment :, , more...