Tapioca Engine 1.0
Motor de videojuegos creado por Bubble Studios
|
Usamos el sistema diestro (https://danceswithcode.net/engineeringnotes/quaternions/quaternions.html). Cualquier rotacion en un espacio tridimensional se puede definir con un vector unitario y una cantidad de giro sobre ese vector. Más...
#include <Quaternion.h>
Métodos públicos | |
Quaternion (const float q0, const float q1, const float q2, const float q3) | |
Constructor de la clase Quaternion. Se contruye un a partir de 4 floats que describen el angulo y vector que definen el quaternion. | |
Quaternion (const float alfa, const Vector3 &vec) | |
Constructor de la clase Quaternion. Se construye a partir de la descripcion la rotacion de alfa grados en el eje vec. | |
Quaternion (const Vector3 &euler) | |
Constructor de la clase Quaternion. Se construye a partir de rotaciones en los 3 ejes globales (x y z) en grados sexagesimales. | |
Quaternion | inverse () |
Devuelve el quaternion inverso (el conjugado entre la magnitud) | |
Quaternion | conjugate () |
Devuelve el cuaternion conjugado. | |
float | magnitude () |
Devuelve la magnitud del quaternion. | |
Vector3 | toEuler () |
Devuelve un vector con la rotacion en angulos sexadecimales pitch, yaw, roll (x,y,z) en un sistema y up. | |
Quaternion | operator* (const Quaternion &rhs) |
Multiplica el cuaternion por rhs. Para rotar un punto se puede hacer q * p * q(conjugado) | |
Quaternion | operator* (const float s) |
Multiplicacio por un escalar. | |
Quaternion | operator/ (const float s) |
Divide el cuaternion por un escalar Para rotar un punto se puede hacer q * p * q(conjugado). | |
Vector3 | rotatePoint (const Vector3 &point) |
Multiplicacion "vectorizada" con la "Formula Rodrigues" Para rotar un punto se puede hacer q * p * q(conjugado) | |
Quaternion | normalized () |
Devuelve el quaternion normalizado. | |
void | normalize () |
Normaliza el quaternion. | |
Atributos públicos | |
float | scalar |
Vector3 | vector |
float | angle |
Usamos el sistema diestro (https://danceswithcode.net/engineeringnotes/quaternions/quaternions.html). Cualquier rotacion en un espacio tridimensional se puede definir con un vector unitario y una cantidad de giro sobre ese vector.
q = x + yi + zj +wk, donde x y z w son numeros reales y ddone i j k son numeros complejos, vectores unitarios ortogonales entre si. i^2 = j^2 = k^2 = -1
Para pasar de eje + angulo a quaternion: 0 + (x,y,z), q = q0 + q1 + q2 + q3, q0 = cos(0/2), q1 = xsin(0/2), q2 = ysin(0/2), q3 = zsin(0/2)
Para rotar un punto se multiplica por el cuaternion y luego por su conjugado: pr = q*p*qc
Constructor de la clase Quaternion. Se contruye un a partir de 4 floats que describen el angulo y vector que definen el quaternion.
q0 | Cantidad de giro que se aplica sobre el vector |
q1 | Valor de la componente x del vector |
q2 | Valor de la componente y del vector |
q3 | Valor de la componente z del vector |
Constructor de la clase Quaternion. Se construye a partir de la descripcion la rotacion de alfa grados en el eje vec.
alfa | Rotacion del vector en grados sexagesimales |
vec | Vector que define el giro |
Constructor de la clase Quaternion. Se construye a partir de rotaciones en los 3 ejes globales (x y z) en grados sexagesimales.
euler | Rotacion en los 3 ejes globales |
Quaternion Tapioca::Quaternion::conjugate | ( | ) |
Devuelve el cuaternion conjugado.
Quaternion Tapioca::Quaternion::inverse | ( | ) |
Devuelve el quaternion inverso (el conjugado entre la magnitud)
float Tapioca::Quaternion::magnitude | ( | ) |
Devuelve la magnitud del quaternion.
void Tapioca::Quaternion::normalize | ( | ) |
Normaliza el quaternion.
Quaternion Tapioca::Quaternion::normalized | ( | ) |
Devuelve el quaternion normalizado.
Multiplicacio por un escalar.
s | Escalar por el que se multiplican todos los miembros del quaternion |
Multiplica el cuaternion por rhs. Para rotar un punto se puede hacer q * p * q(conjugado)
rhs | Elemento diestro de la multiplicacion (right hand side) |
Divide el cuaternion por un escalar Para rotar un punto se puede hacer q * p * q(conjugado).
s | Escalar por el que se dividen todos los miembros del quaternion |
Multiplicacion "vectorizada" con la "Formula Rodrigues" Para rotar un punto se puede hacer q * p * q(conjugado)
point | Punto por el que se multiplica |
Vector3 Tapioca::Quaternion::toEuler | ( | ) |
Devuelve un vector con la rotacion en angulos sexadecimales pitch, yaw, roll (x,y,z) en un sistema y up.
float Tapioca::Quaternion::angle |
float Tapioca::Quaternion::scalar |
Vector3 Tapioca::Quaternion::vector |