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