# CSIBCRotationd Class Reference

Class representing a generic rotation object. More...

`#include <SIBCRotationd.h>`

List of all members.

## Public Member Functions
| CSIBCRotationd ()
| CSIBCRotationd (const CSIBCQuaterniond &in_quat)
| CSIBCRotationd (const CSIBCRotMatd &in_matRot)
| CSIBCRotationd (const CSIBCVector3Dd &in_vctXYZAngles)
| CSIBCRotationd (double in_dX, double in_dY, double in_dZ)
| CSIBCRotationd (const E3DAxisType in_axis, const double in_dAngle)
| CSIBCRotationd (const CSIBCVector3Dd &in_vctAxis, const double in_dAngle)
| CSIBCRotationd (const CSIBCVector3Dd &in_vctFrom, const CSIBCVector3Dd &in_vctTo)
CSIBCRotationd & | SetIdentity ()
bool | IsIdentity ()
bool | IsAlmostIdentity (const double &in_rdTolerance=PICO_EPS) const
CSIBCQuaterniond & | GetQuat (CSIBCQuaterniond &out_quat)
const CSIBCRotMatd * | GetMatrix ()
CSIBCRotMatd & | GetMatrix (CSIBCRotMatd &out_matRot)
CSIBCVector3Dd & | GetXYZAngles (CSIBCVector3Dd &out_vctXYZAngles)
void | GetXYZAngles (double &out_dX, double &out_dY, double &out_dZ)
void | GetAxisAngle (CSIBCVector3Dd &out_vctAxis, double &out_dAngle)
CSIBCRotationd & | Set (const CSIBCRotationd &in_rot)
CSIBCRotationd & | Set (const CSIBCQuaterniond &in_quat)
CSIBCRotationd & | Set (const CSIBCRotMatd &in_matRot)
CSIBCRotationd & | Set (const CSIBCVector3Dd &in_vctXYZAngles)
CSIBCRotationd & | Set (double in_dX, double in_dY, double in_dZ)
CSIBCRotationd & | Set (const E3DAxisType in_axis, const double in_dAngle)
CSIBCRotationd & | Set (const CSIBCVector3Dd &in_vctAxis, const double in_dAngle)
bool | Set (const CSIBCVector3Dd &in_vctFrom, const CSIBCVector3Dd &in_vctTo, int &out_bFlip)
CSIBCRotationd & | Set (const CSIBCVector3Dd &in_vctX, const CSIBCVector3Dd &in_vctY, const CSIBCVector3Dd &in_vctZ)
bool | MinAlignToX (const CSIBCVector3Dd &in_vct, int &out_bFlip)
bool | MinAlignToY (const CSIBCVector3Dd &in_vct, int &out_bFlip)
bool | MinAlignToZ (const CSIBCVector3Dd &in_vct, int &out_bFlip)
bool | AlignToX (const CSIBCVector3Dd &in_vct, int &out_bFlip)
bool | AlignToY (const CSIBCVector3Dd &in_vct, int &out_bFlip)
bool | AlignToZ (const CSIBCVector3Dd &in_vct, int &out_bFlip)
bool | AlignAxesToVct (const E3DAxisType in_eFirstAxis, const CSIBCVector3Dd &in_vct1, const E3DAxisType in_eSecondAxis, const CSIBCVector3Dd &in_vct2, int &out_bFlip)
CSIBCRotationd & | Mul (CSIBCRotationd &in_rot1, CSIBCRotationd &in_rot2)
CSIBCRotationd & | Mul (CSIBCRotationd &in_rot)
CSIBCRotationd & | LeftMul (CSIBCRotationd &in_rot)
CSIBCRotationd & | MulUsingEulerAnglesTarget (CSIBCRotationd &in_rot1, CSIBCRotationd &in_rot2, CSIBCVector3Dd &in_oEulerAngles)
CSIBCRotationd & | MulAndUpdateEulerAngles (CSIBCRotationd &in_rot1, CSIBCRotationd &in_rot2, ULONG in_ulUseRot1OrUseRot2AsTarget)
CSIBCRotationd & | Invert (CSIBCRotationd &in_rot)
CSIBCRotationd & | Invert ()
CSIBCRotationd & | Interpolate (CSIBCRotationd &in_rot1, CSIBCRotationd &in_rot2, const double in_dU)
CSIBCVector3Dd & | RotateVct (const CSIBCVector3Dd &in_vct, CSIBCVector3Dd &out_vct)
void | RotateVct (const CSIBCVector3Dd *in_vcts, const LONG in_lNbVcts, CSIBCVector3Dd *out_vcts)
CSIBCVector3Dd & | InvRotateVct (const CSIBCVector3Dd &in_vct, CSIBCVector3Dd &out_vct)
void | InvRotateVct (const CSIBCVector3Dd *in_vcts, const LONG in_lNbVcts, CSIBCVector3Dd *out_vcts)
bool | operator== (const CSIBCRotationd &in_rot) const
bool | operator!= (const CSIBCRotationd &in_rot) const
## Friends
CSIBCVector3Dd & | MapDirSpaceToWorld (CSIBCRotationd &in_rotFrom, const CSIBCVector3Dd &in_vctDir, CSIBCVector3Dd &out_vctDir)
CSIBCVector3Dd & | MapDirWorldToSpace (CSIBCRotationd &in_rotTo, const CSIBCVector3Dd &in_vctDir, CSIBCVector3Dd &out_vctDir)
CSIBCVector3Dd & | MapDirSpaceToSpace (CSIBCRotationd &in_rotFrom, CSIBCRotationd &in_rotTo, const CSIBCVector3Dd &in_vctDir, CSIBCVector3Dd &out_vctDir)
bool | AreAlmostEqual (const CSIBCRotationd &in_rot1, const CSIBCRotationd &in_rot2, const double in_dEpsilon=PICO_EPS)

