Javascript: матричные операции для перспективы преобразования CSS

я используюэтот скрипт которая претендует на реализацию операции matrix3d, как описано вспецификацияОднако в сценарии отсутствуют операции с матричной перспективой, поэтому я «приготовил» что-то, что, я не уверен, является либо точным, либо правильным.

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

и метод использования этой матрицы

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

Мой вопрос, еслиy а такжеz являютсяundefinedкакие значения следует использовать? Это будет как вращение гдеx используется для всех других осей или 0 (ноль), как в приведенном выше коде?

Я также не уверен, еслиCSSMatrix.Perspective матрица правильно написана, как описано в спецификации, и внедрена вCSSMatrix прототип.

ОБНОВЛЕНИЕ: я нашел другую реализацию функций перспективы (см. Ниже) и создалиграть на скрипке чтобы продемонстрировать, что это не работает так же хорошо.

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

Почему два значения отличаются, пожалуйста?

Спасибо за любой ответ.

Ответы на вопрос(2)

Ваш ответ на вопрос