GLM_EXT_quaternion_common
Stable extensions

## Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > | conjugate (qua< T, Q > const &q)
| Returns the q conjugate. More...
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > | inverse (qua< T, Q > const &q)
| Returns the q inverse. More...
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > | isinf (qua< T, Q > const &x)
| Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations. More...
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > | isnan (qua< T, Q > const &x)
| Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations. More...
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > | lerp (qua< T, Q > const &x, qua< T, Q > const &y, T a)
| Linear interpolation of two quaternions. More...
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > | mix (qua< T, Q > const &x, qua< T, Q > const &y, T a)
| Spherical linear interpolation of two quaternions. More...
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > | slerp (qua< T, Q > const &x, qua< T, Q > const &y, T a)
| Spherical linear interpolation of two quaternions. More...
template<typename T , typename S , qualifier Q>
GLM_FUNC_DECL qua< T, Q > | slerp (qua< T, Q > const &x, qua< T, Q > const &y, T a, S k)
| Spherical linear interpolation of two quaternions with multiple spins over rotation axis. More...

## Detailed Description

Provides common functions for quaternion types

Include <glm/ext/quaternion_common.hpp> to use the features of this extension.

See also
  GLM_EXT_scalar_common
  GLM_EXT_vector_common
  GLM_EXT_quaternion_float
  GLM_EXT_quaternion_double
  GLM_EXT_quaternion_exponential
  GLM_EXT_quaternion_geometric
  GLM_EXT_quaternion_relational
  GLM_EXT_quaternion_trigonometric
  GLM_EXT_quaternion_transform

## Function Documentation

## conjugate()

GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> glm::conjugate | ( | qua< T, Q > const & | q | ) |

Returns the q conjugate.

Template Parameters

  T | A floating-point scalar type
  Q | A value from qualifier enum

## inverse()

GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> glm::inverse | ( | qua< T, Q > const & | q | ) |

Returns the q inverse.

Template Parameters

  T | A floating-point scalar type
  Q | A value from qualifier enum

## isinf()

GLM_FUNC_DECL vec<4, bool, Q> glm::isinf | ( | qua< T, Q > const & | x | ) |

Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations.

Returns false otherwise, including for implementations with no infinity representations.

Template Parameters

  T | A floating-point scalar type
  Q | A value from qualifier enum

## isnan()

GLM_FUNC_DECL vec<4, bool, Q> glm::isnan | ( | qua< T, Q > const & | x | ) |

Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations.

Returns false otherwise, including for implementations with no NaN representations.

/!\ When using compiler fast math, this function may fail.

Template Parameters

  T | A floating-point scalar type
  Q | A value from qualifier enum

## lerp()

GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> glm::lerp | ( | qua< T, Q > const & | x,
|  | qua< T, Q > const & | y,
|  | T | a
| ) |  |

Linear interpolation of two quaternions.

The interpolation is oriented.

Parameters

  x | A quaternion
  y | A quaternion
  a | Interpolation factor. The interpolation is defined in the range [0, 1].

Template Parameters

  T | A floating-point scalar type
  Q | A value from qualifier enum

## mix()

GLM_FUNC_DECL qua<T, Q> glm::mix | ( | qua< T, Q > const & | x,
|  | qua< T, Q > const & | y,
|  | T | a
| ) |  |

Spherical linear interpolation of two quaternions.

The interpolation is oriented and the rotation is performed at constant speed. For short path spherical linear interpolation, use the slerp function.

Parameters

  x | A quaternion
  y | A quaternion
  a | Interpolation factor. The interpolation is defined beyond the range [0, 1].

Template Parameters

  T | A floating-point scalar type
  Q | A value from qualifier enum

See also
  - slerp(qua<T, Q> const& x, qua<T, Q> const& y, T const& a)

## slerp() [1/2]

GLM_FUNC_DECL qua<T, Q> glm::slerp | ( | qua< T, Q > const & | x,
|  | qua< T, Q > const & | y,
|  | T | a
| ) |  |

Spherical linear interpolation of two quaternions.

The interpolation always take the short path and the rotation is performed at constant speed.

Parameters

  x | A quaternion
  y | A quaternion
  a | Interpolation factor. The interpolation is defined beyond the range [0, 1].

Template Parameters

  T | A floating-point scalar type
  Q | A value from qualifier enum

## slerp() [2/2]

GLM_FUNC_DECL qua<T, Q> glm::slerp | ( | qua< T, Q > const & | x,
|  | qua< T, Q > const & | y,
|  | T | a,
|  | S | k
| ) |  |

Spherical linear interpolation of two quaternions with multiple spins over rotation axis.

The interpolation always take the short path when the spin count is positive and long path when count is negative. Rotation is performed at constant speed.

Parameters

  x | A quaternion
  y | A quaternion
  a | Interpolation factor. The interpolation is defined beyond the range [0, 1].
  k | Additional spin count. If Value is negative interpolation will be on "long" path.

Template Parameters

  T | A floating-point scalar type
  S | An integer scalar type
  Q | A value from qualifier enum