## Detailed Description

Class representing a generic rotation object.

This class is a generic method for representing rotations. It provides a method for representing a rotation without relying on it specific representation. It acts as an interface between different methods of storing rotations. For all operations on rotation objects, double-precision floating point numbers are used. Several useful functions for rotations can be found in Utility functions for angles and rotations.

There are several different specific methods used to store rotations, such as: rotation matricies as in CSIBCRotMatd, quaternions as in CSIBCQuaternion and CSIBCQuaterniond, euler angles, rotations about axis, etc.

## Constructor & Destructor Documentation

CSIBCRotationd | ( |  | ) |

Default Constructor. Creates a rotation object representing the identity rotation.

See also:
  CSIBCRotationd::SetIdentity

CSIBCRotationd | ( | const CSIBCQuaterniond & | in_quat | ) |

Constructs a rotation object representing the rotation given by the quaternion `in_quat`.

Parameters:

  | in_quat | Quaternion representing the rotation for the new rotation object.

CSIBCRotationd | ( | const CSIBCRotMatd & | in_matRot | ) |

Constructs a rotation object representing the rotation given by the rotation matrix `in_matRot`.

Parameters:

  | in_matRot | Rotation matrix representing the rotation for the new rotation object.

CSIBCRotationd | ( | const CSIBCVector3Dd & | in_vctXYZAngles | ) |

Constructs a rotation object representing the rotation given by the set of euler angles (pitch-roll-yaw) `in_vctXYZAngles`.

Parameters:

  | in_vctXYZAngles | Set of euler angles representing the rotation for the new rotation object.

CSIBCRotationd | ( | double | in_dX,
|  | double | in_dY,
|  | double | in_dZ |
| ) |  |  |

Constructs a rotation object representing the rotation given by the set of euler angles (pitch-roll-yaw) in `in_dX`, `in_dY` and `in_dZ`.

Parameters:

  | in_dX | The euler angle containing the pitch angle (in radians).
  | in_dY | The euler angle containing the roll angle (in radians).
  | in_dZ | The euler angle containing the yaw angle (in radians).

CSIBCRotationd | ( | const E3DAxisType | in_axis,
|  | const double | in_dAngle |
| ) |  |  |

Constructs a rotation object representing the rotation given by the rotation of `in_dAngle` radians about one of the major axis, determined by `in_axis`.

Parameters:

  | in_axis | Major axis of rotation.
  | in_dAngle | Angle of rotation about the given major axis (in radians).

