| 
    Euphoria
    
   | 
 
A quaternion representing a rotation in 3d. More...
Public Member Functions | |
| constexpr | Q (float aw, const v3 &v) | 
| void | normalize () | 
| Normalize the quaternion.   | |
| Q | then_get_rotated (const Q &q) const | 
| Return the passed rotation composed after the current rotation.   | |
| n3 | get_rotated (const n3 &v) const | 
| Rotate a unit vector according to the quaternion.   | |
| Q | get_negated () const | 
| Gets the negated quaternion.   | |
| v3 | get_vec_part () const | 
Get the [x,y,z] part as a regular 3d vector.   | |
| Q | get_conjugate () const | 
| Returns the conjugate of the quaternion.   | |
| Q | get_inverse () const | 
| Gets the inverse rotation.   | |
| float | get_length () const | 
| Gets the length of the quaternion.   | |
| Q | get_normalized () const | 
| Return a normalized quaternion If it can't be normalized, the identity is returned.   | |
| n3 | get_local_in () const | 
| Get the local in vector.   | |
| n3 | get_local_out () const | 
| Get the local out vector.   | |
| n3 | get_local_right () const | 
| Get the local right vector.   | |
| n3 | get_local_left () const | 
| Get the local left vector.   | |
| n3 | get_local_up () const | 
| Get the local up vector.   | |
| n3 | get_local_down () const | 
| Get the local down vector.   | |
| void | operator*= (float rhs) | 
| void | operator*= (const Q &rhs) | 
Static Public Member Functions | |
| static Q | from (const AA &aa) | 
| Create a quaternion from an axis angle.   | |
| static Q | from (const Ypr &ypr) | 
| Create a quaternion from a yaw-pitch-roll.   | |
| static Q | from_to (const Q &from, const Q &to) | 
Create a quaternion going from from to to.   | |
| static std::optional< Q > | look_at (const v3 &from, const v3 &to, const n3 &up) | 
| Creates a look-at quaternion from 2 positions.   | |
| static Q | look_in_direction (const n3 &dir, const n3 &up) | 
| Creates a look-at quaternion looking in a direction.   | |
| static Q | nlerp (const Q &f, float scale, const Q &t) | 
| Normalized lerp between 2 quaternions This will result in a non-linear rotation.   | |
| static Q | slerp_fast (const Q &qa, float t, const Q &qb) | 
| Spherical lerp between 2 quaternions.   | |
| static Q | slerp (const Q &from, float scale, const Q &to) | 
| Shortest spherical lerp between 2 quaternions.   | |
Public Attributes | |
| float | w | 
| float | x | 
| float | y | 
| float | z | 
Create a quaternion going from from to to. 
| Q eu::Q::get_conjugate | ( | ) | const | 
Returns the conjugate of the quaternion.
| Q eu::Q::get_inverse | ( | ) | const | 
Gets the inverse rotation.
Implemented as a conjugate with assert that the quaternion is normalized.
| float eu::Q::get_length | ( | ) | const | 
Gets the length of the quaternion.
Since the quaternion should be a unit, this should always be 1 
| n3 eu::Q::get_local_down | ( | ) | const | 
Get the local down vector.
| n3 eu::Q::get_local_in | ( | ) | const | 
Get the local in vector.
| n3 eu::Q::get_local_left | ( | ) | const | 
Get the local left vector.
| n3 eu::Q::get_local_out | ( | ) | const | 
Get the local out vector.
| n3 eu::Q::get_local_right | ( | ) | const | 
Get the local right vector.
| n3 eu::Q::get_local_up | ( | ) | const | 
Get the local up vector.
| Q eu::Q::get_negated | ( | ) | const | 
Gets the negated quaternion.
The negated represents the same rotation
| Q eu::Q::get_normalized | ( | ) | const | 
Return a normalized quaternion If it can't be normalized, the identity is returned.
| v3 eu::Q::get_vec_part | ( | ) | const | 
Get the [x,y,z] part as a regular 3d vector. 
Creates a look-at quaternion from 2 positions.
Standing at from and up is up, the result will be a quaternion looking at to 
Creates a look-at quaternion looking in a direction.
Normalized lerp between 2 quaternions This will result in a non-linear rotation.
| void eu::Q::normalize | ( | ) | 
Normalize the quaternion.
If it can't be normalized, it is set to the identity.
Shortest spherical lerp between 2 quaternions.
Has extra logic to take the shortest route.
Spherical lerp between 2 quaternions.
Will take the longer route sometimes but is technically faster.
Return the passed rotation composed after the current rotation.