Esta Clase proporciona una notacion matematica para representar las orientaciones y las rotaciones de objetos en tres dimensiones mediante Cuateniones. Comparados con las matrices de rotacion, son mas eficientes y mas estables numericamente. Más...
#include <Maths.h>
Métodos públicos | |
Quaternion (float w_, float x_, float y_, float z_) | |
Quaternion (float headDegrees, float pitchDegrees, float rollDegrees) | |
Quaternion (const Vector3 &axis, float degrees) | |
Quaternion (const Matrix3 &m) | |
Quaternion (const Matrix4 &m) | |
bool | operator== (const Quaternion &rhs) const |
bool | operator!= (const Quaternion &rhs) const |
Quaternion & | operator+= (const Quaternion &rhs) |
Quaternion & | operator-= (const Quaternion &rhs) |
Quaternion & | operator*= (const Quaternion &rhs) |
Quaternion & | operator*= (float scalar) |
Quaternion & | operator/= (float scalar) |
Quaternion | operator+ (const Quaternion &rhs) const |
Quaternion | operator- (const Quaternion &rhs) const |
Quaternion | operator* (const Quaternion &rhs) const |
Quaternion | operator* (float scalar) const |
Quaternion | operator/ (float scalar) const |
Quaternion | conjugate () const |
void | fromAxisAngle (const Vector3 &axis, float degrees) |
void | fromHeadPitchRoll (float headDegrees, float pitchDegrees, float rollDegrees) |
void | fromMatrix (const Matrix3 &m) |
void | fromMatrix (const Matrix4 &m) |
void | identity () |
Quaternion | inverse () const |
float | magnitude () const |
void | normalize () |
void | set (float w_, float x_, float y_, float z_) |
void | toAxisAngle (Vector3 &axis, float °rees) const |
void | toHeadPitchRoll (float &headDegrees, float &pitchDegrees, float &rollDegrees) const |
Matrix3 | toMatrix3 () const |
Matrix4 | toMatrix4 () const |
Métodos públicos estáticos | |
static Quaternion | slerp (const Quaternion &a, const Quaternion &b, float t) |
Atributos públicos | |
float | w |
float | x |
float | y |
float | z |
Atributos públicos estáticos | |
static const Quaternion | IDENTITY |
Amigas | |
Quaternion | operator* (float lhs, const Quaternion &rhs) |
Esta Clase proporciona una notacion matematica para representar las orientaciones y las rotaciones de objetos en tres dimensiones mediante Cuateniones. Comparados con las matrices de rotacion, son mas eficientes y mas estables numericamente.
Esta clase Quaternion concatena cuaterniones de izquierda a derecha. La razon para esto es mantener el mismo significado en la multiplicacion que con las clases Matrix3 y Matrix4.
void Quaternion::fromMatrix | ( | const Matrix3 & | m | ) |
Crea un quaternion desde una matriz de rotacion. El algoritmo usado es de Allan and Mark Watt's "Advanced Animation and Rendering Techniques" (ACM Press 1992).
void Quaternion::fromMatrix | ( | const Matrix4 & | m | ) |
Crea un quaternion desde una matriz de rotacion. El algoritmo usado es de Allan and Mark Watt's "Advanced Animation and Rendering Techniques" (ACM Press 1992).
Quaternion Quaternion::slerp | ( | const Quaternion & | a, | |
const Quaternion & | b, | |||
float | t | |||
) | [static] |
Suavemente interpola del quaternion 'a' al quaternion 'b' usando interpolacion lineal esferica.
Ambos quaterniones deben estar normalizados y representar rotaciones absolutas. En particular quaternion 'b' no debe ser relativo al quaternion 'a'. Si 'b' es relativo a 'a' hacer a 'b' rotacion absoluta mediante: b = a * b.
El parametro de interpolacion 't' se encuentra en el rango [0,1]. Cuando t = 0 el resultado es 'a'. Cuando t = 1 el resultado es 'b'.
El algoritmo usado es adaptado de Allan and Mark Watt's "Advanced Animation and Rendering Techniques" (ACM Press 1992).
Matrix3 Quaternion::toMatrix3 | ( | ) | const |
Convierte este quaternion a una matriz de rotacion.
| 1 - 2(y^2 + z^2) 2(xy + wz) 2(xz - wy) | | 2(xy - wz) 1 - 2(x^2 + z^2) 2(yz + wx) | | 2(xz + wy) 2(yz - wx) 1 - 2(x^2 + y^2) |
Matrix4 Quaternion::toMatrix4 | ( | ) | const |
Convierte este quaternion a una matriz de rotacion.
| 1 - 2(y^2 + z^2) 2(xy + wz) 2(xz - wy) 0 | | 2(xy - wz) 1 - 2(x^2 + z^2) 2(yz + wx) 0 | | 2(xz + wy) 2(yz - wx) 1 - 2(x^2 + y^2) 0 | | 0 0 0 1 |