|
MathLib
|
#include <math/DualQuaternion.hpp>
Public Types | |
Types | |
| using | value_type = T |
| The underlying implementation type. | |
Public Member Functions | |
| constexpr BasicDualQuaternion< T > | conjugate () const |
| constexpr BasicDual< T > | normsquared () const |
| constexpr BasicDual< T > | norm () const |
| constexpr BasicDual< T > | magnitude () const |
| const BasicQuaternion< T > & | rotation () const |
| BasicVector3D< T > | translation () const |
| constexpr BasicDualQuaternion< T > | normalized () const |
| constexpr bool | rotation_magnitude_is_one () const |
| constexpr bool | rotation_and_translation_are_orthogonal () const |
| constexpr bool | is_unit () const |
Constructors | |
| BasicDualQuaternion ()=default | |
| constexpr | BasicDualQuaternion (const BasicQuaternion< T > &rotation, const BasicQuaternion< T > &translation) |
| constexpr | BasicDualQuaternion (const BasicQuaternion< T > &rotation, T translation_x, T translation_y, T translation_z) |
| constexpr | BasicDualQuaternion (const BasicQuaternion< T > &rotation, const BasicVector3D< T > &translation) |
| constexpr | BasicDualQuaternion (const BasicDual< BasicQuaternion< T > > &underlying_representation) |
Element Access | |
| const BasicQuaternion< T > & | real () const |
| const BasicQuaternion< T > & | dual () const |
Invalid Value Check | |
| bool | isNaN () const |
| bool | isInf () const |
Static Public Member Functions | |
| static constexpr BasicVector3D< T > | decode_point (const BasicDualQuaternion< T > &encoded_point) |
Constants | |
| static constexpr BasicDualQuaternion< T > | identity () |
| static constexpr BasicDualQuaternion< T > | zero () |
Convenience Creation Functions | |
| static constexpr BasicDualQuaternion< T > | make_rotation (const BasicQuaternion< T > &rotation) |
| static constexpr BasicDualQuaternion< T > | make_translation (T translation_x, T translation_y, T translation_z) |
| static constexpr BasicDualQuaternion< T > | make_translation (const BasicVector3D< T > &translation) |
| static constexpr BasicDualQuaternion< T > | make_coordinate_system (const BasicQuaternion< T > &rotation, T translation_x, T translation_y, T translation_z) |
| static constexpr BasicDualQuaternion< T > | encode_point (const BasicVector3D< T > &point) |
Friends | |
Equality | |
| constexpr bool | operator== (const BasicDualQuaternion< T > &left, const BasicDualQuaternion< T > &right) |
| constexpr bool | approximately_equal_to (const BasicDualQuaternion< T > &value_to_test, const BasicDualQuaternion< T > &value_it_should_be, T tolerance=T{0.0002}) |
Operators | |
| constexpr BasicDualQuaternion< T > | operator+ (const BasicDualQuaternion< T > &left_side, const BasicDualQuaternion< T > &right_side) |
| constexpr BasicDualQuaternion< T > | operator* (T scalar, const BasicDualQuaternion< T > &dual_quaternion) |
| constexpr BasicDualQuaternion< T > | operator* (const BasicDualQuaternion< T > &dual_quaternion, T scalar) |
| constexpr BasicDualQuaternion< T > | operator* (const BasicDualQuaternion< T > &dual_quaternion, const BasicDual< T > &dual_scalar) |
| constexpr BasicDualQuaternion< T > | operator* (const BasicDualQuaternion< T > &left_side, const BasicDualQuaternion< T > &right_side) |
| constexpr BasicDualQuaternion< T > | operator/ (const BasicDualQuaternion< T > &dual_quaternion, const BasicDual< T > &dual_scalar) |
Check | |
| template<std::floating_point OT = float> | |
| bool | check_if_equal (const BasicDualQuaternion< T > &input, const BasicDualQuaternion< T > &near_to, OT tolerance=OT{0.0002}) |
| template<std::floating_point OT = float> | |
| bool | check_if_not_equal (const BasicDualQuaternion< T > &input, const BasicDualQuaternion< T > &near_to, OT tolerance=OT{0.0002}) |
Assert | |
| template<std::floating_point OT = float> | |
| void | CHECK_IF_EQUAL (const BasicDualQuaternion< T > &input, const BasicDualQuaternion< T > &near_to, OT tolerance=OT{0.0002}) |
| template<std::floating_point OT = float> | |
| void | CHECK_IF_NOT_EQUAL (const BasicDualQuaternion< T > &input, const BasicDualQuaternion< T > &near_to, OT tolerance=OT{0.0002}) |
| template<std::floating_point OT = float> | |
| void | CHECK_IF_ZERO (const BasicDualQuaternion< T > &input, OT tolerance=OT{0.0002}) |
Global Functions | |
| constexpr BasicDualQuaternion< T > | normalized (const BasicDualQuaternion< T > &input) |
| template<std::floating_point OT = float> | |
| constexpr BasicDualQuaternion< T > | blend (const BasicDualQuaternion< T > &beginning, const BasicDualQuaternion< T > &end, OT percentage) |
| constexpr BasicDualQuaternion< T > | conjugate (const BasicDualQuaternion< T > &input) |
| std::string | format (const BasicDualQuaternion< T > &input) |
Related Symbols | |
(Note that these are not member symbols.) | |
Type Aliases | |
| using | DualQuaternionf = BasicDualQuaternion< float > |
| using | DualQuaterniond = BasicDualQuaternion< double > |
| using | DualQuaternion = BasicDualQuaternion< double > |
| using | DualQuaternionl = BasicDualQuaternion< long double > |
The definition of a DualQuaternion
Here, we just compose the ideas of the BasicDual and BasicQuaternion classes together to create a DualQuaternion class.
Definition at line 31 of file DualQuaternion.hpp.
| using value_type = T |
The underlying implementation type.
Definition at line 37 of file DualQuaternion.hpp.
|
default |
|
inlineconstexpr |
Constructs a DualQuaternion directly from the two given quaternions
| rotation | The Quaternion to place into the real() part |
| translation | The Quaternion to place into the dual() part |
Definition at line 53 of file DualQuaternion.hpp.
|
inlineconstexpr |
Constructs a DualQuaternion from a unit Quaternion (rotation) and a translation
Definition at line 64 of file DualQuaternion.hpp.
|
inlineconstexpr |
Definition at line 74 of file DualQuaternion.hpp.
|
inlineexplicitconstexpr |
Constructs a DualQuaternion directly from a BasicDual<BasicQuaternion>
| underlying_representation | The BasicDual number that will ultimately be used as the internal representation |
Definition at line 87 of file DualQuaternion.hpp.
|
inlineconstexpr |
Create the conjugate of a DualQuaternion
Definition at line 216 of file DualQuaternion.hpp.
|
inlinestaticconstexpr |
Definition at line 202 of file DualQuaternion.hpp.
|
inline |
Definition at line 269 of file DualQuaternion.hpp.
|
inlinestaticconstexpr |
Definition at line 196 of file DualQuaternion.hpp.
|
inlinestaticconstexpr |
Create a DualQuaternion representing no rotation and no translation
Definition at line 102 of file DualQuaternion.hpp.
|
inlineconstexpr |
Checks if a DualQuaternion is a "unit" representation
true if it is in unit form, false otherwise Definition at line 315 of file DualQuaternion.hpp.
|
inline |
Definition at line 324 of file DualQuaternion.hpp.
|
inline |
Definition at line 323 of file DualQuaternion.hpp.
|
inlineconstexpr |
Creates the magnitude of a DualQuaternion
Definition at line 263 of file DualQuaternion.hpp.
|
inlinestaticconstexpr |
Encode both the rotation and translation together
| rotation | The rotation to inject |
| translation_x | The X component of the translation vector |
| translation_y | The Y component of the translation vector |
| translation_z | The Z component of the translation vector |
rotation is a unit BasicQuaternion rotation. result.dual.isPure() Definition at line 186 of file DualQuaternion.hpp.
|
inlinestaticconstexpr |
Creates a DualQuaternion containing a rotation only
| rotation | The rotation to apply, expressed as a Quaternion |
rotation is a unit Quaternion rotation. result.dual == BasicQuaternion::zero() Definition at line 129 of file DualQuaternion.hpp.
|
inlinestaticconstexpr |
Create a DualQuaternion containing a translation only
| translation | The translation to apply |
Definition at line 164 of file DualQuaternion.hpp.
|
inlinestaticconstexpr |
Create a DualQuaternion containing a translation only
| translation_x | The X component of the translation vector |
| translation_y | The Y component of the translation vector |
| translation_z | The Z component of the translation vector |
Definition at line 146 of file DualQuaternion.hpp.
|
inlineconstexpr |
Create the norm of a DualQuaternion
norm is also known as the magnitude Definition at line 252 of file DualQuaternion.hpp.
|
inlineconstexpr |
Create the normalized version of a DualQuaternion
Definition at line 284 of file DualQuaternion.hpp.
|
inlineconstexpr |
Create the square of the norm of the input
norm is also known as the magnitude Definition at line 227 of file DualQuaternion.hpp.
|
inline |
Definition at line 268 of file DualQuaternion.hpp.
|
inline |
Definition at line 272 of file DualQuaternion.hpp.
|
inlineconstexpr |
Checks if a DualQuaternion has orthogonal rotation and translation axes
true if they are orthogonal, false otherwiseDefinition at line 306 of file DualQuaternion.hpp.
|
inlineconstexpr |
Checks for a DualQuaternion's rotation component has a magnitude of one
true of the magnitude of the rotation is 1, false otherwiseDefinition at line 295 of file DualQuaternion.hpp.
|
inline |
Definition at line 273 of file DualQuaternion.hpp.
|
inlinestaticconstexpr |
Create a DualQuaternion that is all zeros
Definition at line 110 of file DualQuaternion.hpp.
|
friend |
Compares two BasicDualQuaternion 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 361 of file DualQuaternion.hpp.
|
friend |
Generates a linear blend between two BasicDualQuaternion objects
| beginning | The start state |
| end | The ending state |
| percentage | The percentage blend between the two (typically [0..1]) |
Definition at line 598 of file DualQuaternion.hpp.
|
friend |
Computes the conjugate of the input
input.conjugate() Definition at line 611 of file DualQuaternion.hpp.
|
friend |
Definition at line 616 of file DualQuaternion.hpp.
|
friend |
Creates the normalized form of a BasicDualQuaternion
| input | The BasicDualQuaternion to normalize |
input Definition at line 586 of file DualQuaternion.hpp.
|
friend |
Defines equality of two DualQuaternions
Definition at line 344 of file DualQuaternion.hpp.