# CRotation Class Reference

Related Scripting Object: SIRotation

Provides conversion facilities for various rotation representations including Euler angles, Quaternion, Axis angle and rotation matrix. More...

`#include <xsi_rotation.h>`

List of all members.

## Public Types
enum | RotationOrder { siXYZ = 0, siXZY = 1, siYXZ = 2, siYZX = 3, siZXY = 4, siZYX = 5 }
## Public Member Functions
| CRotation ()
| CRotation (const CRotation &in_rotation)
| CRotation (const CVector3 &in_EulerAngles, RotationOrder in_RotOrder=siXYZ)
| CRotation (double in_dX, double in_dY, double in_dZ, RotationOrder in_RotOrder=siXYZ)
| CRotation (const CQuaternion &in_Quat)
| CRotation (const CVector3 &in_Axis, double in_dAngle)
| CRotation (const CMatrix3 &in_Matrix)
| ~CRotation ()
CRotation & | operator= (const CRotation &in_rotation)
CRotation & | Copy (const CRotation &in_SrcRot)
CVector3 | GetXYZAngles () const
void | GetXYZAngles (double &io_dX, double &io_dY, double &io_dZ) const
RotationOrder | GetRotationOrder () const
void | PutRotationOrder (RotationOrder in_RotationOrder)
CRotation & | SetFromXYZAngles (const CVector3 &in_EulerAngles, RotationOrder in_Order=siXYZ)
CRotation & | SetFromXYZAngles (double in_dX, double in_dY, double in_dZ, RotationOrder in_Order=siXYZ)
CRotation & | SetFromXYZAxes (const CVector3 &in_XAxis, const CVector3 &in_YAxis, const CVector3 &in_ZAxis)
CRotation & | operator *= (const CRotation &in_Rotation)
CRotation & | MulInPlace (const CRotation &in_Rotation)
CRotation & | Mul (const CRotation &in_Rotation1, const CRotation &in_Rotation2)
CRotation & | InvertInPlace ()
CRotation & | Invert (const CRotation &in_Rot)
CQuaternion | GetQuaternion () const
CRotation & | SetFromQuaternion (const CQuaternion &in_Quat)
CRotation & | operator= (const CQuaternion &in_Quat)
CVector3 | GetAxisAngle (double &io_dAngle) const
CRotation & | SetFromAxisAngle (const CVector3 &in_Axis, double in_dAngle)
CMatrix3 | GetMatrix () const
CRotation & | SetFromMatrix (const CMatrix3 &in_Matrix)
CRotation & | operator= (const CMatrix3 &in_Matrix)
void | SetIdentity ()
bool | EpsilonEquals (const CRotation &in_Rot, double in_dEpsilon) const
bool | Equals (const CRotation &in_Rot) const
bool | operator== (const CRotation &in_Rot) const
bool | operator!= (const CRotation &in_Rot) const

## Detailed Description

Provides conversion facilities for various rotation representations including Euler angles, Quaternion, Axis angle and rotation matrix.

Note:
  All angle values are expressed in radians.

See also:
  CTransformation, CQuaternion

Example:

              using namespace XSI;
              using namespace MATH;

              Application app;
              Model root = app.GetActiveSceneRoot();

              // Create a cube
              X3DObject myCube;
              root.AddGeometry( L"Cube", L"MeshSurface",L"",myCube );

              // Rotate it 60 degrees
              KinematicState  cubeKine = myCube.GetKinematics().GetGlobal();
              cubeKine.PutParameterValue( L"rotx", 60.0 );

              // Get the current rotation for the cube
              CRotation cubeRotation = cubeKine.GetTransform().GetRotation();

              // Halve the current rotation angle values
              CVector3 eulerAngles = cubeRotation.GetXYZAngles();
              eulerAngles.ScaleInPlace( 0.5 );

              // Put the halved value back into x
              cubeKine.PutParameterValue( L"rotx", RadiansToDegrees( eulerAngles.GetX() ) );

## Member Enumeration Documentation

enum RotationOrder

Defines the rotation order of a rotation for the Euler angles representation.

Enumerator:

  siXYZ | X, Y, Z order
  siXZY | X, Z, Y order
  siYXZ | Y, X, Z order
  siYZX | Y, Z, X order
  siZXY | Z, X, Y order
  siZYX | Z, Y, X order

## Constructor & Destructor Documentation

CRotation | ( |  | ) |

Default constructor.

CRotation | ( | const CRotation & | in_rotation | ) |

Copy constructor.

Parameters:

  | in_rotation | Rotation to copy

