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