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;
};
Почему два значения отличаются, пожалуйста?
Спасибо за любой ответ.