Javascript: operações de matriz para perspectiva de transformação CSS
estou a usaresse script que afirma implementar a operação matrix3d, conforme descrito ema especificação, no entanto, faltam operações de perspectiva da matriz no script, então eu "cozinhei" algo que não tenho certeza se é preciso ou correto.
// the perspective matrix to multiply with
CSSMatrix.P,erspective = function(x, y, z){
var m = new CSSMatrix();
m.m13 = x;
m.m23 = y;
m.m33 = z;
return m;
};
e o método para usar essa matriz
// myMatrix.perspective(x,y,z); to apply a perspective matrix
CSSMatrix.prototype.perspective = function(x, y, z){
if (y == null) y = 0;
if (z == null) z = 0;
return CSSMatrix.multiply(this, CSSMatrix.Perspective(x, y, z));
};
Minha pergunta é, sey
ez
estãoundefined
, quais valores devem ser usados? Será como rodar ondex
é usado para todos os outros eixos ou 0 (zero) como no código acima?
Eu também não tenho certeza seCSSMatrix.Perspective
matriz é corretamente escrita conforme descrito na especificação e implementada noCSSMatrix
protótipo.
UPDATE: Encontrei outra implementação das funções de perspectiva (veja abaixo) e criei umviolino para demonstrar que não está funcionando tão bem.
CSSMatrix.prototype.perspective = function(d){
return CSSMatrix.multiply(this, CSSMatrix.Perspective(d));
};
CSSMatrix.Perspective = function(d){
var m = new CSSMatrix();
m.m43 = -1/d;
return m;
};
Por que os dois valores são diferentes, por favor?
Obrigado por qualquer resposta.