CSIBCRotationd | ( | const CSIBCVector3Dd & | in_vctAxis,
|  | const double | in_dAngle |
| ) |  |  |

Constructs a rotation object representing the rotation given by the rotation of `in_dAngle` radians about an arbitrary axis, `in_vctAxis`.

Parameters:

  | in_vctAxis | Axis of rotation.
  | in_dAngle | Angle of rotation about the given axis (in radians).

CSIBCRotationd | ( | const CSIBCVector3Dd & | in_vctFrom,
|  | const CSIBCVector3Dd & | in_vctTo |
| ) |  |  |

Constructs a rotation object representing the rotation required to rotated `in_vctFrom` to `in_vctTo`.

Parameters:

  | in_vctFrom | Starting point of rotation.
  | in_vctTo | Ending point of rotation.

See also:
  CSIBCRotationd::Set(const CSIBCVector3Dd&, const CSIBCVector3Dd&, int&)

## Member Function Documentation

CSIBCRotationd& SetIdentity | ( |  | ) |

Set this rotation to the identity rotation (no rotation).

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::IsIdentity

  CSIBCRotationd::IsAlmostIdentity

bool IsIdentity | ( |  | ) |

Determines whether this rotation is the identity rotation (no rotation). Note that this function uses no floating-point error range, meaning that the rotation object must be exactly the identity rotation.

Returns:
  bool true if the rotation object is the identity rotation, false otherwise.

See also:
  CSIBCRotationd::IsAlmostIdentity

  CSIBCRotationd::SetIdentity

bool IsAlmostIdentity | ( | const double & | in_rdTolerance = `PICO_EPS` | ) | const

Determines whether this rotation is the identity rotation (no rotation). Since this function uses floating-point comparison, a threshhold value of `in_dEpsilon` is used for equality comparison.

Parameters:

  | in_dEpsilon | Floating-point comparison error range. Defaults to PICO_EPS.

Returns:
  bool true if the rotation object is the identity rotation, false otherwise.

See also:
  CSIBCRotationd::IsIdentity

  CSIBCRotationd::SetIdentity

CSIBCQuaterniond& GetQuat | ( | CSIBCQuaterniond & | out_quat | ) |

Gets the quaternion representation of this rotation object.

Parameters:

  | out_quat | Receives the quaternion representation of this object.

Returns:
  CISBCQuaterniond& Reference to `out_quat`.

See also:
  CSIBCRotationd::GetMatrix

  CSIBCRotationd::GetXYZAngles

  CSIBCRotationd::GetAxisAngles

const CSIBCRotMatd* GetMatrix | ( |  | ) |

Gets the rotation matrix representation of this rotation object. Note that the return value of this function should not be freed.

Returns:
  CSIBCRotMatd* Pointer to the rotation matrix representation of this rotation object.

See also:
  CSIBCRotationd::GetQuat

  CSIBCRotationd::GetMatrix

  CSIBCRotationd::GetXYZAngles

  CSIBCRotationd::GetAxisAngles

CSIBCRotMatd& GetMatrix | ( | CSIBCRotMatd & | out_matRot | ) |

Gets the rotation matrix representation of this rotation object.

Parameters:

  | out_matRot | Receives the rotation matrix representation of this rotation object.

Returns:
  CSIBCRotMatd& Reference to `out_matRot`.

See also:
  CSIBCRotationd::GetQuat

  CSIBCRotationd::GetMatrix

  CSIBCRotationd::GetXYZAngles

  CSIBCRotationd::GetAxisAngles

CSIBCVector3Dd& GetXYZAngles | ( | CSIBCVector3Dd & | out_vctXYZAngles | ) |

Gets the euler angles representation of this rotation object (pitch-roll-yaw, in radians).

Parameters:

  | out_vctXYZAngles | Receives the euler angles representation of this rotation object.

Returns:
  CSIBCVector3Dd& Reference to `out_vctXYZAngles`.

See also:
  CSIBCRotationd::GetXYZAngles

  CSIBCRotationd::GetQuat

  CSIBCRotationd::GetMatrix

  CSIBCRotationd::GetAxisAngles

void GetXYZAngles | ( | double & | out_dX,
|  | double & | out_dY,
|  | double & | out_dZ |
| ) |  |  |

