|
MathLib
|
#include <math/Quaternion.hpp>
Public Types | |
Types | |
| using | value_type = T |
| The underlying implementation type. | |
Public Member Functions | |
| constexpr BasicQuaternion< T > | conjugate () const |
| BasicQuaternion< T > | pow (T exponent) const |
| Computes this BasicQuaternion raised to a real power. | |
| BasicQuaternion< T > | exp () const |
| BasicQuaternion< T > | log () const |
| T | normSquared () const |
| T | norm () const |
| T | magnitudeSquared () const |
| T | magnitude () const |
| constexpr BasicQuaternion< T > | normalized () const |
| BasicQuaternion< T > | inverse () const |
| BasicRadian< T > | angle () const |
| constexpr BasicVector3D< T > | axis () const |
| bool | isUnit () const |
| bool | isUnit (T tolerance) const |
| bool | isZero () const |
| bool | isZero (T tolerance) const |
| bool | isPure () const |
Constructors | |
| constexpr | BasicQuaternion ()=default |
| constexpr | BasicQuaternion (T real_number) |
| Constructs a BasicQuaternion equivalent to the given real number. | |
| constexpr | BasicQuaternion (T w, T i, T j, T k) |
Element Access | |
| constexpr const T & | w () const |
| constexpr const T & | real () const |
| constexpr const T & | i () const |
| constexpr const T & | j () const |
| constexpr const T & | k () const |
| constexpr BasicVector3D< T > | imaginary () const |
| Extracts the imaginary part of a BasicQuaternion as a BasicVector3D. | |
Invalid Value Check | |
| bool | isNaN () const |
| bool | isInf () const |
Static Public Member Functions | |
Constants | |
| static constexpr BasicQuaternion< T > | identity () |
| BasicQuaternion representation of the real number 1. | |
| static constexpr BasicQuaternion< T > | zero () |
| BasicQuaternion representation of the real number 0. | |
| static constexpr BasicQuaternion< T > | unit_real () |
| static constexpr BasicQuaternion< T > | unit_i () |
| static constexpr BasicQuaternion< T > | unit_j () |
| static constexpr BasicQuaternion< T > | unit_k () |
Convenience Creation Functions | |
| static constexpr BasicQuaternion< T > | make_pure (T x, T y, T z) |
| static constexpr BasicQuaternion< T > | make_pure (const BasicVector3D< T > &t) |
| static constexpr BasicQuaternion< T > | encode_point (T x, T y, T z) |
| static constexpr BasicQuaternion< T > | encode_point (const BasicVector3D< T > &point) |
| static constexpr BasicQuaternion< T > | make_rotation (const BasicRadian< T > &radians, T axis_x, T axis_y, T axis_z) |
| static constexpr BasicQuaternion< T > | make_rotation (const BasicRadian< T > &radians, const BasicVector3D< T > &axis) |
Friends | |
Equality | |
| constexpr bool | operator== (const BasicQuaternion< T > &left, const BasicQuaternion< T > &right) |
| template<std::floating_point OT = T> requires std::is_floating_point_v<T> | |
| constexpr bool | approximately_equal_to (const BasicQuaternion< T > &value_to_test, const BasicQuaternion< T > &value_it_should_be, OT tolerance=OT{0.0002}) |
Operators | |
| constexpr BasicQuaternion< T > | operator* (const BasicQuaternion< T > &left, const BasicQuaternion< T > &right) |
| template<std::floating_point OT> | |
| constexpr BasicQuaternion< T > | operator* (const BasicQuaternion< T > &quaternion, OT scalar) |
| constexpr BasicQuaternion< T > | operator/ (const BasicQuaternion< T > &left, const BasicQuaternion< T > &right) |
| template<std::floating_point OT> | |
| constexpr BasicQuaternion< T > | operator/ (const BasicQuaternion< T > &quaternion, OT scalar) |
| constexpr BasicQuaternion< T > | operator+ (const BasicQuaternion< T > &left, const BasicQuaternion< T > &right) |
| constexpr BasicQuaternion< T > | operator- (const BasicQuaternion< T > &left, const BasicQuaternion< T > &right) |
| constexpr BasicQuaternion< T > | operator- (const BasicQuaternion< T > &q) |
Check | |
| template<std::floating_point OT = T> requires std::is_floating_point_v<T> | |
| bool | check_if_equal (const BasicQuaternion< T > &input, const BasicQuaternion< T > &near_to, OT tolerance=OT{0.0002}) |
| template<std::floating_point OT = T> requires std::is_floating_point_v<T> | |
| bool | check_if_not_equal (const BasicQuaternion< T > &input, const BasicQuaternion< T > &near_to, OT tolerance=OT{0.0002}) |
Assert | |
| template<std::floating_point OT = T> requires std::is_floating_point_v<T> | |
| void | CHECK_IF_EQUAL (const BasicQuaternion< T > &input, const BasicQuaternion< T > &near_to, OT tolerance=OT{0.0002}) |
| template<std::floating_point OT = T> requires std::is_floating_point_v<T> | |
| void | CHECK_IF_NOT_EQUAL (const BasicQuaternion< T > &input, const BasicQuaternion< T > &near_to, OT tolerance=OT{0.0002}) |
| template<std::floating_point OT = T> requires std::is_floating_point_v<T> | |
| void | CHECK_IF_ZERO (const BasicQuaternion< T > &input, OT tolerance=OT{0.0002}) |
Global Functions | |
| constexpr T | dot (const BasicQuaternion< T > &left, const BasicQuaternion< T > &right) |
| constexpr T | dot_normalized (const BasicQuaternion< T > &left, const BasicQuaternion< T > &right) |
| constexpr BasicQuaternion< T > | passively_rotate_encoded_point (const BasicQuaternion< T > &rotation, const BasicQuaternion< T > &encoded_point) |
| constexpr BasicQuaternion< T > | locally_rotate_encoded_point (const BasicQuaternion< T > &rotation, const BasicQuaternion< T > &encoded_point) |
| constexpr BasicQuaternion< T > | actively_rotate_encoded_point (const BasicQuaternion< T > &rotation, const BasicQuaternion< T > &encoded_point) |
| constexpr BasicQuaternion< T > | globally_rotate_encoded_point (const BasicQuaternion< T > &rotation, const BasicQuaternion< T > &encoded_point) |
| constexpr BasicQuaternion< T > | compose_rotations (const BasicQuaternion< T > &rotation_1, const BasicQuaternion< T > &rotation_2) |
| constexpr BasicQuaternion< T > | normalized (const BasicQuaternion< T > &input) |
| constexpr T | arg (const BasicQuaternion< T > &input) |
| constexpr BasicQuaternion< T > | polar (const BasicVector3D< T > &axis, const BasicRadian< T > angle=BasicRadian< T >{}) |
| constexpr T | accumulate (const BasicQuaternion< T > &input) |
| constexpr BasicQuaternion< T > | slerp (const BasicQuaternion< T > &begin, const BasicQuaternion< T > &end, T percent) |
| std::string | format (const BasicQuaternion< T > &input) |
| constexpr BasicQuaternion< T > | conjugate (const BasicQuaternion< T > &input) |
| constexpr BasicQuaternion< T > | log (const BasicQuaternion< T > &input) |
| BasicQuaternion< T > | exp (const BasicQuaternion< T > &input) |
Related Symbols | |
(Note that these are not member symbols.) | |
Type Aliases | |
| using | Quaternionf = BasicQuaternion< float > |
| using | Quaterniond = BasicQuaternion< double > |
| using | Quaternion = BasicQuaternion< double > |
| using | Quaternionl = BasicQuaternion< long double > |
A mathematical quaternion
Definition at line 31 of file Quaternion.hpp.
| using value_type = T |
The underlying implementation type.
Definition at line 37 of file Quaternion.hpp.
|
constexprdefault |
|
inlineconstexpr |
Constructs a BasicQuaternion equivalent to the given real number.
Definition at line 44 of file Quaternion.hpp.
|
inlineconstexpr |
Definition at line 45 of file Quaternion.hpp.
|
inline |
Definition at line 153 of file Quaternion.hpp.
|
inlineconstexpr |
Definition at line 158 of file Quaternion.hpp.
|
inlineconstexpr |
Definition at line 62 of file Quaternion.hpp.
|
inlinestaticconstexpr |
Encode a 3D point as a pure BasicQuaternion
Definition at line 250 of file Quaternion.hpp.
|
inlinestaticconstexpr |
Encode a 3D point as a pure BasicQuaternion
Definition at line 238 of file Quaternion.hpp.
|
inline |
Computes the exponential form of this BasicQuaternion
Definition at line 102 of file Quaternion.hpp.
|
inlineconstexpr |
Definition at line 169 of file Quaternion.hpp.
|
inlinestaticconstexpr |
BasicQuaternion representation of the real number 1.
Definition at line 52 of file Quaternion.hpp.
|
inlineconstexpr |
Extracts the imaginary part of a BasicQuaternion as a BasicVector3D.
Definition at line 174 of file Quaternion.hpp.
|
inline |
Definition at line 151 of file Quaternion.hpp.
|
inline |
Definition at line 196 of file Quaternion.hpp.
|
inline |
Definition at line 189 of file Quaternion.hpp.
|
inline |
Definition at line 184 of file Quaternion.hpp.
|
inline |
Definition at line 177 of file Quaternion.hpp.
|
inline |
Definition at line 178 of file Quaternion.hpp.
|
inline |
Definition at line 180 of file Quaternion.hpp.
|
inline |
Definition at line 181 of file Quaternion.hpp.
|
inlineconstexpr |
Definition at line 170 of file Quaternion.hpp.
|
inlineconstexpr |
Definition at line 171 of file Quaternion.hpp.
|
inline |
Computes the log base e of this BasicQuaternion
Definition at line 120 of file Quaternion.hpp.
|
inline |
Definition at line 142 of file Quaternion.hpp.
|
inline |
Definition at line 141 of file Quaternion.hpp.
|
inlinestaticconstexpr |
Construct a pure BasicQuaternion
Definition at line 226 of file Quaternion.hpp.
|
inlinestaticconstexpr |
Construct a pure BasicQuaternion
Definition at line 216 of file Quaternion.hpp.
|
inlinestaticconstexpr |
Enocde a rotation into a BasicQuaternion
| radians | The amount of rotation to apply (in radians) |
| axis | The axis to rotate around |
Definition at line 273 of file Quaternion.hpp.
|
inlinestaticconstexpr |
Enocde a rotation into a BasicQuaternion
| radians | The amount of rotation to apply (in radians) |
| axis_x | The X component of the vector to rotate around |
| axis_y | The Y component of the vector to rotate around |
| axis_z | The Z component of the vector to rotate around |
Definition at line 261 of file Quaternion.hpp.
|
inline |
Definition at line 139 of file Quaternion.hpp.
|
inlineconstexpr |
Definition at line 144 of file Quaternion.hpp.
|
inline |
Definition at line 138 of file Quaternion.hpp.
|
inline |
Computes this BasicQuaternion raised to a real power.
Definition at line 71 of file Quaternion.hpp.
|
inlineconstexpr |
Definition at line 167 of file Quaternion.hpp.
|
inlinestaticconstexpr |
Definition at line 57 of file Quaternion.hpp.
|
inlinestaticconstexpr |
Definition at line 58 of file Quaternion.hpp.
|
inlinestaticconstexpr |
Definition at line 59 of file Quaternion.hpp.
|
inlinestaticconstexpr |
Definition at line 56 of file Quaternion.hpp.
|
inlineconstexpr |
Definition at line 166 of file Quaternion.hpp.
|
inlinestaticconstexpr |
BasicQuaternion representation of the real number 0.
Definition at line 55 of file Quaternion.hpp.
|
friend |
Sums up the components of input
| input | The BasicQuaternion to operate on |
Definition at line 687 of file Quaternion.hpp.
|
friend |
Rotates the encoded_point using the given rotation
| rotation | The input rotation |
| encoded_point | The input point to be rotated |
rotation is a unit BasicQuaternion. encoded_point is a pure BasicQuaternion. Definition at line 619 of file Quaternion.hpp.
|
friend |
Compares two BasicQuaternion inputs equal, component-wise, to within a tolerance
| value_to_test | |
| value_it_should_be | |
| tolerance | How close they should be to be considered equal |
true if they are equalDefinition at line 324 of file Quaternion.hpp.
|
friend |
Computes the phase-angle (in radians of a Quaternion)
Definition at line 664 of file Quaternion.hpp.
|
friend |
Performs a concatenation of two rotations
| rotation_1 | The first rotation to perform |
| rotation_2 | The second rotation to perform |
Definition at line 643 of file Quaternion.hpp.
|
friend |
Computes the conjugate of the input
input.conjugate() Definition at line 716 of file Quaternion.hpp.
|
friend |
Calculates the dot product of two Quaternions
Definition at line 553 of file Quaternion.hpp.
|
friend |
Definition at line 561 of file Quaternion.hpp.
|
friend |
Computes the exponential of the input
input.exp() Definition at line 734 of file Quaternion.hpp.
|
friend |
Definition at line 707 of file Quaternion.hpp.
|
friend |
Definition at line 632 of file Quaternion.hpp.
|
friend |
Definition at line 598 of file Quaternion.hpp.
|
friend |
Computes the log of the input
input.log() Definition at line 725 of file Quaternion.hpp.
|
friend |
Creates the normalized form of a Quaternion
| input | The Quaternion to normalize |
input Definition at line 655 of file Quaternion.hpp.
|
friend |
Defines equality of two Quaternions
Definition at line 307 of file Quaternion.hpp.
|
friend |
Rotates the encoded point using the given rotation
| rotation | The input rotation |
| encoded_point | The input point to be rotated |
rotation is a unit BasicQuaternion. encoded_point is a pure Auaternion. Definition at line 585 of file Quaternion.hpp.
|
friend |
Constructs a unit Quaternion from the given axis and angle
Definition at line 673 of file Quaternion.hpp.
|
friend |
Calculates the Spherical Linear Interpolation betwee two Quaternions
| begin | Origin value |
| end | Destination value |
| percent | [0..1] Represents the percentage to interpolate |
Definition at line 698 of file Quaternion.hpp.