## SIRotation

Object Hierarchy | Related C++ Class: CRotation

### Description

This object represents a rotation in 3D space. It supports three representation methods: X, Y and Z Euler angles, Quaternion and 3 by 3 matrix.
Note: When represented as X,Y,Z Euler angles the values are always in Radians, not degrees.

### Methods

Copy | GetAxisAngle | GetAxisAngle2 | GetMatrix3
GetQuaternion | GetXYZAngles | GetXYZAnglesValues | GetXYZAnglesValues2
Invert | InvertInPlace | Mul | MulInPlace
SetFromAxisAngle | SetFromMatrix3 | SetFromQuaternion | SetFromXYZAngles
SetFromXYZAnglesValues | SetFromXYZAxes | SetIdentity |

### Properties

Quaternion | RotX | RotY | RotZ
XYZAngles |  |  |

### Examples

#### JScript Example

    /*
            Demonstrates different representations of a rotation:
            -As a SIRotation object
            -As a 3x3 matrix
            -As a 4x4 matrix
            -As a SITransformation object
            -As a SIVector3 object
    */
    var oSIRotation = XSIMath.CreateRotation(
                                    XSIMath.DegreesToRadians( 45 ),
                                    XSIMath.DegreesToRadians( 30 ),
                                    XSIMath.DegreesToRadians( 15 ) ) ;
    oSIMatrix3 = XSIMath.CreateMatrix3() ;
    oSIRotation.GetMatrix3( oSIMatrix3 ) ;
    oSIMatrix4 = ConvertMatrix3ToMatrix4( oSIMatrix3 ) ;
    oSITransformation = XSIMath.CreateTransform() ;
    oSITransformation.SetMatrix4( oSIMatrix4 ) ;
    var oSIVector3 = XSIMath.CreateVector3() ;
    oSITransformation.GetRotationXYZAngles( oSIVector3 ) ;
    // Prove that we haven't lost the original rotation values
    Application.LogMessage( "Rotation " +
                            XSIMath.RadiansToDegrees( oSIVector3.X ) + ", " +
                            XSIMath.RadiansToDegrees( oSIVector3.Y ) + ", " +
                            XSIMath.RadiansToDegrees( oSIVector3.Z ) ) ;
    // Output (notice very small rounding problems that occur
    // when dealing with pi and trig functions):
    //INFO : Rotation 45, 29.999999999999996, 14.999999999999998
    function ConvertMatrix3ToMatrix4( oM3 )
    {
            // Helper function to convert 3x3 rotation matrix
            // to equivalent 4x4 transformation matrix:
            //
            // r11 r12 r13 0
            // r21 r22 r23 0
            // r31 r32 r33 0
            // 0   0    0  1
            oSIMatrix4 = XSIMath.CreateMatrix4(
                    oM3(0,0), oM3(0,1), oM3(0,2), 0,
                    oM3(1,0), oM3(1,1), oM3(1,2), 0,
                    oM3(2,0), oM3(2,1), oM3(2,2), 0,
                    0,        0,        0,        1 ) ;
            return oSIMatrix4 ;
    }

### See Also

SIVector3 SIMatrix3 SIMatrix4 SIRotation SITransformation SIQuaternion XSIMath.DegreesToRadians