Gets the euler angles representation of this rotation object (pitch-roll-yaw in radians).

Parameters:

  | out_dX | Receives the pitch euler angle representation of this rotation object.
  | out_dY | Receives the roll euler angle representation of this rotation object.
  | out_dZ | Receives the yaw euler angle representation of this rotation object.

See also:
  CSIBCRotationd::GetXYZAngles

  CSIBCRotationd::GetQuat

  CSIBCRotationd::GetMatrix

  CSIBCRotationd::GetAxisAngles

void GetAxisAngle | ( | CSIBCVector3Dd & | out_vctAxis,
|  | double & | out_dAngle |
| ) |  |  |

Gets the axis rotation representation of this rotation object.

Parameters:

  | out_vctAxis | Receives the arbitrary axis of rotation of this rotation object.
  | out_dAngle | Receives the angle of rotation (in radians) about the axis of rotation for this rotation object.

See also:
  CSIBCRotationd::GetXYZAngles

  CSIBCRotationd::GetQuat

  CSIBCRotationd::GetMatrix

CSIBCRotationd& Set | ( | const CSIBCRotationd & | in_rot | ) |

Sets this rotation object from another rotation object `in_rot`.

Parameters:

  | in_rot | Rotation object to set this object equal to.

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Set

CSIBCRotationd& Set | ( | const CSIBCQuaterniond & | in_quat | ) |

Sets this rotation object from a quaternionion, `in_quat`.

Parameters:

  | in_rot | Quaternion representing the rotation to set this object equal to.

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Set

CSIBCRotationd& Set | ( | const CSIBCRotMatd & | in_matRot | ) |

Sets this rotation object from a rotation matrix, `in_matRot`.

Parameters:

  | in_rot | Rotation matrix representing the rotation to set this object equal to.

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Set

CSIBCRotationd& Set | ( | const CSIBCVector3Dd & | in_vctXYZAngles | ) |

Sets this rotation object from a set of euler angles (pitch-roll-yaw, in radians), `in_vctXYZAngles`.

Parameters:

  | in_vctXYZAngles | Sets of euler angles representing the rotation to set this object equal to.

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Set

CSIBCRotationd& Set | ( | double | in_dX,
|  | double | in_dY,
|  | double | in_dZ |
| ) |  |  |

Sets this rotation object from a set of euler angles (pitch-roll-yaw, in radians), `in_dX`, `in_dY` and `in_dZ`.

Parameters:

  | in_dX | Pitch euler angle representing the rotation to set this object equal to.
  | in_dY | Roll euler angle representing the rotation to set this object equal to.
  | in_dZ | Yaw euler angle representing the rotation to set this object equal to.

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Set

CSIBCRotationd& Set | ( | const E3DAxisType | in_axis,
|  | const double | in_dAngle |
| ) |  |  |

Sets this rotation object from a rotation angle `in_dAngle` about a major axis given by `in_axis`.

Parameters:

  | in_axis | Axis of rotation.
  | in_dAngle | Angle of rotation about `in_axis` to set this rotation object equal to.

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Set

CSIBCRotationd& Set | ( | const CSIBCVector3Dd & | in_vctAxis,
|  | const double | in_dAngle |
| ) |  |  |

Sets this rotation object from a rotation angle `in_dAngle` about an arbitrary axis given by `in_vctAxis`.

Parameters:

  | in_vctAxis | Axis of rotation.
  | in_dAngle | Angle of rotation about `in_vctAxis` to set this rotation objecd equal to.

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Set

bool Set | ( | const CSIBCVector3Dd & | in_vctFrom,
|  | const CSIBCVector3Dd & | in_vctTo,
|  | int & | out_bFlip |
| ) |  |  |

Sets this object to a rotation that will rotate around the normal of the plane defined by the two given vectors `in_vctFrom` and `in_vctTo` (right-hand rule), with an angle defined by the angle between those two vectors.

Parameters:

  | in_vctFrom | Starting point of rotation.
  | in_vctTo | Ending point of rotation.
  | out_bFlip | Set to true if `in_vctFrom` and `in_vctTo` are diametrically opposed, in this case, an arbitrary rotation is chosen between `in_vctFrom` and `in_vctTo`, false otherwise.

