Javascript: operaciones matriciales para perspectiva de transformación CSS

Estoy usandoeste guion que afirma implementar la operación matrix3d como se describe enla especificación, sin embargo, al script le faltan operaciones de perspectiva de matriz, por lo que "cociné" algo que no estoy seguro de que sea exacto o correcto.

// 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;
};

y el método para usar esta 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));
};

Mi pregunta es siy yz sonundefined, ¿qué valores deben usarse? ¿Será como rotar dondex se usa para todos los demás ejes, o 0 (cero) como en el código anterior?

Tampoco estoy seguro siCSSMatrix.Perspective la matriz se escribe correctamente como se describe en la especificación y se implementa en elCSSMatrix prototipo.

ACTUALIZACIÓN: He encontrado otra implementación de las funciones de perspectiva (ver más abajo) y he creado unviolín para demostrar que no funciona tan bien.

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 qué los dos valores son diferentes por favor?

Gracias por cualquier respuesta