CRotation | ( | const CVector3 & | in_EulerAngles,
|  | RotationOrder | in_RotOrder = `siXYZ` |
| ) |  |  |

Constructor (from CVector3 of Euler angles).

Parameters:

  | in_EulerAngles | Euler angles to construct from
  | in_RotOrder | Rotation order to use

See also:
  CRotation::SetFromXYZAngles, CRotation::PutRotationOrder

CRotation | ( | double | in_dX,
|  | double | in_dY,
|  | double | in_dZ,
|  | RotationOrder | in_RotOrder = `siXYZ` |
| ) |  |  |

Constructor (from XYZ Euler angles).

Parameters:

  | in_dX | X angle
  | in_dY | Y angle
  | in_dZ | Z angle
  | in_RotOrder | Rotation order to use

See also:
  CRotation::SetFromXYZAngles, CRotation::PutRotationOrder

CRotation | ( | const CQuaternion & | in_Quat | ) |

Constructor (from a quaternion).

Parameters:

  | in_Quat | Quaternion to construct from

See also:
  CRotation::GetQuaternion, CRotation::SetFromQuaternion

CRotation | ( | const CVector3 & | in_Axis,
|  | double | in_dAngle |
| ) |  |  |

Constructor (using axis angle representation).

Parameters:

  | in_Axis | Axis of rotation
  | in_dAngle | Rotation angle around the axis

See also:
  CRotation::GetAxisAngle, CRotation::SetFromAxisAngle

CRotation | ( | const CMatrix3 & | in_Matrix | ) |

Constructor (from a rotation matrix).

Parameters:

  | in_Matrix | Rotation matrix

See also:
  CRotation::GetMatrix, CRotation::SetFromMatrix

~CRotation | ( |  | ) |

Default destructor.

## Member Function Documentation

CRotation& operator= | ( | const CRotation & | in_rotation | ) |

Assignment operator.

Parameters:

  | in_rotation | Rotation to copy

Returns:
  A reference to this rotation.

CRotation& Copy | ( | const CRotation & | in_SrcRot | ) |

Copies the content of another rotation.

Parameters:

  | in_SrcRot | Rotation to copy

Returns:
  This rotation

CVector3 GetXYZAngles | ( |  | ) | const

Returns the Euler angles representation of the rotation as a CVector3.

Returns:
  CVector3 Vector containing the X, Y and Z Euler angles

See also:
  CRotation::SetFromXYZAngles, CRotation::GetRotationOrder

void GetXYZAngles | ( | double & | io_dX,
|  | double & | io_dY,
|  | double & | io_dZ |
| ) |  |  | const

Returns the Euler angles's representation of the rotation.

Parameters:

  | io_dX | X angle
  | io_dY | Y angle
  | io_dZ | Z angle

See also:
  CRotation::SetFromXYZAngles, CRotation::GetRotationOrder

RotationOrder GetRotationOrder | ( |  | ) | const

Returns the rotation order of this rotation for the Euler angles representation.

Returns:
  CRotation::RotationOrder

void PutRotationOrder | ( | RotationOrder | in_RotationOrder | ) |

Sets the rotation order for the Euler angles representation.

Parameters:

  | in_RotationOrder | New rotation order to use

See also:
  CRotation::GetRotationOrder

CRotation& SetFromXYZAngles | ( | const CVector3 & | in_EulerAngles,
|  | RotationOrder | in_Order = `siXYZ` |
| ) |  |  |

Sets the current rotation from Euler angles.

Parameters:

  | in_EulerAngles | Vector containing the rotation angles
  | in_Order | Rotation order

Returns:
  This rotation

See also:
  CRotation::GetXYZAngles, CRotation::PutRotationOrder

CRotation& SetFromXYZAngles | ( | double | in_dX,
|  | double | in_dY,
|  | double | in_dZ,
|  | RotationOrder | in_Order = `siXYZ` |
| ) |  |  |

Sets the rotation from Euler angles.

Parameters:

  | in_dX | X angle
  | in_dY | Y angle
  | in_dZ | Z angle
  | in_Order | Requested rotation order

Returns:
  This rotation

See also:
  CRotation::GetXYZAngles, CRotation::PutRotationOrder

CRotation& SetFromXYZAxes | ( | const CVector3 & | in_XAxis,
|  | const CVector3 & | in_YAxis,
|  | const CVector3 & | in_ZAxis |
| ) |  |  |

Sets this rotation from three orthonormal axes.

Warning:
  No verification is performed about their orthonormality

