// C1 * A2
// C1 = s(1,1,1) r(0,0,20) t(0,0,0)
// A2 = s(1,1,1) r(0,0,0) t(6,2,0)
//INFO : "Result: s(1,1,1) r(0,0,20) t(6,2,0)"
var C1 = CreateMatrix4(1,1,1,0,0,20,0,0,0);
var A2 = CreateMatrix4(1,1,1,0,0,0,6,2,0);
MatrixMultiply(C1, A2);
/*--------------------------------
Create Matrix 4
--------------------------------*/
function CreateMatrix4( inSx, inSy, inSz, inRx, inRy, inRz, inTx, inTy, inTz ){
trans = XSIMath.CreateTransform();
inRx = XSIMath.DegreesToRadians(inRx);
inRy = XSIMath.DegreesToRadians(inRy);
inRz = XSIMath.DegreesToRadians(inRz);
trans.SetScalingFromValues (inSx, inSy, inSz);
trans.SetTranslationFromValues(inTx, inTy, inTz);
trans.SetRotationFromXYZAnglesValues(inRx, inRy, inRz);
var matrix = XSIMath.CreateMatrix4();
trans.GetMatrix4(matrix);
return matrix;
}
/*--------------------------------
Matrix Multiply
--------------------------------*/
function MatrixMultiply(inM1, inM2){
var mTrans = XSIMath.CreateTransform();
var mTrans2 = XSIMath.CreateTransform();
mTrans.SetMatrix4(inM1);
mTrans2.SetMatrix4(inM2)
var resultTrans = XSIMath.CreateTransform();
resultTrans.Mul(mTrans, mTrans2);
// now log SRT values
var scl = XSIMath.CreateVector3();
var trn = XSIMath.CreateVector3();
var rot = XSIMath.CreateVector3();
resultTrans.GetScaling(scl);
resultTrans.GetTranslation (trn);
resultTrans.GetRotationXYZAngles (rot);
rot.x = XSIMath.RadiansToDegrees(rot.x);
rot.y = XSIMath.RadiansToDegrees(rot.y);
rot.z = XSIMath.RadiansToDegrees(rot.z);
logmessage ("Result: "+"s("+scl.x+","+scl.y+","+scl.z+
") r("+rot.x+","+rot.y+","+rot.z+
") t("+trn.x+","+trn.y+","+trn.z+
")");
}
//--------------------------------