StevEngine
StevEngine is a customizable C++ game engine.
Loading...
Searching...
No Matches
StevEngine::Utilities::Quaternion Class Reference

Quaternion for 3D rotations. More...

#include <utilities/Quaternion.hpp>

Public Member Functions

 Quaternion (double w, double x, double y, double z)
 Create quaternion from components.
 
 Quaternion (double w, Vector3 vector)
 Create quaternion from real and vector parts.
 
 Quaternion (const Quaternion &from)
 Copy constructor.
 
 Quaternion ()
 Create identity quaternion.
 
Vector3 Forward () const
 Get forward direction.
 
Vector3 Right () const
 Get right direction.
 
Vector3 Up () const
 Get up direction.
 
QuaternionConjugate ()
 Conjugate this quaternion.
 
QuaternionInverse ()
 Invert this quaternion.
 
Quaternion Get () const
 Get copy of this quaternion.
 
double Magnitude () const
 Get magnitude.
 
QuaternionNormalize ()
 Normalize this quaternion.
 
Quaternion Normalized () const
 Get normalized copy.
 
std::tuple< double, Vector3GetAngleAxis () const
 Get angle and axis representation.
 
Quaternion operator+ (const Quaternion &other) const
 Addition.
 
Quaternion operator- (const Quaternion &other) const
 Subtraction.
 
Quaternion operator* (const Quaternion &other) const
 Quaternion multiplication.
 
Quaternion operator* (const double &other) const
 Scalar multiplication.
 
Quaternion operator/ (const double &other) const
 Scalar division.
 
Quaternionoperator*= (const Quaternion &other)
 Quaternion multiply-assign.
 
bool operator== (const Quaternion &other) const
 Equality comparison.
 
Vector3 operator* (const Vector3 &v) const
 Rotate vector by quaternion.
 
 operator std::string () const
 Convert to string.
 
 operator Vector4 () const
 Convert to Vector4.
 
 operator JPH::Quat () const
 Convert to Jolt quaternion.
 
Quaternionoperator= (const JPH::Quat &other)
 Assign from Jolt quaternion.
 
 Quaternion (const JPH::Quat &other)
 Create from Jolt quaternion.
 

Static Public Member Functions

static Quaternion FromAngleAxis (double angle, Vector3 axis)
 Create quaternion from angle and axis.
 
static double Angle (const Quaternion &a, const Quaternion &b)
 Get angle between quaternions.
 
static Quaternion Lerp (const Quaternion &a, const Quaternion &b, double t)
 Linear interpolation between quaternions.
 
static Quaternion Slerp (const Quaternion &a, const Quaternion &b, double t)
 Spherical interpolation between quaternions.
 
static Quaternion FromToRotation (Vector3 fromDirection, Vector3 toDirection)
 Create rotation from start to end direction.
 
static Quaternion LookRotation (Vector3 forward, const Vector3 &upwards=Vector3::up)
 Create rotation looking in direction.
 
static Quaternion Inverse (const Quaternion &q)
 Create inverse of quaternion.
 
static Quaternion Conjugate (const Quaternion &q)
 Create conjugate of quaternion.
 
static double Dot (const Quaternion &a, const Quaternion &b)
 Calculate dot product.
 
static double DegreesToRadians (double degrees)
 Convert degrees to radians.
 
static double RadiansToDegrees (double radians)
 Convert radians to degrees.
 

Public Attributes

double W
 
double X
 
double Y
 
double Z
 Quaternion components (w + xi + yj + zk)
 

Detailed Description

Quaternion for 3D rotations.

Implements quaternion mathematics for representing and manipulating 3D rotations. Provides operations for combining rotations and converting between different rotation representations.

Constructor & Destructor Documentation

◆ Quaternion() [1/3]

StevEngine::Utilities::Quaternion::Quaternion ( double w,
double x,
double y,
double z )

Create quaternion from components.

Parameters
wReal component
xi component
yj component
zk component

◆ Quaternion() [2/3]

StevEngine::Utilities::Quaternion::Quaternion ( double w,
Vector3 vector )

Create quaternion from real and vector parts.

Parameters
wReal component
vectorVector component (x,y,z)

◆ Quaternion() [3/3]

StevEngine::Utilities::Quaternion::Quaternion ( const Quaternion & from)

