|
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 |