【发布时间】:2019-03-28 11:04:16
【问题描述】:
我在矩阵计算上的scale(x,y,z) 与rotation(x,y,z) 有点挣扎。我目前正在用 JS 构建一个 3D 建模程序,我一直在使用 CSS 标志进行转换,但我决定继续使用矩阵。
var a1=1,a2=0,a3=0,a4=0,
a5=0,a6=1,a7=0,a8=0,
a9=0,a10=0,a11=1,a12=0,
a13=0,a14=0,a15=0,a16=1,
Rx=45,Ry=45,matrix=true;
var objMatrix = [];
var MDN = MDN || {};
MDN.matrixArrayToCssMatrix = function (array) {
return "matrix3d(" + array.join(',') + ")";
}
var angX=Rx,angY=Ry,
MCpx=Math.cos(angX * Math.PI / 180),
MSpx=Math.sin(angX * Math.PI / 180),
MSnx=Math.sin(-angX * Math.PI / 180),
MCpy=Math.cos(angY * Math.PI / 180),
MSpy=Math.sin(angY * Math.PI / 180),
MSny=Math.sin(-angY * Math.PI / 180);
if (matrix==true) {
a1= MCpy,
a2 = MSpx*MSpy,
a3= MCpx*MSpy,
a6 = MCpx,
a7 = MSnx,
a9 = MSny,
a10 = MSpx*MCpy,
a11 = MCpx*MCpy;
}
objMatrix = [
a1, a2, a3, a4,
a5, a6, a7, a8,
a9, a10, a11, a12,
a13, a14, a15, a16
];
return objMatrix;
}
function transform(){
matrix(objMatrix);
var matrixToCSS = MDN.matrixArrayToCssMatrix( matrix(objMatrix) );
document.getElementById("foo").style.transform = matrixToCSS;
}
到目前为止,上面的代码我得到了translate(X,Y,Z) 和rotate(X,Y),其余的我还没有弄清楚。
【问题讨论】:
标签: javascript matrix matrix-multiplication