## SIMatrix4.Mul

### Description

Right-multiplies the matrix m1 by the matrix m2 and stores the result into this matrix: this = m1 . m2

### C# Syntax

    SIMatrix4.Mul( SIMatrix4 in_pMatrix1, SIMatrix4 in_pMatrix2 );

### Scripting Syntax

    SIMatrix4.Mul( m1, m2 );

### Parameters

Parameter | Type | Description
--- | --- | ---
m1 | SIMatrix4 | Matrix operand
m2 | SIMatrix4 | Matrix operand

### Examples

#### 1. JScript Example

    /*

    	Example of Matrix multiplication

    */

    var m1 = XSIMath.CreateMatrix4( 1.0,  2.0, 3.0, 4.0,

    	                               5.0,  6.0, 7.0, 8.0,

    		                           9.0, 10.0,11.0,12.0,

    	 	                           13.0,14.0,15.0,16.0 );

    var m2 = XSIMath.CreateMatrix4( 1.0,  0.0, 0.0, 0.0,

    	                               0.0,  0.0, 1.0, 0.0,

    		                           0.0,  1.0, 0.0, 0.0,

    	 	                           0.0,  0.0, 0.0, 1.0 ) ;

    var m3 = XSIMath.CreateMatrix4();

    var m4 = XSIMath.CreateMatrix4();

    // The m2 matrix will swap 2 and 3rd rows

    // m3 is the composition of m1 and m2

    m3.Mul( m2, m1 ) ;

    Application.LogMessage( "Multipled matrix" ) ;

    PrintMatrix( m3 ) ;

    // m2 is invertible, so we can restore

    // the original matrix

    // (In fact this is not necessary

    // because inversion of m2 = m2)

    m2.InvertInPlace()  ;

    PrintMatrix( m2 ) ;

    m4.Mul( m2, m3 ) ;

    Application.LogMessage( "Restored matrix" ) ;

    PrintMatrix( m4 ) ;

    function PrintMatrix( oMatrix4 )

    {

    	for ( var row = 0 ; row < 4 ; row++ )

    	{

    		strLine = "" ;

    		for( var col = 0 ; col < 4 ; col++ )

    		{

    			strLine += oMatrix4.Value( row, col ) + "\t\t";

    		}

    		Application.LogMessage( strLine ) ;

    	}

    }

    //INFO : Multipled matrix

    //INFO : 1		2		3		4

    //INFO : 9		10		11		12

    //INFO : 5		6		7		8

    //INFO : 13		14		15		16

    //INFO : Restored matrix

    //INFO : 1		2		3		4

    //INFO : 5		6		7		8

    //INFO : 9		10		11		12

    //INFO : 13		14		15		16

#### 2. VBScript Example

    '

    ' This example demonstrates how to multiply two

    ' 4x4 matrices and store the result in a third

    '

    dim m1 : set m1 = XSIMath.CreateMatrix4(_

    	1.0, 0.0, 0.0, 0.0, _

    	0.0, 2.0, 0.0, 0.0, _

    	0.0, 0.0, 3.0, 0.0, _

    	0.0, 0.0, 0.0, 1.0)

    dim m2 : set m2 = XSIMath.CreateMatrix4(_

    	4.0, 0.0, 0.0, 0.0, _

    	0.0, 3.0, 0.0, 0.0, _

    	0.0, 0.0, 2.0, 0.0, _

    	0.0, 0.0, 0.0, 1.0)

    dim m3 : set m3 = XSIMath.CreateMatrix4

    m3.Mul m1, m2

### See Also

SIMatrix4.MulInPlace SIVector3 SIMatrix3 SIMatrix4 SIRotation SITransformation SIQuaternion