【发布时间】:2011-02-24 16:02:41
【问题描述】:
我在 CSS 中有以下变换矩阵
// rotate the element 60deg
element.style.transform = "matrix(0.5,0.866025,-0.866025,0.5,0,0)"
我可以使用这个找到旋转...
// where a = [0.710138,0.502055,-0.57735,1,0,0]
var rotation = ((180/Math.PI) * Math.atan2( ((0*a[2])+(1*a[3])),((0*a[0])-(1*a[1]))) - 90
console.log(rotation); // ~60
同样适用于偏斜如果...
// skew(30deg,-50deg)
element.style.transform = "matrix(1,-1.19175,0.57735,1,0,0)"
var skewY = ((180/Math.PI) * Math.atan2( ((0*a[2])+(1*a[3])),((0*a[0])-(1*a[1]))) - 90;
var skewX = (180/Math.PI) * Math.atan2( ((1*a[2])+(0*a[3])),((1*a[0])-(0*a[1])));
console.log([skewX,skewY]); // ~= [30,-50]
但是,一旦我同时使用倾斜和旋转,一切都会变得很奇怪,尤其是因为旋转的公式与倾斜的公式相同......所以公式不可能是正确的。
我如何确定两个属性都已应用且我只知道矩阵变换的旋转和倾斜。
比例尺也弄乱了我的偏斜值,我认为它不应该这样做。
【问题讨论】:
-
有趣的问题。每个矩阵中有六个元素。这是一个 3x3 矩阵,最后一行隐式设置为 (0,0,1)?
-
是的,javascript 中使用的变换矩阵 ( 2dcanvas 相关) 已将最新行隐式设置为 [0,0,1]
-
我稍微完善了答案,效果很好
标签: javascript matrix qr-decomposition