Janus 2.0.0
High-performance C++20 dual-mode numerical framework
Loading...
Searching...
No Matches
janus::Quaternion< Scalar > Class Template Reference

Quaternion class for rotation representation. More...

#include <Quaternion.hpp>

Public Member Functions

 Quaternion ()
 Default constructor: Identity quaternion (1, 0, 0, 0).
 Quaternion (Scalar w, Scalar x, Scalar y, Scalar z)
 Component constructor.
 Quaternion (const Vec4< Scalar > &v)
 Construct from Vec4 [w, x, y, z].
Quaternion operator* (const Quaternion &other) const
 Hamilton product.
Quaternion operator* (const Scalar &s) const
 Scalar multiplication.
Quaternion operator+ (const Quaternion &other) const
 Quaternion addition.
Quaternion conjugate () const
 Conjugate (w, -x, -y, -z).
Quaternion inverse () const
 Inverse (conjugate / norm_sq).
Scalar squared_norm () const
 Squared norm (w^2 + x^2 + y^2 + z^2).
Scalar norm () const
 Quaternion norm.
Quaternion normalized () const
 Return unit quaternion.
Vec3< Scalar > rotate (const Vec3< Scalar > &v) const
 Rotate a 3D vector: v_rot = q * v * q_conj.
Mat3< Scalar > to_rotation_matrix () const
 Convert to 3x3 rotation matrix.
Vec4< Scalar > coeffs () const
 Export as vector [w, x, y, z].
Vec3< Scalar > to_euler () const
 Extract Euler angles (Roll-Pitch-Yaw / XYZ).

Static Public Member Functions

static Quaternion from_euler (Scalar roll, Scalar pitch, Scalar yaw)
 Create from Euler Angles (Yaw-Pitch-Roll / Z-Y-X sequence).
static Quaternion from_axis_angle (const Vec3< Scalar > &axis, Scalar angle)
 Create from axis-angle representation.
static Quaternion from_rotation_vector (const Vec3< Scalar > &rot_vec)
 Create from rotation vector (axis * angle).
static Quaternion from_rotation_matrix (const Mat3< Scalar > &mat)
 Create from 3x3 rotation matrix.

Public Attributes

Scalar w
Scalar x
Scalar y
Scalar z

Detailed Description

template<typename Scalar>
class janus::Quaternion< Scalar >

Quaternion class for rotation representation.

Stores quaternion in (w, x, y, z) convention where w is the scalar part. All operations support both numeric and symbolic types.

Template Parameters
ScalarScalar type (NumericScalar or SymbolicScalar)

Constructor & Destructor Documentation

◆ Quaternion() [1/3]

template<typename Scalar>
janus::Quaternion< Scalar >::Quaternion ( )
inline

Default constructor: Identity quaternion (1, 0, 0, 0).

◆ Quaternion() [2/3]

template<typename Scalar>
janus::Quaternion< Scalar >::Quaternion ( Scalar w,
Scalar x,
Scalar y,
Scalar z )
inline

Component constructor.

◆ Quaternion() [3/3]

template<typename Scalar>
janus::Quaternion< Scalar >::Quaternion ( const Vec4< Scalar > & v)
inlineexplicit

Construct from Vec4 [w, x, y, z].

Member Function Documentation

◆ coeffs()

template<typename Scalar>
Vec4< Scalar > janus::Quaternion< Scalar >::coeffs ( ) const
inline

Export as vector [w, x, y, z].

Returns
4-element coefficient vector

◆ conjugate()

template<typename Scalar>
Quaternion janus::Quaternion< Scalar >::conjugate ( ) const
inline

Conjugate (w, -x, -y, -z).

Returns
Conjugate quaternion

◆ from_axis_angle()

template<typename Scalar>
Quaternion janus::Quaternion< Scalar >::from_axis_angle ( const Vec3< Scalar > & axis,
Scalar angle )
inlinestatic

Create from axis-angle representation.

