我之前詢問過關於正確的function for perspective(計算和組成矩陣),現在我面臨的是一個老問題,我不希望這會成爲一個問題仍然。Javascript:360deg旋轉和矩陣組合出現問題
基本上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;
};
當使用360deg旋轉(在任何軸上)組成的矩陣,所述CSSMatrix.rotate()
方法是創建一個旋轉矩陣和每個角度值,我們得到angle * Math.PI/180
然後其他竇/餘弦操作,但矩陣的結果是不同的從經常計算的變換rotateX(360deg)
。
看到我的小提琴在這裏相同的代碼doesn't work properly 360deg角度和working properly角度不同於360deg。
我該如何解決這個問題?
好吧,我已經刪除了近似值,現在當添加一個附加軸時,比如'rotateZ'這兩個矩陣是非常不同的。請檢查https://jsfiddle.net/LuL3qoo4/2/ – thednp
非常感謝。 – thednp