Returns:
  bool true if the operation was successful and the rotation object was set, false if one or both of the input vectors is the null vector.

See also:
  CSIBCRotationd::Set

CSIBCRotationd& Set | ( | const CSIBCVector3Dd & | in_vctX,
|  | const CSIBCVector3Dd & | in_vctY,
|  | const CSIBCVector3Dd & | in_vctZ |
| ) |  |  |

Sets this rotation object to the rotation defined by the X, Y and Z axis of a rotation given by `in_vctX`, `in_vctY` and `in_vctZ` respectively. It is up to the user to ensure that the axis are unity vectors orthogonal to each other.

Parameters:

  | in_vctX | X-axis for the rotation to set this rotation object equal to.
  | in_vctY | Y-axis for the rotation to set this rotation object equal to.
  | in_vctZ | Z-axis for the rotation to set this rotation object equal to.

bool MinAlignToX | ( | const CSIBCVector3Dd & | in_vct,
|  | int & | out_bFlip |
| ) |  |  |

Sets this rotation object to align with a given X world axis, using the minimal angular displacement.

Parameters:

  | in_vct | X-axis for the world vector to align with.
  | out_bFlip | Set to true if the current rotation object is diametrically opposed to `in_vct`, and indicates that a sudden flip in the rotation object has occurred, false otherwise.

Returns:
  bool true if the alignment was successful, false if the input vector `in_vct` is the null vector.

See also:
  CSIBCRotationd::MinAlignToY

  CSIBCRotationd::MinAlignToZ

  CSIBCRotationd::AlignToX

  CSIBCRotationd::AlignAxesToVct

bool MinAlignToY | ( | const CSIBCVector3Dd & | in_vct,
|  | int & | out_bFlip |
| ) |  |  |

Sets this rotation object to align with a given Y world axis, using the minimal angular displacement.

Parameters:

  | in_vct | Y-axis for the world vector to align with.
  | out_bFlip | Set to true if the current rotation object is diametrically opposed to `in_vct`, and indicates that a sudden flip in the rotation object has occurred, false otherwise.

Returns:
  bool true if the alignment was successful, false if the input vector `in_vct` is the null vector.

See also:
  CSIBCRotationd::MinAlignToX

  CSIBCRotationd::MinAlignToZ

  CSIBCRotationd::AlignToY

  CSIBCRotationd::AlignAxesToVct

bool MinAlignToZ | ( | const CSIBCVector3Dd & | in_vct,
|  | int & | out_bFlip |
| ) |  |  |

Sets this rotation object to align with a given Z world axis, using the minimal angular displacement.

Parameters:

  | in_vct | Z-axis for the world vector to align with.
  | out_bFlip | Set to true if the current rotation object is diametrically opposed to `in_vct`, and indicates that a sudden flip in the rotation object has occurred, false otherwise.

Returns:
  bool true if the alignment was successful, false if the input vector `in_vct` is the null vector.

See also:
  CSIBCRotationd::MinAlignToX

  CSIBCRotationd::MinAlignToY

  CSIBCRotationd::AlignToZ

  CSIBCRotationd::AlignAxesToVct

bool AlignToX | ( | const CSIBCVector3Dd & | in_vct,
|  | int & | out_bFlip |
| ) |  |  |

Aligns this rotation object to align with a given X world axis.

Parameters:

  | in_vct | X-axis for the world vector to align with.
  | out_bFlip | Set to true if the current rotation object is diametrically opposed to `in_vct`, and indicates that a sudden flip in the rotation object has occurred, false otherwise.

Returns:
  bool true if the alignment was successful, false if the input vector `in_vct` is the null vector.

See also:
  CSIBCRotationd::AlignToY

  CSIBCRotationd::AlignToZ

  CSIBCRotationd::MinAlignToX

  CSIBCRotationd::AlignAxesToVct

bool AlignToY | ( | const CSIBCVector3Dd & | in_vct,
|  | int & | out_bFlip |
| ) |  |  |

Aligns this rotation object to align with a given Y world axis.

