Найдите поворот и наклон преобразования матрицы

У меня есть следующее Матрица преобразования в 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] 

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

Как определить и поворот, и перекос, когда были применены оба атрибута, и все, что я знаю, это матричное преобразование.

Также масштаб испортил мои значения перекоса, что я не думаю, что это должно быть.

15
задан AndreaBogazzi 12 November 2015 в 12:53
поделиться