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.

questionAnswers(2)

yourAnswerToTheQuestion