Public Member Functions
CQuaternionf Class Reference

## Detailed Description

Implementation of a float quaternion q=a+bi+cj+dk. This class is typically used for implementing custom ICE nodes.

A quaternion is often noted q=(s,v) where s is a scalar and v is a 3D vector, or either noted q=(W,X,Y,Z), where W, X, Y and Z are scalar, and X, Y and Z are the components of vector v in previous notation.

See also:
  CRotation3f

`#include <xsi_quaternionf.h>`

List of all members.

## Public Member Functions
SICPPSDK_INLINE | CQuaternionf ()
SICPPSDK_INLINE | CQuaternionf (const CQuaternionf &in_quaternion)
| ~CQuaternionf ()
SICPPSDK_INLINE CQuaternionf & | operator= (const CQuaternionf &in_quaternion)
SICPPSDK_INLINE | CQuaternionf (const float in_W, const float in_X, const float in_Y, const float in_Z)
SICPPSDK_INLINE | CQuaternionf (const CVector3f &in_vct)
SICPPSDK_INLINE | CQuaternionf (const CVector4f &in_vct)
SICPPSDK_INLINE bool | Equals (const CQuaternionf &in_Quat) const
SICPPSDK_INLINE bool | EpsilonEquals (const CQuaternionf &in_quat, const float in_fEpsilon) const
SICPPSDK_INLINE bool | operator== (const CQuaternionf &in_Quat) const
SICPPSDK_INLINE bool | operator< (const CQuaternionf &in_Quat) const
SICPPSDK_INLINE CQuaternionf & | operator*= (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionf & | Mul (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionf & | Mul (const CQuaternionf &in_Quat1, const CQuaternionf &in_Quat2)
SICPPSDK_INLINE float | Dot (const CQuaternionf &in_quat1) const
SICPPSDK_INLINE CQuaternionf & | Slerp (const CQuaternionf &in_quatStart, const CQuaternionf &in_quatEnd, const float in_fU)
SICPPSDK_INLINE CQuaternionf & | operator-= (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionf & | SubInPlace (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionf & | Sub (const CQuaternionf &in_Quat1, const CQuaternionf &in_Quat2)
SICPPSDK_INLINE CQuaternionf & | NegateInPlace ()
SICPPSDK_INLINE CQuaternionf & | Negate (const CQuaternionf &in_Quat)
SICPPSDK_INLINE float | GetSquaredLength () const
SICPPSDK_INLINE float | GetLength () const
SICPPSDK_INLINE CQuaternionf & | operator+= (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionf & | AddInPlace (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionf & | Add (const CQuaternionf &in_Quat1, const CQuaternionf &in_Quat2)
SICPPSDK_INLINE CQuaternionf & | ConjugateInPlace ()
SICPPSDK_INLINE CQuaternionf & | Conjugate (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionf & | InvertInPlace ()
SICPPSDK_INLINE CQuaternionf & | Invert (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionf & | SetIdentity ()
SICPPSDK_INLINE CQuaternionf & | Copy (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionf & | NormalizeInPlace ()
SICPPSDK_INLINE void | Get (float &out_W, float &out_X, float &out_Y, float &out_Z) const
SICPPSDK_INLINE CVector3f | GetVector3 () const
SICPPSDK_INLINE CVector4f | GetVector4 () const
SICPPSDK_INLINE void | Get (CVector4f &io_XYZWVector) const
SICPPSDK_INLINE CQuaternionf & | Set (float in_W, float in_X, float in_Y, float in_Z)
SICPPSDK_INLINE CQuaternionf & | Set (const CVector3f &in_XYZVector)
SICPPSDK_INLINE CQuaternionf & | Set (const CVector4f &in_XYZWVector)
SICPPSDK_INLINE float | GetValue (short in_nIndex) const
SICPPSDK_INLINE CQuaternionf & | SetValue (short in_nIndex, float newVal)
SICPPSDK_INLINE float | GetW () const
SICPPSDK_INLINE CQuaternionf & | PutW (float newVal)
SICPPSDK_INLINE float | GetZ () const
SICPPSDK_INLINE CQuaternionf & | PutZ (float newVal)
SICPPSDK_INLINE float | GetY () const
SICPPSDK_INLINE CQuaternionf & | PutY (float newVal)
SICPPSDK_INLINE float | GetX () const
SICPPSDK_INLINE CQuaternionf & | PutX (float newVal)
SICPPSDK_INLINE bool | operator!= (const CQuaternionf &in_quat) const

## Constructor & Destructor Documentation

SICPPSDK_INLINE CQuaternionf | ( |  | ) |

Default constructor. Constructs the identity quaternion.

See also:
  CQuaternionf::SetIdentity

SICPPSDK_INLINE CQuaternionf | ( | const CQuaternionf & | in_quaternion | ) |

Copy constructor.

Parameters:

  in_quaternion | constant class object.

~CQuaternionf | ( |  | ) | `[inline]`

Default destructor.

SICPPSDK_INLINE CQuaternionf | ( | const float | in_W,
|  | const float | in_X,
|  | const float | in_Y,
|  | const float | in_Z
| ) |  |

Constructor.

Parameters:

  in_W | W component
  in_X | X component of the quaternion's vector
  in_Y | Y component of the quaternion's vector
  in_Z | Z component of the quaternion's vector

SICPPSDK_INLINE CQuaternionf | ( | const CVector3f & | in_vct | ) |

Constructor.

Note:
  The W component of the quaternion will be set to 1.0

Parameters:

  in_vct | Vector containing the X, Y and Z values

SICPPSDK_INLINE CQuaternionf | ( | const CVector4f & | in_vct | ) |

Constructor.

Parameters:

  in_vct | Vector containing the X, Y, Z and W values

## Member Function Documentation

SICPPSDK_INLINE CQuaternionf & operator= | ( | const CQuaternionf & | in_quaternion | ) |

Assignment operator.

Parameters:

  in_quaternion | constant class object.

Returns:
  This quaternion

SICPPSDK_INLINE bool Equals | ( | const CQuaternionf & | in_Quat | ) | const

Performs an exact comparison of two quaternions.

Note:
  Each parameter of both quaternions must be exactly the same fora match.

Parameters:

  in_Quat | Quaternion to compare against

See also:
  CQuaternionf::EpsilonEquals

SICPPSDK_INLINE bool EpsilonEquals | ( | const CQuaternionf & | in_quat,
|  | const float | in_fEpsilon
| ) |  | const

Performs comparison between this quaternion and the `in_quat1` quaternion within the specified epsilon value.

Parameters:

  in_quat | Quaternion to compare against.
  in_fEpsilon | Tolerance value (validity domain: `[0, +INF[`)

See also:
  CQuaternionf::Equals

SICPPSDK_INLINE bool operator== | ( | const CQuaternionf & | in_Quat | ) | const

Performs a comparison.

Note:
  Each parameter of both quaternions must be exactly the same for a match.

Parameters:

  in_Quat | Quaternion to compare against

See also:
  CQuaternionf::EpsilonEquals, CQuaternionf::Equals

SICPPSDK_INLINE bool operator< | ( | const CQuaternionf & | in_Quat | ) | const

Less than operator. Performs a comparison with a specified CQuaternionf to determine if this CQuaternionf is less than the specified CQuaternionf. The comparison is arbitrary and not geometrically meaningful, it's only purpose is to make CQuaternionf compliant with stl for sorting operations.

Parameters:

  in_Quat | CQuaternionf to compare.

Returns:
  true if this CQuaternionf is less than the specified CQuaternionf, false otherwise.

Since:
  7.5

SICPPSDK_INLINE CQuaternionf & operator*= | ( | const CQuaternionf & | in_Quat | ) |

Multiplies this quaternion with another one in place.

Parameters:

  in_Quat | Quaternion to multiply

Returns:
  This quaternion

See also:
  CQuaternionf::Mul, CQuaternionf::MulInPlace

SICPPSDK_INLINE CQuaternionf & Mul | ( | const CQuaternionf & | in_Quat | ) |

Multiplies this quaternion with another one in place.

Parameters:

  in_Quat | Quaternion to multiply

Returns:
  This quaternion

See also:
  CQuaternionf::Mul

SICPPSDK_INLINE CQuaternionf & Mul | ( | const CQuaternionf & | in_Quat1,
|  | const CQuaternionf & | in_Quat2
| ) |  |

Stores the result of the multiplication of two quaternions.

Parameters:

  in_Quat1 | First quaternion
  in_Quat2 | Second quaternion

Returns:
  This quaternion

SICPPSDK_INLINE float Dot | ( | const CQuaternionf & | in_quat1 | ) | const

Performs the dot product between this quaternion and the one specified in `in_quat1`.

Parameters:

  in_quat1 | Quaternion operand.

Returns:
  This quaternion

SICPPSDK_INLINE CQuaternionf & Slerp | ( | const CQuaternionf & | in_quatStart,
|  | const CQuaternionf & | in_quatEnd,
|  | const float | in_fU
| ) |  |

Performs the spherical linear interpolation of two unit quaternions into this one for u between 0 and 1.

Parameters:

  in_quatStart | Starting unitary quaternion.
  in_quatEnd | Ending unitary quaternion.
  in_fU | Interpolation factor (validity domain: `[0.0, 1.0]`)

Returns:
  This quaternion.

SICPPSDK_INLINE CQuaternionf & operator-= | ( | const CQuaternionf & | in_Quat | ) |

Subtracts a quaternion from the current quaternion in place.

Parameters:

  in_Quat | Quaternion to subtract

Returns:
  This quaternion

See also:
  CQuaternionf::SubInPlace, CQuaternionf::Sub

SICPPSDK_INLINE CQuaternionf & SubInPlace | ( | const CQuaternionf & | in_Quat | ) |

Subtracts a quaternion from the current quaternion in place.

Parameters:

  in_Quat | Quaternion to subtract

Returns:
  This quaternion

See also:
  CQuaternionf::Sub

SICPPSDK_INLINE CQuaternionf & Sub | ( | const CQuaternionf & | in_Quat1,
|  | const CQuaternionf & | in_Quat2
| ) |  |

Stores the result of the subtraction of two quaternions.

Parameters:

  in_Quat1 | First quaternion
  in_Quat2 | Second quaternion

Returns:
  This quaternion

See also:
  CQuaternionf::SubInPlace

SICPPSDK_INLINE CQuaternionf & NegateInPlace | ( |  | ) |

Negates all the components of this quaternion.

Returns:
  This quaternion

See also:
  CQuaternionf::Negate

SICPPSDK_INLINE CQuaternionf & Negate | ( | const CQuaternionf & | in_Quat | ) |

Stores the result of the negation of a given quaternion without changing it.

Parameters:

  in_Quat | Quaternion to negate

Returns:
  This quaternion

See also:
  CQuaternionf::NegateInPlace

SICPPSDK_INLINE float GetSquaredLength | ( |  | ) | const

Returns the squared length of this quaternion.

Returns:
  The squared length

See also:
  CQuaternionf::GetLength

SICPPSDK_INLINE float GetLength | ( |  | ) | const

Returns the length of this quaternion.

Returns:
  Length of this quaternion

See also:
  CQuaternionf::GetSquaredLength

SICPPSDK_INLINE CQuaternionf & operator+= | ( | const CQuaternionf & | in_Quat | ) |

Adds a quaternion to this quaternion.

Parameters:

  in_Quat | Quaternion to add

See also:
  CQuaternionf::AddInPlace, CQuaternionf::Add

SICPPSDK_INLINE CQuaternionf & AddInPlace | ( | const CQuaternionf & | in_Quat | ) |

Adds a quaternion to this quaternion.

Parameters:

  in_Quat | Quaternion to add

See also:
  CQuaternionf::Add

SICPPSDK_INLINE CQuaternionf & Add | ( | const CQuaternionf & | in_Quat1,
|  | const CQuaternionf & | in_Quat2
| ) |  |

Stores the result of the addition of two quaternions.

Parameters:

  in_Quat1 | First quaternion
  in_Quat2 | Second quaternion

Returns:
  This quaternion

See also:
  CQuaternionf::AddInPlace

SICPPSDK_INLINE CQuaternionf & ConjugateInPlace | ( |  | ) |

Conjugates this quaternion.

Returns:
  This quaternion

See also:
  CQuaternionf::ConjugateInPlace

SICPPSDK_INLINE CQuaternionf & Conjugate | ( | const CQuaternionf & | in_Quat | ) |

Stores the conjugate of a quaternion without changing it.

Parameters:

  in_Quat | Quaternion to conjugate.

Returns:
  This quaternion

See also:
  CQuaternionf::ConjugateInPlace

SICPPSDK_INLINE CQuaternionf & InvertInPlace | ( |  | ) |

Inverts this quaternion.

Returns:
  This quaternion

See also:
  CQuaternionf::Invert

SICPPSDK_INLINE CQuaternionf & Invert | ( | const CQuaternionf & | in_Quat | ) |

Stores the invert of a quaternion without changing it.

Parameters:

  in_Quat | Quaternion to invert

Returns:
  This quaternion

See also:
  CQuaternionf::Invert

SICPPSDK_INLINE CQuaternionf & SetIdentity | ( |  | ) |

Sets this quaternion to identity quaternion.

Returns:
  This quaternion

SICPPSDK_INLINE CQuaternionf & Copy | ( | const CQuaternionf & | in_Quat | ) |

Copies the content of a quaternion.

Parameters:

  in_Quat | Quaternion to copy

Returns:
  This quaternion

SICPPSDK_INLINE CQuaternionf & NormalizeInPlace | ( |  | ) |

Normalizes the quaternion in place.

Returns:
  CStatus::OK if the normalization has been computed.

SICPPSDK_INLINE void Get | ( | float & | out_W,
|  | float & | out_X,
|  | float & | out_Y,
|  | float & | out_Z
| ) |  | const

Returns the components of this quaternion.

Return values:

  out_W | The current value of the W component
  out_X | The current value of the X component
  out_Y | The current value of the Y component
  out_Z | The current value of the Z component

SICPPSDK_INLINE CVector3f GetVector3 | ( |  | ) | const

Returns the components of this quaternion.

Returns:
  CVector3f that holds the values of the X, Y and Z components.

SICPPSDK_INLINE CVector4f GetVector4 | ( |  | ) | const

Returns the components of this quaternion.

Returns:
  CVector4f that holds the values of the X, Y, Z, W components.

SICPPSDK_INLINE void Get | ( | CVector4f & | io_XYZWVector | ) | const

Returns the components of this quaternion.

Parameters:

  io_XYZWVector | Vector that holds the values of the X, Y, Z and W components

SICPPSDK_INLINE CQuaternionf & Set | ( | float | in_W,
|  | float | in_X,
|  | float | in_Y,
|  | float | in_Z
| ) |  |

Sets the quaternion's components.

Parameters:

  in_W | New value for the W component
  in_X | New value for the X component
  in_Y | New value for the Y component
  in_Z | New value for the Z component

Returns:
  This quaternion

SICPPSDK_INLINE CQuaternionf & Set | ( | const CVector3f & | in_XYZVector | ) |

Sets the quaternion's components.

Note:
  The W value is left as is.

Parameters:

  in_XYZVector | Vector that holds the new values for the X, Y and Z components

Returns:
  This quaternion

SICPPSDK_INLINE CQuaternionf & Set | ( | const CVector4f & | in_XYZWVector | ) |

Sets the quaternion's components.

Parameters:

  in_XYZWVector | Vector that holds the new values for the X, Y and Z components. The W component is set to 1.0.

Returns:
  This quaternion

SICPPSDK_INLINE float GetValue | ( | short | in_nIndex | ) | const

Gets the value of a single component.

Parameters:

  in_nIndex | 0-based index of the component to get. This value can be 0 (W), 1(X), 2(Y) or 3(Z).

Returns:
  The requested value
  0.0 if an invalid index was provided.

See also:
  CQuaternionf::SetValue

SICPPSDK_INLINE CQuaternionf & SetValue | ( | short | in_nIndex,
|  | float | newVal
| ) |  |

Sets the value of a single component.

Note:
  The quaternion is unchanged if the provided index is invalid

Parameters:

  in_nIndex | 0-based index of the component to set. This value can be 0 (W), 1(X), 2(Y) or 3(Z).
  newVal | new value

Returns:
  This quaternion

See also:
  CQuaternionf::SetValue

SICPPSDK_INLINE float GetW | ( |  | ) | const

Returns the W component.

Returns:
  The W component

SICPPSDK_INLINE CQuaternionf & PutW | ( | float | newVal | ) |

Sets the W component.

Parameters:

  newVal | The new value for the component

Returns:
  This quaternion

SICPPSDK_INLINE float GetZ | ( |  | ) | const

Returns the Z component.

Returns:
  The Z component

SICPPSDK_INLINE CQuaternionf & PutZ | ( | float | newVal | ) |

Sets the Z component.

Parameters:

  newVal | The new value for the component

Returns:
  This quaternion

SICPPSDK_INLINE float GetY | ( |  | ) | const

Returns the Y component.

Returns:
  The Y component

SICPPSDK_INLINE CQuaternionf & PutY | ( | float | newVal | ) |

Sets the Y component.

Parameters:

  newVal | The new value for the component

Returns:
  This quaternion

SICPPSDK_INLINE float GetX | ( |  | ) | const

Returns the X component.

Returns:
  The X component

SICPPSDK_INLINE CQuaternionf & PutX | ( | float | newVal | ) |

Sets the X component.

Parameters:

  newVal | The new value for the component

Returns:
  This quaternion

SICPPSDK_INLINE bool operator!= | ( | const CQuaternionf & | in_quat | ) | const

Inequality operator (tests the strict inequality of this quaternion with the quaternion in_quat).

Parameters:

  in_quat | Operand quaternion.

Returns:
  true if equal else false.

See also:
  CQuaternionf::Equals

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

- xsi_quaternionf.h