Parameters:

  | in_vct | Y-axis for the world vector to align with.
  | out_bFlip | Set to true if the current rotation object is diametrically opposed to `in_vct`, and indicates that a sudden flip in the rotation object has occurred, false otherwise.

Returns:
  bool true if the alignment was successful, false if the input vector `in_vct` is the null vector.

See also:
  CSIBCRotationd::AlignToX

  CSIBCRotationd::AlignToZ

  CSIBCRotationd::MinAlignToY

  CSIBCRotationd::AlignAxesToVct

bool AlignToZ | ( | const CSIBCVector3Dd & | in_vct,
|  | int & | out_bFlip |
| ) |  |  |

Aligns this rotation object to align with a given Z world axis.

Parameters:

  | in_vct | Z-axis for the world vector to align with.
  | out_bFlip | Set to true if the current rotation object is diametrically opposed to `in_vct`, and indicates that a sudden flip in the rotation object has occurred, false otherwise.

Returns:
  bool true if the alignment was successful, false if the input vector `in_vct` is the null vector.

See also:
  CSIBCRotationd::AlignToX

  CSIBCRotationd::AlignToY

  CSIBCRotationd::MinAlignToZ

  CSIBCRotationd::AlignAxesToVct

bool AlignAxesToVct | ( | const E3DAxisType | in_eFirstAxis,
|  | const CSIBCVector3Dd & | in_vct1,
|  | const E3DAxisType | in_eSecondAxis,
|  | const CSIBCVector3Dd & | in_vct2,
|  | int & | out_bFlip |
| ) |  |  |

Aligns this rotation object first with the major axis given by `in_eFirstAxis`, with an axis vector of `in_vct1`, then aligns the rotation object with the major axis given by `in_eSecondAxis`, with an axis vector of `in_vct2`.

Parameters:

  | in_eFirstAxis | The major axis of the first alignment.
  | in_vct1 | The world vector for the major axis defined by `in_eFirstAxis`.
  | in_eSecondAxis | The major axis of the secodn alignment.
  | in_vct2 | The world vector for the major axis defined by `in_eSecondAxis`.
  | out_bFlip | Set to true if the current rotation object is diametrically opposed to `in_vct1`, during the first alignment, or `in_vct2`, during the second alignment. If true, indicates that a sudden flip in the rotation object has occurred, false otherwise.

Returns:
  bool true if the alignment was successful, false if the alignment axes in `in_eFirstAxis` and `in_eSecondAxis` are the same.

See also:
  CSIBCRotationd::AlignToX

  CSIBCRotationd::AlignToY

  CSIBCRotationd::AlignToZ

CSIBCRotationd& Mul | ( | CSIBCRotationd & | in_rot1,
|  | CSIBCRotationd & | in_rot2 |
| ) |  |  |

Computes the multiplication of `in_rot1` and `in_rot2` (in_rot1 * in_rot2), and stores the result in this rotation object.

Parameters:

  | in_rot1 | First rotation object in the multiplication (on the left).
  | in_rot2 | Second rotation object in the multiplication (on the right).

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Mul

  CSIBCRotationd::LeftMul

  CSIBCRotationd::MulUsingEulerAnglesTarget

  CSIBCRotationd::MulAndUpdateEulerAngles

CSIBCRotationd& Mul | ( | CSIBCRotationd & | in_rot | ) |

Computes the multiplication of this rotation object and `in_rot` (this * in_rot), and stores the result in this rotation object.

Parameters:

  | in_rot | Rotation object in the multiplication (on the right).

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Mul

  CSIBCRotationd::LeftMul

  CSIBCRotationd::MulUsingEulerAnglesTarget

  CSIBCRotationd::MulAndUpdateEulerAngles

CSIBCRotationd& LeftMul | ( | CSIBCRotationd & | in_rot | ) |

Computes the multiplication of `in_rot` and this rotation object (in_rot * this), and stores the result in this rotation object.

Parameters:

  | in_rot | Rotation object in the multiplication (on the left).

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Mul

  CSIBCRotationd::LeftMul

  CSIBCRotationd::MulUsingEulerAnglesTarget

  CSIBCRotationd::MulAndUpdateEulerAngles