Copy constructor.

Parameters
fromQuaternion to copy

Member Function Documentation

◆ Angle()

double StevEngine::Utilities::Quaternion::Angle ( const Quaternion & a,
const Quaternion & b )
static

Get angle between quaternions.

Parameters
aFirst quaternion
bSecond quaternion
Returns
Angle in radians

◆ Conjugate() [1/2]

Quaternion & StevEngine::Utilities::Quaternion::Conjugate ( )

Conjugate this quaternion.

Returns
Reference to this

◆ Conjugate() [2/2]

Quaternion StevEngine::Utilities::Quaternion::Conjugate ( const Quaternion & q)
static

Create conjugate of quaternion.

Parameters
qQuaternion to conjugate
Returns
Conjugated quaternion

◆ DegreesToRadians()

double StevEngine::Utilities::Quaternion::DegreesToRadians ( double degrees)
static

Convert degrees to radians.

Parameters
degreesAngle in degrees
Returns
Angle in radians

◆ Dot()

double StevEngine::Utilities::Quaternion::Dot ( const Quaternion & a,
const Quaternion & b )
static

Calculate dot product.

Parameters
aFirst quaternion
bSecond quaternion
Returns
Dot product

◆ Forward()

Vector3 StevEngine::Utilities::Quaternion::Forward ( ) const

Get forward direction.

Returns
Forward vector in local space

◆ FromAngleAxis()

Quaternion StevEngine::Utilities::Quaternion::FromAngleAxis ( double angle,
Vector3 axis )
static

Create quaternion from angle and axis.

Parameters
angleRotation angle in radians
axisRotation axis (normalized)
Returns
Created quaternion

◆ FromToRotation()

Quaternion StevEngine::Utilities::Quaternion::FromToRotation ( Vector3 fromDirection,
Vector3 toDirection )
static

Create rotation from start to end direction.

Parameters
fromDirectionStart direction
toDirectionTarget direction
Returns
Rotation quaternion

◆ GetAngleAxis()

std::tuple< double, Vector3 > StevEngine::Utilities::Quaternion::GetAngleAxis ( ) const

Get angle and axis representation.

Returns
Tuple of (angle, axis)

◆ Inverse() [1/2]

Quaternion & StevEngine::Utilities::Quaternion::Inverse ( )

Invert this quaternion.

Returns
Reference to this

◆ Inverse() [2/2]

Quaternion StevEngine::Utilities::Quaternion::Inverse ( const Quaternion & q)
static

Create inverse of quaternion.

Parameters
qQuaternion to invert
Returns
Inverted quaternion

◆ Lerp()

Quaternion StevEngine::Utilities::Quaternion::Lerp ( const Quaternion & a,
const Quaternion & b,
double t )
static

Linear interpolation between quaternions.

Parameters
aStart quaternion
bEnd quaternion
tInterpolation factor (0-1)
Returns
Interpolated quaternion

◆ LookRotation()

Quaternion StevEngine::Utilities::Quaternion::LookRotation ( Vector3 forward,
const Vector3 & upwards = Vector3::up )
static

Create rotation looking in direction.

Parameters
forwardForward direction
upwardsUp direction
Returns
Look rotation

◆ operator*()

Vector3 StevEngine::Utilities::Quaternion::operator* ( const Vector3 & v) const

Rotate vector by quaternion.

Parameters
vVector to rotate
Returns
Rotated vector

◆ RadiansToDegrees()

double StevEngine::Utilities::Quaternion::RadiansToDegrees ( double radians)
static

Convert radians to degrees.

Parameters
radiansAngle in radians
Returns
Angle in degrees

◆ Right()

Vector3 StevEngine::Utilities::Quaternion::Right ( ) const

Get right direction.

Returns
Right vector in local space

◆ Slerp()

Quaternion StevEngine::Utilities::Quaternion::Slerp ( const Quaternion & a,
const Quaternion & b,
double t )
static

Spherical interpolation between quaternions.

Parameters
aStart quaternion
bEnd quaternion
tInterpolation factor (0-1)
Returns
Interpolated quaternion

◆ Up()

Vector3 StevEngine::Utilities::Quaternion::Up ( ) const

Get up direction.

Returns
Up vector in local space

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