Provides conversion facilities for various rotation representations including Euler angles, Quaternion, Axis angle and rotation matrix.
        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() ) );
#include <xsi_rotation.h>
| 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 | 
| enum RotationOrder | 
| CRotation | ( | ) | 
Default constructor.
Copy constructor.
| in_rotation | Rotation to copy | 
| CRotation | ( | const CVector3 & | in_EulerAngles, | 
| RotationOrder | in_RotOrder = siXYZ | ||
| ) | 
Constructor (from CVector3 of Euler angles).
| in_EulerAngles | Euler angles to construct from | 
| in_RotOrder | Rotation order to use | 
| CRotation | ( | double | in_dX, | 
| double | in_dY, | ||
| double | in_dZ, | ||
| RotationOrder | in_RotOrder = siXYZ | ||
| ) | 
Constructor (from XYZ Euler angles).
| in_dX | X angle | 
| in_dY | Y angle | 
| in_dZ | Z angle | 
| in_RotOrder | Rotation order to use | 
| CRotation | ( | const CQuaternion & | in_Quat | ) | 
Constructor (from a quaternion).
| in_Quat | Quaternion to construct from | 
Constructor (using axis angle representation).
| in_Axis | Axis of rotation | 
| in_dAngle | Rotation angle around the axis | 
Constructor (from a rotation matrix).
| in_Matrix | Rotation matrix | 
| ~CRotation | ( | ) | 
Default destructor.
Assignment operator.
| in_rotation | Rotation to copy | 
Copies the content of another rotation.
| in_SrcRot | Rotation to copy | 
| CVector3 GetXYZAngles | ( | ) | const | 
| void GetXYZAngles | ( | double & | io_dX, | 
| double & | io_dY, | ||
| double & | io_dZ | ||
| ) | const | 
Returns the Euler angles's representation of the rotation.
| io_dX | X angle | 
| io_dY | Y angle | 
| io_dZ | Z angle | 
| RotationOrder GetRotationOrder | ( | ) | const | 
Returns the rotation order of this rotation for the Euler angles representation.
| void PutRotationOrder | ( | RotationOrder | in_RotationOrder | ) | 
Sets the rotation order for the Euler angles representation.
| in_RotationOrder | New rotation order to use | 
| CRotation& SetFromXYZAngles | ( | const CVector3 & | in_EulerAngles, | 
| RotationOrder | in_Order = siXYZ | ||
| ) | 
Sets the current rotation from Euler angles.
| in_EulerAngles | Vector containing the rotation angles | 
| in_Order | Rotation order | 
| CRotation& SetFromXYZAngles | ( | double | in_dX, | 
| double | in_dY, | ||
| double | in_dZ, | ||
| RotationOrder | in_Order = siXYZ | ||
| ) | 
Sets the rotation from Euler angles.
| in_dX | X angle | 
| in_dY | Y angle | 
| in_dZ | Z angle | 
| in_Order | Requested rotation order | 
| CRotation& SetFromXYZAxes | ( | const CVector3 & | in_XAxis, | 
| const CVector3 & | in_YAxis, | ||
| const CVector3 & | in_ZAxis | ||
| ) | 
Sets this rotation from three orthonormal axes.
| in_XAxis | The X axis | 
| in_YAxis | The Y axis | 
| in_ZAxis | The Z axis | 
Multiplies this rotation with another one in place.
| in_Rotation | Rotation to multiply | 
Multiplies this rotation with another one in place.
| in_Rotation | Rotation to multiply | 
Stores the result of the multiplication of two rotations.
| in_Rotation1 | First rotation | 
| in_Rotation2 | Second rotation | 
| CRotation& InvertInPlace | ( | ) | 
Inverts the rotation in place.
Stores the invert of a rotation.
| in_Rot | Rotation to invert | 
| CQuaternion GetQuaternion | ( | ) | const | 
Returns the quaternion representation of the rotation.
| CRotation& SetFromQuaternion | ( | const CQuaternion & | in_Quat | ) | 
Sets the rotation from a quaternion.
| in_Quat | Quaternion to set from | 
| CRotation& operator= | ( | const CQuaternion & | in_Quat | ) | 
Sets the rotation from a quaternion.
| in_Quat | Quaternion to set from | 
| CVector3 GetAxisAngle | ( | double & | io_dAngle | ) | const | 
Returns the axis angle representation of the rotation.
| io_dAngle | Rotation angle around the axis | 
Sets the rotation from an axis angle.
| in_Axis | Axis of rotation | 
| in_dAngle | Rotation angle around the axis | 
| CMatrix3 GetMatrix | ( | ) | const | 
Sets the rotation from a rotation matrix.
| in_Matrix | Rotation matrix | 
Sets the rotation from a rotation matrix.
| in_Matrix | Rotation matrix | 
| 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.
| in_Rot | Rotation to compare against | 
| in_dEpsilon | Tolerance. Rotations are considered equal if each parameter pair has a difference lower than in_dEpsilon. | 
| bool Equals | ( | const CRotation & | in_Rot | ) | const | 
Performs exact comparison of two quaternions.
| in_Rot | Rotation to compare against | 
| bool operator== | ( | const CRotation & | in_Rot | ) | const | 
Performs exact comparison of two quaternions.
| in_Rot | Rotation to compare against | 
| bool operator!= | ( | const CRotation & | in_Rot | ) | const | 
Inequality operator tests the strict inequality of this rotation with the rotation in_rotation.
| in_Rot | Operand rotation. |