// F1 * A3
// F1 = s(0.6,1.1,1) r(0,0,20) t(5,5,0)
// A3 = s(1,1,1) r(0,0,30) t(0,0,0)
//INFO : "Result: s(0.6,1.1,1) r(0,0,50) t(1.8301,6.8301,0)"
var F1 = CreateMatrix4(0.6,1.1,1,0,0,20,5,5,0);
var A3 = CreateMatrix4(1,1,1,0,0,30,0,0,0);
MatrixMultiply(F1, A3);
/*--------------------------------
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+
")");
}
//--------------------------------