HQuat

Content

HQuat operator*

Fields

float x
float y
float z
float w

Detailed Description

class HQuat

The HQuat class defines the data type of a Quaternion.

The HQuat class encapsulates the x,y,x,w values used to define a quaternion as well as various functions to perform algebrahic operations on quaternions

Public Functions

HQuat const &Normalize()

normalizes an HQuat

inline HQuat()

default constructor

inline HQuat(float X, float Y, float Z, float W)

constructor that accepts three floats

inline HQuat(HQuat const *p)

constructor that accepts a pointer to an HQuat object

inline HQuat(HQuat const &p)

constructor that accepts an HQuat reference

inline void Set(float X, float Y, float Z, float W)

Set packs an HQuat object with coordinate values.

inline HQuat operator*(HQuat const &q2) const

Multiplies two quaternions

Parameters:q2 – Quaternion to multiply with
Returns:Result of multiplication
inline HQuat operator*(float v) const

Multiplies a quaternion with a float value

Parameters:v – Value to multiply Quaternion with
Returns:Result of multiplication
inline HQuat operator/(float v) const

Divides a quaternion by a float value

Parameters:v – Value to divide Quaternion by
Returns:Result of multiplication
inline HQuat operator-(HQuat const &q2) const

Subtracts one quaternion from another

Parameters:q2 – Quaternion to subtract with
Returns:Result of subtraction
inline HQuat operator+(HQuat const &q2) const

Add one quaternion to another

Parameters:q2 – Quaternion to add
Returns:Result of addition
void ToMatrix(float matrix[16])

Convert Quaternion to matrix form

Parameters:matrix – Returns result matrix

Public Members

float x

Quaternion x Coordinate

float y

Quaternion y Coordinate

float z

Quaternion z Coordinate

float w

Quaternion w Coordinate

Public Static Functions

static HQuat Qlog(HQuat const &q)

Logarithm of a HQuat, given as: Qlog(q) = v*a where q = [cos(a),v*sin(a)]

Parameters:q – Quaternion to perform log on
Returns:Result of logarithm
static HQuat Qexp(HQuat const &q)

Qexp(v*a) = [cos(a),vsin(a)]

Parameters:q – Quaternion to perform exp on
Returns:Result of Exp
static HQuat Qlerp(HQuat const &q1, HQuat const &q2, float fraction)

Linear interpolation between two HQuats

Parameters:
  • q1 – First Quaternion for Interpolation
  • q2 – Second Quaternion for Interpolation
  • fraction – Interpolation Distance (0 - 1)
Returns:

Result of interplation

static HQuat Qslerp(HQuat const &q1, HQuat const &q2, float fraction)

Spherical interpolation between two HQuats

Parameters:
  • q1 – First Quaternion for Interpolation
  • q2 – Second Quaternion for Interpolation
  • fraction – Interpolation Distance (0 - 1)
Returns:

Result of interplation

static HQuat QslerpNoInvert(HQuat const &q1, HQuat const &q2, float fraction)

Spherical interpolation between two HQuats This version of slerp, used by squad, does not check for theta > 90.

Parameters:
  • q1 – First Quaternion for Interpolation
  • q2 – Second Quaternion for Interpolation
  • fraction – Interpolation Distance (0 - 1)
Returns:

Result of interplation

static HQuat QslerpNoInvertExtraSpins(HQuat const &q1, HQuat const &q2, float fraction, int ExtraSpins)

Spherical interpolation between two HQuats This version of slerp, used by squad, does not check for theta > 90.

Parameters:
  • q1 – First Quaternion for Interpolation
  • q2 – Second Quaternion for Interpolation
  • fraction – Interpolation Distance (0 - 1)
Returns:

Result of interplation

static HQuat Qsquad(HQuat const &q1, HQuat const &q2, HQuat const &a, HQuat const &b, float fraction)

Spherical cubic interpolation between two HQuats

Parameters:
  • q1 – First Quaternion for Interpolation
  • q2 – Second Quaternion for Interpolation
  • a – First Control Point
  • b – Second Control Point
  • fraction – Interpolation Distance (0 - 1)
Returns:

Result of interplation

static HQuat Qspline(HQuat const &qnm1, HQuat const &qn, HQuat const &qnp1)

Given 3 HQuats, qn-1,qn and qn+1, calculate a control point to be used in spline interpolation

Parameters:
  • qnm1 – qn-1 control point
  • qn – qn control point
  • qnp1 – qn + 1 control point
Returns:

Result of interplation

static HQuat MatrixToQuaternion(float matrix[])

Convert matrix to quaternion

Returns:converted quaternion

Friends

inline friend HQuat operator*(float v, HQuat const &q)

Multiplies a quaternion with a float value

Parameters:
  • v – Value to multiply Quaternion with
  • q – Quaternion to multiply with
Returns:

Result of multiplication