Parameters
axisRotation axis (will be normalized)
angleRotation angle (radians)
Returns
Quaternion

◆ from_euler()

template<typename Scalar>
Quaternion janus::Quaternion< Scalar >::from_euler ( Scalar roll,
Scalar pitch,
Scalar yaw )
inlinestatic

Create from Euler Angles (Yaw-Pitch-Roll / Z-Y-X sequence).

Parameters
rollRoll angle (radians)
pitchPitch angle (radians)
yawYaw angle (radians)
Returns
Quaternion
See also
rotation_matrix_from_euler_angles

◆ from_rotation_matrix()

template<typename Scalar>
Quaternion janus::Quaternion< Scalar >::from_rotation_matrix ( const Mat3< Scalar > & mat)
inlinestatic

Create from 3x3 rotation matrix.

Parameters
matRotation matrix
Returns
Quaternion

◆ from_rotation_vector()

template<typename Scalar>
Quaternion janus::Quaternion< Scalar >::from_rotation_vector ( const Vec3< Scalar > & rot_vec)
inlinestatic

Create from rotation vector (axis * angle).

Parameters
rot_vecRotation vector
Returns
Quaternion

◆ inverse()

template<typename Scalar>
Quaternion janus::Quaternion< Scalar >::inverse ( ) const
inline

Inverse (conjugate / norm_sq).

Returns
Inverse quaternion

◆ norm()

template<typename Scalar>
Scalar janus::Quaternion< Scalar >::norm ( ) const
inline

Quaternion norm.

Returns
Euclidean norm

◆ normalized()

template<typename Scalar>
Quaternion janus::Quaternion< Scalar >::normalized ( ) const
inline

Return unit quaternion.

Returns
Normalized copy

◆ operator*() [1/2]

template<typename Scalar>
Quaternion janus::Quaternion< Scalar >::operator* ( const Quaternion< Scalar > & other) const
inline

Hamilton product.

Parameters
otherRight-hand quaternion
Returns
Product quaternion

◆ operator*() [2/2]

template<typename Scalar>
Quaternion janus::Quaternion< Scalar >::operator* ( const Scalar & s) const
inline

Scalar multiplication.

Parameters
sScalar factor
Returns
Scaled quaternion

◆ operator+()

template<typename Scalar>
Quaternion janus::Quaternion< Scalar >::operator+ ( const Quaternion< Scalar > & other) const
inline

Quaternion addition.

Parameters
otherRight-hand quaternion
Returns
Sum quaternion

◆ rotate()

template<typename Scalar>
Vec3< Scalar > janus::Quaternion< Scalar >::rotate ( const Vec3< Scalar > & v) const
inline

Rotate a 3D vector: v_rot = q * v * q_conj.

Parameters
vInput vector
Returns
Rotated vector

◆ squared_norm()

template<typename Scalar>
Scalar janus::Quaternion< Scalar >::squared_norm ( ) const
inline

Squared norm (w^2 + x^2 + y^2 + z^2).

Returns
Squared norm

◆ to_euler()

template<typename Scalar>
Vec3< Scalar > janus::Quaternion< Scalar >::to_euler ( ) const
inline

Extract Euler angles (Roll-Pitch-Yaw / XYZ).

Returns
Vec3 of (roll, pitch, yaw)

◆ to_rotation_matrix()

template<typename Scalar>
Mat3< Scalar > janus::Quaternion< Scalar >::to_rotation_matrix ( ) const
inline

Convert to 3x3 rotation matrix.

Returns
Rotation matrix

Member Data Documentation

◆ w

template<typename Scalar>
Scalar janus::Quaternion< Scalar >::w

◆ x

template<typename Scalar>
Scalar janus::Quaternion< Scalar >::x

◆ y

template<typename Scalar>
Scalar janus::Quaternion< Scalar >::y

◆ z

template<typename Scalar>
Scalar janus::Quaternion< Scalar >::z

The documentation for this class was generated from the following file: