![]() |
Divide Framework 0.1
A free and open-source 3D Framework under heavy development
|
#include <Quaternion.h>
Public Member Functions | |
Quaternion () noexcept | |
Quaternion (T x, T y, T z, T w) noexcept | |
Quaternion (const vec4< T > &values) noexcept | |
template<typename U = T> requires std::is_same_v<U, F32> | |
Quaternion (__m128 reg) noexcept | |
Quaternion (const mat3< T > &rotationMatrix) noexcept | |
Quaternion (const vec3< T > &axis, Angle::DEGREES< T > angle) noexcept | |
Quaternion (const vec3< T > &forward, const vec3< T > &up=WORLD_Y_AXIS) noexcept | |
Quaternion (Angle::DEGREES< T > pitch, Angle::DEGREES< T > yaw, Angle::DEGREES< T > roll) noexcept | |
Quaternion (const Quaternion &q) noexcept | |
Quaternion & | operator= (const Quaternion &q) noexcept |
T | dot (const Quaternion &rq) const noexcept |
T | magnitude () const |
T | magnituteSQ () const |
bool | compare (const Quaternion &rq, Angle::DEGREES< T > tolerance=1e-3f) const |
void | set (const vec4< T > &values) noexcept |
void | set (T x, T y, T z, T w) noexcept |
void | set (const Quaternion &q) noexcept |
void | normalize () noexcept |
normalizing a quaternion works similar to a vector. This method will not | |
Quaternion | inverse () const |
Quaternion | getConjugate () const |
We need to get the inverse of a quaternion to properly apply a. | |
Quaternion | operator* (const Quaternion &rq) const noexcept |
Quaternion & | operator*= (const Quaternion &rq) noexcept |
Multiply so that rotations are applied in a left to right order. | |
Quaternion | operator/ (const Quaternion &rq) const |
Dividing q1 by q2. | |
Quaternion & | operator/= (const Quaternion &rq) |
vec3< T > | operator* (const vec3< T > &vec) const noexcept |
Multiplying a quaternion q with a vector v applies the q-rotation to v. | |
bool | operator== (const Quaternion &rq) const |
bool | operator!= (const Quaternion &rq) const |
Quaternion & | operator+= (const Quaternion &rq) |
Quaternion & | operator-= (const Quaternion &rq) |
Quaternion & | operator*= (T scalar) |
Quaternion & | operator/= (T scalar) |
Quaternion | operator+ (const Quaternion &rq) const |
Quaternion | operator- (const Quaternion &rq) const |
Quaternion | operator* (T scalar) const |
Quaternion | operator/ (T scalar) const |
void | slerp (const Quaternion &q, F32 t) noexcept |
void | slerp (const Quaternion &q0, const Quaternion &q1, F32 t) noexcept |
void | fromAxisAngle (const vec3< T > &v, Angle::DEGREES< T > angle) noexcept |
Convert from Axis Angle. | |
void | fromEuler (const vec3< Angle::DEGREES< T > > &v) noexcept |
void | fromEuler (Angle::DEGREES< T > pitch, Angle::DEGREES< T > yaw, Angle::DEGREES< T > roll) noexcept |
Convert from Euler Angles. | |
void | lookRotation (vec3< T > forward, vec3< T > up) |
void | fromMatrix (const mat3< T > &rotationMatrix) noexcept |
void | fromMatrix (const mat4< T > &viewMatrix) noexcept |
void | getMatrix (mat3< T > &outMatrix) const noexcept |
Convert to Matrix. | |
void | getAxisAngle (vec3< T > &axis, Angle::DEGREES< T > &angle) const |
Convert to Axis/Angles. | |
vec3< Angle::RADIANS< T > > | getEuler () const noexcept |
void | fromAxes (const vec3< T > *axis) |
X/Y/Z Axis get/set a la Ogre: OgreQuaternion.cpp. | |
void | fromAxes (const vec3< T > &xAxis, const vec3< T > &yAxis, const vec3< T > &zAxis) |
void | toAxes (vec3< T > *axis) const |
void | toAxes (vec3< T > &xAxis, vec3< T > &yAxis, vec3< T > &zAxis) const |
vec3< T > | xAxis () const noexcept |
vec3< T > | yAxis () const noexcept |
vec3< T > | zAxis () const noexcept |
T | X () const noexcept |
T | Y () const noexcept |
T | Z () const noexcept |
T | W () const noexcept |
vec3< T > | XYZ () const noexcept |
template<typename U > | |
void | X (U x) noexcept |
template<typename U > | |
void | Y (U y) noexcept |
template<typename U > | |
void | Z (U z) noexcept |
template<typename U > | |
void | W (U w) noexcept |
void | identity () noexcept |
const vec4< T > & | asVec4 () const noexcept |
Quaternion< F32 > | operator* (const Quaternion< F32 > &rq) const noexcept |
Private Attributes | |
vec4< T > | _elements |
Definition at line 45 of file Quaternion.h.
|
noexcept |
Definition at line 72 of file Quaternion.inl.
|
noexcept |
Definition at line 78 of file Quaternion.inl.
|
explicitnoexcept |
Definition at line 84 of file Quaternion.inl.
|
inlineexplicitnoexcept |
Definition at line 54 of file Quaternion.h.
|
explicitnoexcept |
Definition at line 90 of file Quaternion.inl.
|
noexcept |
Definition at line 96 of file Quaternion.inl.
|
noexcept |
Definition at line 102 of file Quaternion.inl.
|
noexcept |
Definition at line 108 of file Quaternion.inl.
|
noexcept |
Definition at line 114 of file Quaternion.inl.
|
noexcept |
Definition at line 662 of file Quaternion.inl.
bool Divide::Quaternion< T >::compare | ( | const Quaternion< T > & | rq, |
Angle::DEGREES< T > | tolerance = 1e-3f |
||
) | const |
Definition at line 141 of file Quaternion.inl.
|
noexcept |
Definition at line 126 of file Quaternion.inl.
void Divide::Quaternion< T >::fromAxes | ( | const vec3< T > & | xAxis, |
const vec3< T > & | yAxis, | ||
const vec3< T > & | zAxis | ||
) |
Definition at line 522 of file Quaternion.inl.
void Divide::Quaternion< T >::fromAxes | ( | const vec3< T > * | axis | ) |
X/Y/Z Axis get/set a la Ogre: OgreQuaternion.cpp.
Definition at line 511 of file Quaternion.inl.
|
noexcept |
Convert from Axis Angle.
Definition at line 310 of file Quaternion.inl.
|
noexcept |
Convert from Euler Angles.
Definition at line 321 of file Quaternion.inl.
|
noexcept |
Definition at line 316 of file Quaternion.inl.
|
noexcept |
Definition at line 402 of file Quaternion.inl.
|
noexcept |
Definition at line 395 of file Quaternion.inl.
void Divide::Quaternion< T >::getAxisAngle | ( | vec3< T > & | axis, |
Angle::DEGREES< T > & | angle | ||
) | const |
Convert to Axis/Angles.
Definition at line 472 of file Quaternion.inl.
Quaternion< T > Divide::Quaternion< T >::getConjugate |
We need to get the inverse of a quaternion to properly apply a.
The conjugate of a quaternion is the same as the inverse, as long as the
Definition at line 174 of file Quaternion.inl.
|
noexcept |
Definition at line 478 of file Quaternion.inl.
|
noexcept |
Convert to Matrix.
Definition at line 442 of file Quaternion.inl.
|
noexcept |
Definition at line 657 of file Quaternion.inl.
Quaternion< T > Divide::Quaternion< T >::inverse |
Definition at line 169 of file Quaternion.inl.
void Divide::Quaternion< T >::lookRotation | ( | vec3< T > | forward, |
vec3< T > | up | ||
) |
Definition at line 341 of file Quaternion.inl.
T Divide::Quaternion< T >::magnitude |
Definition at line 131 of file Quaternion.inl.
T Divide::Quaternion< T >::magnituteSQ |
Definition at line 136 of file Quaternion.inl.
|
noexcept |
normalizing a quaternion works similar to a vector. This method will not
if the quaternion is close enough to being unit-length.
Definition at line 164 of file Quaternion.inl.
bool Divide::Quaternion< T >::operator!= | ( | const Quaternion< T > & | rq | ) | const |
Definition at line 224 of file Quaternion.inl.
|
noexcept |
Multiplying q1 with q2 applies the rotation q2 to q1 the constructor takes its arguments as (x, y, z, w)
Definition at line 179 of file Quaternion.inl.
|
inlinenoexcept |
Definition at line 187 of file Quaternion.inl.
|
noexcept |
Multiplying a quaternion q with a vector v applies the q-rotation to v.
Definition at line 209 of file Quaternion.inl.
Quaternion< T > Divide::Quaternion< T >::operator* | ( | T | scalar | ) | const |
Definition at line 267 of file Quaternion.inl.
|
noexcept |
Multiply so that rotations are applied in a left to right order.
Definition at line 192 of file Quaternion.inl.
Quaternion< T > & Divide::Quaternion< T >::operator*= | ( | T | scalar | ) |
Definition at line 241 of file Quaternion.inl.
Quaternion< T > Divide::Quaternion< T >::operator+ | ( | const Quaternion< T > & | rq | ) | const |
Definition at line 253 of file Quaternion.inl.
Quaternion< T > & Divide::Quaternion< T >::operator+= | ( | const Quaternion< T > & | rq | ) |
Definition at line 229 of file Quaternion.inl.
Quaternion< T > Divide::Quaternion< T >::operator- | ( | const Quaternion< T > & | rq | ) | const |
Definition at line 260 of file Quaternion.inl.
Quaternion< T > & Divide::Quaternion< T >::operator-= | ( | const Quaternion< T > & | rq | ) |
Definition at line 235 of file Quaternion.inl.
Quaternion< T > Divide::Quaternion< T >::operator/ | ( | const Quaternion< T > & | rq | ) | const |
Dividing q1 by q2.
Definition at line 198 of file Quaternion.inl.
Quaternion< T > Divide::Quaternion< T >::operator/ | ( | T | scalar | ) | const |
Definition at line 274 of file Quaternion.inl.
Quaternion< T > & Divide::Quaternion< T >::operator/= | ( | const Quaternion< T > & | rq | ) |
Definition at line 203 of file Quaternion.inl.
Quaternion< T > & Divide::Quaternion< T >::operator/= | ( | T | scalar | ) |
Definition at line 247 of file Quaternion.inl.
|
noexcept |
Definition at line 120 of file Quaternion.inl.
bool Divide::Quaternion< T >::operator== | ( | const Quaternion< T > & | rq | ) | const |
Definition at line 219 of file Quaternion.inl.
|
noexcept |
Definition at line 159 of file Quaternion.inl.
|
noexcept |
Definition at line 149 of file Quaternion.inl.
|
noexcept |
Definition at line 154 of file Quaternion.inl.
|
noexcept |
Definition at line 281 of file Quaternion.inl.
|
noexcept |
Definition at line 286 of file Quaternion.inl.
void Divide::Quaternion< T >::toAxes | ( | vec3< T > & | xAxis, |
vec3< T > & | yAxis, | ||
vec3< T > & | zAxis | ||
) | const |
Definition at line 539 of file Quaternion.inl.
void Divide::Quaternion< T >::toAxes | ( | vec3< T > * | axis | ) | const |
Definition at line 534 of file Quaternion.inl.
|
noexcept |
Definition at line 623 of file Quaternion.inl.
Definition at line 652 of file Quaternion.inl.
|
noexcept |
Definition at line 608 of file Quaternion.inl.
Definition at line 634 of file Quaternion.inl.
|
noexcept |
Definition at line 548 of file Quaternion.inl.
|
noexcept |
Definition at line 628 of file Quaternion.inl.
|
noexcept |
Definition at line 613 of file Quaternion.inl.
Definition at line 640 of file Quaternion.inl.
|
noexcept |
Definition at line 568 of file Quaternion.inl.
|
noexcept |
Definition at line 618 of file Quaternion.inl.
Definition at line 646 of file Quaternion.inl.
|
noexcept |
Definition at line 588 of file Quaternion.inl.
|
private |
Definition at line 177 of file Quaternion.h.