CSIBCRotationd& MulUsingEulerAnglesTarget | ( | CSIBCRotationd & | in_rot1,
|  | CSIBCRotationd & | in_rot2,
|  | CSIBCVector3Dd & | in_oEulerAngles |
| ) |  |  |

Computes the multiplication of `in_rot1` and `in_rot2` (in_rot1 * in_rot2), and stores the result in this rotation object. The result sets the euler angles associated with the resultant rotation object closest to the set of euler angles given by `in_oEulerAngles`.

Parameters:

  | in_rot1 | First rotation object in the multiplication (on the left).
  | in_rot2 | Second rotation object in the multiplication (on the right).
  | in_oEulerAngles | Euler angles most closely representing the desired euler angles (used only with euler angle extraction of this object).

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Mul

  CSIBCRotationd::LeftMul

  CSIBCRotationd::MulAndUpdateEulerAngles

CSIBCRotationd& MulAndUpdateEulerAngles | ( | CSIBCRotationd & | in_rot1,
|  | CSIBCRotationd & | in_rot2,
|  | ULONG | in_ulUseRot1OrUseRot2AsTarget |
| ) |  |  |

Computes the multiplication of `in_rot1` and `in_rot2` (in_rot1 * in_rot2), and stores the result in this rotation object. The result sets the euler angles associated with the resultant rotation object closest to the set of euler angles given by `in_rot1` or `in_rot2` depending on the value of `in_ulUseRot1OrUseRot2AsTarget`.

Parameters:

  | in_rot1 | First rotation object in the multiplication (on the left).
  | in_rot2 | Second rotation object in the multiplication (on the right).
  | in_ulUseRot1OrUseRot2AsTarget | If 1, uses `in_rot1` as the euler angle target, if 2, uses `in_rot2` as the euler angle target.

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Mul

  CSIBCRotationd::LeftMul

  CSIBCRotationd::MulUsingEulerAnglesTarget

CSIBCRotationd& Invert | ( | CSIBCRotationd & | in_rot | ) |

Sets this rotation object to the inverse of `in_rot`.

Parameters:

  | in_rot | Rotation object containing the inverse to set as this rotation object.

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Invert

CSIBCRotationd& Invert | ( |  | ) |

Sets this rotation object to its inverse.

Returns:
  CSIBCRotationd& Reference to this rotation object.

See also:
  CSIBCRotationd::Invert

CSIBCRotationd& Interpolate | ( | CSIBCRotationd & | in_rot1,
|  | CSIBCRotationd & | in_rot2,
|  | const double | in_dU |
| ) |  |  |

Sets this rotation object to the interpolation between the rotation objects `in_rot1`, and `in_rot2` at a point of `in_dU` between them.

Parameters:

  | in_rot1 | Starting point for rotation interpolation.
  | in_rot2 | Ending point for rotation interpolation.
  | in_dU | Interpolation between `in_rot1` and `in_rot2`, in the range [0.0f, 1.0f].

Returns:
  CSIBCRotationd& Reference to this rotation object.

CSIBCVector3Dd& RotateVct | ( | const CSIBCVector3Dd & | in_vct,
|  | CSIBCVector3Dd & | out_vct |
| ) |  |  |

Applies this rotation object to a single vector.

Parameters:

  | in_vct | The vector to be rotated.
  | out_vct | Receives the rotated vector.

Returns:
  CSIBCVector3Dd& Reference to `out_vct`.

See also:
  CSIBCRotationd::RotateVct

  CSIBCRotationd::InvRotateVct

void RotateVct | ( | const CSIBCVector3Dd * | in_vcts,
|  | const LONG | in_lNbVcts,
|  | CSIBCVector3Dd * | out_vcts |
| ) |  |  |

Applies this rotation object to multiple vectors.

Parameters:

  | in_vcts | Array of vectors.
  | in_lNbVcts | Number of vectors in `in_vcts` (and `out_vcts`).
  | out_vcts | Array of vectors receiving the array rotated vectors.

See also:
  CSIBCRotationd::RotateVct

  CSIBCRotationd::InvRotateVct

CSIBCVector3Dd& InvRotateVct | ( | const CSIBCVector3Dd & | in_vct,
|  | CSIBCVector3Dd & | out_vct |
| ) |  |  |

