【发布时间】:2016-06-09 20:27:11
【问题描述】:
我正在使用this script,它声称实现了the spec 中描述的matrix3d 操作,但是脚本缺少矩阵透视操作,所以我“煮”了一些我不确定是否准确或正确的东西。
// the perspective matrix to multiply with
CSSMatrix.Perspective = 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 原型中。
更新: 我找到了透视函数的另一个实现(见下文)并创建了一个fiddle 来证明它不能正常工作。
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;
};
请问为什么这两个值不同?
感谢您的回复。
【问题讨论】:
标签: javascript matrix css-transforms