﻿ Object Model: SIMatrix4.Mul

SIMatrix4.Mul

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