Applies the inverse of this rotation object to a single vector.

Parameters:

  | in_vct | The vector to be rotated.
  | out_vct | Receives the rotated vector.

Returns:
  CSIBCVector3Dd& Reference to `out_vct`.

See also:
  CSIBCRotationd::InvRotateVct

  CSIBCRotationd::RotateVct

void InvRotateVct | ( | const CSIBCVector3Dd * | in_vcts,
|  | const LONG | in_lNbVcts,
|  | CSIBCVector3Dd * | out_vcts |
| ) |  |  |

Applies the inverse of this rotation object to multiple vectors.

Parameters:

  | in_vcts | Array of vectors.
  | in_lNbVcts | Number of vectors in `in_vcts` (and `out_vcts`).
  | out_vcts | Array of vectors receiving the array rotated vectors.

See also:
  CSIBCRotationd::InvRotateVct

  CSIBCRotationd::RotateVct

bool operator== | ( | const CSIBCRotationd & | in_rot | ) | const

Not implemented yet

bool operator!= | ( | const CSIBCRotationd & | in_rot | ) | const

Not implemented yet

## Friends And Related Function Documentation

CSIBCVector3Dd& MapDirSpaceToWorld | ( | CSIBCRotationd & | in_rotFrom,
|  | const CSIBCVector3Dd & | in_vctDir,
|  | CSIBCVector3Dd & | out_vctDir |
| ) |  |  | `[friend]`

Maps a direction vector `in_vctDir` from an orientation space, given by `in_rotFrom`, to world orientation space.

Parameters:

  | in_rotFrom | Rotation object representing the orientation space which `in_vctDir` is defined in.
  | in_vctDir | The direction vector, defined in `in_rotFrom`.
  | out_vctDir | Receives `in_vctDir` mapped from `in_rotFrom` to world orientation space. return CSIBCVector3Dd& Reference to `out_vctDir`

See also:
  CSIBCRotationd::MapDirWorldToSpace

  CSIBCRotationd::MapDirSpaceToSpace

CSIBCVector3Dd& MapDirWorldToSpace | ( | CSIBCRotationd & | in_rotTo,
|  | const CSIBCVector3Dd & | in_vctDir,
|  | CSIBCVector3Dd & | out_vctDir |
| ) |  |  | `[friend]`

Maps a direction vector `in_vctDir` from world orientation space, to an orientation space given by `in_rotTo`.

Parameters:

  | in_vctTo | The orientation space to map `in_vctDir` to.
  | in_vctDir | The direction vector, defined in world orientation space.
  | out_vctDir | Receives `in_vctDir` mapped from world orientation space to `in_rotFrom`. return CSIBCVector3Dd& Reference to `out_vctDir`

See also:
  CSIBCRotationd::MapDirSpaceToWorld

  CSIBCRotationd::MapDirSpaceToSpace

CSIBCVector3Dd& MapDirSpaceToSpace | ( | CSIBCRotationd & | in_rotFrom,
|  | CSIBCRotationd & | in_rotTo,
|  | const CSIBCVector3Dd & | in_vctDir,
|  | CSIBCVector3Dd & | out_vctDir |
| ) |  |  | `[friend]`

Maps a direction vector `in_vctDir` from one orientation space `in_rotFrom`, to an another orientation space `in_rotTo`.

Parameters:

  | in_rotFrom | Rotation object representing the orientation space which `in_vctDir` is defined in.
  | in_vctTo | The orientation space to map `in_vctDir` to.
  | in_vctDir | The direction vector, defined in world orientation space.
  | out_vctDir | Receives `in_vctDir` mapped from world orientation space to `in_rotFrom`. return CSIBCVector3Dd& Reference to `out_vctDir`

See also:
  CSIBCRotationd::MapDirSpaceToWorld

  CSIBCRotationd::MapDirWorldToSpace

bool AreAlmostEqual | ( | const CSIBCRotationd & | in_rot1,
|  | const CSIBCRotationd & | in_rot2,
|  | const double | in_dEpsilon = `PICO_EPS` |
| ) |  |  | `[friend]`

Not implemented yet

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

- SIBCRotationd.h