## 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