【发布时间】:2016-06-23 21:24:26
【问题描述】:
我之前询问过正确的function for perspective(计算和组成矩阵),现在我遇到了一个更老的问题,我没想到这仍然是一个如此大的问题。
基本上 360deg / 720deg 只是零,我不知道如何破解以下函数来解决这个问题。
CSSMatrix.Rotate = function(rx, ry, rz){
rx *= Math.PI / 180;
ry *= Math.PI / 180;
rz *= Math.PI / 180;
// minus sin() because of right-handed system
var cosx = Math.cos(rx), sinx = - Math.sin(rx);
var cosy = Math.cos(ry), siny = - Math.sin(ry);
var cosz = Math.cos(rz), sinz = - Math.sin(rz);
var m = new CSSMatrix();
m.m11 = m.a = cosy * cosz;
m.m12 = m.b = -cosy * sinz;
m.m13 = siny;
m.m21 = m.c = sinx * siny * cosz + cosx * sinz;
m.m22 = m.d = cosx * cosz - sinx * siny * sinz;
m.m23 = - sinx * cosy;
m.m31 = sinx * sinz - cosx * siny * cosz;
m.m32 = sinx * cosz + cosx * siny * sinz;
m.m33 = cosx * cosy;
return m;
};
当使用 360 度旋转(在任何轴上)组成矩阵时,CSSMatrix.rotate() 方法正在创建一个旋转矩阵,对于每个角度值,我们得到 angle * Math.PI / 180 然后是其他正弦/余弦运算,但矩阵结果不同来自常规rotateX(360deg) 的计算转换。
在这里查看我的小提琴,其中相同的代码doesn't work properly 具有 360 度角,working properly 具有不同的 360 度角。
请问我该如何解决?
【问题讨论】:
标签: javascript matrix css-transforms