Parameters:

  | in_XAxis | The X axis
  | in_YAxis | The Y axis
  | in_ZAxis | The Z axis

Returns:
  This rotation

CRotation& operator *= | ( | const CRotation & | in_Rotation | ) |

Multiplies this rotation with another one in place.

Parameters:

  | in_Rotation | Rotation to multiply

Returns:
  This rotation

CRotation& MulInPlace | ( | const CRotation & | in_Rotation | ) |

Multiplies this rotation with another one in place.

Parameters:

  | in_Rotation | Rotation to multiply

Returns:
  This rotation

CRotation& Mul | ( | const CRotation & | in_Rotation1,
|  | const CRotation & | in_Rotation2 |
| ) |  |  |

Stores the result of the multiplication of two rotations.

Parameters:

  | in_Rotation1 | First rotation
  | in_Rotation2 | Second rotation

Returns:
  This rotation

CRotation& InvertInPlace | ( |  | ) |

Inverts the rotation in place.

Returns:
  This rotation

CRotation& Invert | ( | const CRotation & | in_Rot | ) |

Stores the invert of a rotation.

Parameters:

  | in_Rot | Rotation to invert

Returns:
  This rotation

CQuaternion GetQuaternion | ( |  | ) | const

Returns the quaternion representation of the rotation.

Returns:
  CQuaternion

See also:
  CRotation::SetFromQuaternion

CRotation& SetFromQuaternion | ( | const CQuaternion & | in_Quat | ) |

Sets the rotation from a quaternion.

Parameters:

  | in_Quat | Quaternion to set from

Returns:
  This rotation

See also:
  CRotation::GetQuaternion

CRotation& operator= | ( | const CQuaternion & | in_Quat | ) |

Sets the rotation from a quaternion.

Parameters:

  | in_Quat | Quaternion to set from

Returns:
  This rotation

See also:
  CRotation::SetFromQuaternion

CVector3 GetAxisAngle | ( | double & | io_dAngle | ) | const

Returns the axis angle representation of the rotation.

Parameters:

  | io_dAngle | Rotation angle around the axis

Returns:
  CVector3 Axis of rotation

See also:
  CRotation::SetFromAxisAngle

CRotation& SetFromAxisAngle | ( | const CVector3 & | in_Axis,
|  | double | in_dAngle |
| ) |  |  |

Sets the rotation from an axis angle.

Parameters:

  | in_Axis | Axis of rotation
  | in_dAngle | Rotation angle around the axis

Returns:
  This rotation

See also:
  CRotation::GetAxisAngle

CMatrix3 GetMatrix | ( |  | ) | const

Returns the rotation matrix.

Returns:
  CMatrix3

See also:
  CRotation::SetFromMatrix

CRotation& SetFromMatrix | ( | const CMatrix3 & | in_Matrix | ) |

Sets the rotation from a rotation matrix.

Parameters:

  | in_Matrix | Rotation matrix

Returns:
  This rotation

See also:
  CRotation::GetMatrix

CRotation& operator= | ( | const CMatrix3 & | in_Matrix | ) |

Sets the rotation from a rotation matrix.

Parameters:

  | in_Matrix | Rotation matrix

Returns:
  This rotation

See also:
  CRotation::SetFromMatrix

void SetIdentity | ( |  | ) |

Sets the rotation to identity rotation.

bool EpsilonEquals | ( | const CRotation & | in_Rot,
|  | double | in_dEpsilon |
| ) |  |  | const

Tests the equality of this rotation against in_Rot, with a tolerance of in_dEpsilon.

Parameters:

  | in_Rot | Rotation to compare against
  | in_dEpsilon | Tolerance. Rotations are considered equal if each parameter pair has a difference lower than in_dEpsilon.

Returns:
  true if rotations are approximately equal; false if not equal

See also:
  CRotation::Equals

bool Equals | ( | const CRotation & | in_Rot | ) | const

Performs exact comparison of two quaternions.

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

Parameters:

  | in_Rot | Rotation to compare against

See also:
  CRotation::EpsilonEquals

bool operator== | ( | const CRotation & | in_Rot | ) | const

Performs exact comparison of two quaternions.

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

Parameters:

  | in_Rot | Rotation to compare against

See also:
  CRotation::EpsilonEquals, CRotation::Equals

bool operator!= | ( | const CRotation & | in_Rot | ) | const

Inequality operator tests the strict inequality of this rotation with the rotation in_rotation.

Parameters:

  | in_Rot | Operand rotation.

Returns:
  true if equal else false.

See also:
  CRotation::Equals

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

- xsi_rotation.h