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 CQuaternionfoperator= (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 CQuaternionfoperator*= (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionfMul (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionfMul (const CQuaternionf &in_Quat1, const CQuaternionf &in_Quat2)
SICPPSDK_INLINE float Dot (const CQuaternionf &in_quat1) const
SICPPSDK_INLINE CQuaternionfSlerp (const CQuaternionf &in_quatStart, const CQuaternionf &in_quatEnd, const float in_fU)
SICPPSDK_INLINE CQuaternionfoperator-= (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionfSubInPlace (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionfSub (const CQuaternionf &in_Quat1, const CQuaternionf &in_Quat2)
SICPPSDK_INLINE CQuaternionfNegateInPlace ()
SICPPSDK_INLINE CQuaternionfNegate (const CQuaternionf &in_Quat)
SICPPSDK_INLINE float GetSquaredLength () const
SICPPSDK_INLINE float GetLength () const
SICPPSDK_INLINE CQuaternionfoperator+= (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionfAddInPlace (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionfAdd (const CQuaternionf &in_Quat1, const CQuaternionf &in_Quat2)
SICPPSDK_INLINE CQuaternionfConjugateInPlace ()
SICPPSDK_INLINE CQuaternionfConjugate (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionfInvertInPlace ()
SICPPSDK_INLINE CQuaternionfInvert (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionfSetIdentity ()
SICPPSDK_INLINE CQuaternionfCopy (const CQuaternionf &in_Quat)
SICPPSDK_INLINE CQuaternionfNormalizeInPlace ()
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 CQuaternionfSet (float in_W, float in_X, float in_Y, float in_Z)
SICPPSDK_INLINE CQuaternionfSet (const CVector3f &in_XYZVector)
SICPPSDK_INLINE CQuaternionfSet (const CVector4f &in_XYZWVector)
SICPPSDK_INLINE float GetValue (short in_nIndex) const
SICPPSDK_INLINE CQuaternionfSetValue (short in_nIndex, float newVal)
SICPPSDK_INLINE float GetW () const
SICPPSDK_INLINE CQuaternionfPutW (float newVal)
SICPPSDK_INLINE float GetZ () const
SICPPSDK_INLINE CQuaternionfPutZ (float newVal)
SICPPSDK_INLINE float GetY () const
SICPPSDK_INLINE CQuaternionfPutY (float newVal)
SICPPSDK_INLINE float GetX () const
SICPPSDK_INLINE CQuaternionfPutX (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_quaternionconstant 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_WW component
in_XX component of the quaternion's vector
in_YY component of the quaternion's vector
in_ZZ 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_vctVector containing the X, Y and Z values
SICPPSDK_INLINE CQuaternionf ( const CVector4f in_vct)

Constructor.

Parameters:
in_vctVector containing the X, Y, Z and W values

Member Function Documentation

SICPPSDK_INLINE CQuaternionf & operator= ( const CQuaternionf in_quaternion)

Assignment operator.

Parameters:
in_quaternionconstant 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_QuatQuaternion 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_quatQuaternion to compare against.
in_fEpsilonTolerance 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_QuatQuaternion 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_QuatCQuaternionf 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_QuatQuaternion 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_QuatQuaternion 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_Quat1First quaternion
in_Quat2Second 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_quat1Quaternion 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_quatStartStarting unitary quaternion.
in_quatEndEnding unitary quaternion.
in_fUInterpolation 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_QuatQuaternion 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_QuatQuaternion 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_Quat1First quaternion
in_Quat2Second 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_QuatQuaternion 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_QuatQuaternion to add
See also:
CQuaternionf::AddInPlace, CQuaternionf::Add
SICPPSDK_INLINE CQuaternionf & AddInPlace ( const CQuaternionf in_Quat)

Adds a quaternion to this quaternion.

Parameters:
in_QuatQuaternion 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_Quat1First quaternion
in_Quat2Second 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_QuatQuaternion 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_QuatQuaternion 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_QuatQuaternion 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_WThe current value of the W component
out_XThe current value of the X component
out_YThe current value of the Y component
out_ZThe 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_XYZWVectorVector 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_WNew value for the W component
in_XNew value for the X component
in_YNew value for the Y component
in_ZNew 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_XYZVectorVector 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_XYZWVectorVector 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_nIndex0-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_nIndex0-based index of the component to set. This value can be 0 (W), 1(X), 2(Y) or 3(Z).
newValnew 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:
newValThe 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:
newValThe 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:
newValThe 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:
newValThe 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_quatOperand quaternion.
Returns:
true if equal else false.
See also:
CQuaternionf::Equals

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