извлечь значения поворота, масштабирования из 2-й матрицы преобразования

как я могу извлечь значения поворота, масштаба и сдвига из 2-мерной матрицы преобразования? я имею в виду, что a имеет 2d преобразование

matrix = [1, 0, 0, 1, 0, 0]

matrix.rotate(45 / 180 * PI)
matrix.scale(3, 4)
matrix.translate(50, 100)
matrix.rotate(30 / 180 * PI)
matrix.scale(-2, 4)

теперь моя матрица имеет значения [a, b, c, d, tx, ty]

давайте забудем о процессах выше и представим, что у нас есть только значения a, b, c , d, tx, ty

как я могу найти общие значения поворота и масштабирования с помощью a, b, c, d, tx, ty

извините за мой английский

Спасибо за ваше продвижение

EDIT

Я думаю, это должен быть ответ где-то ...

Я только что попробовал в Flash Builder (AS3) вот так

   var m:Matrix = new Matrix;
   m.rotate(.25 * Math.PI);
   m.scale(4, 5);
   m.translate(100, 50);
   m.rotate(.33 * Math.PI);
   m.scale(-3, 2.5);

   var shape:Shape = new Shape;
   shape.transform.matrix = m;

   trace(shape.x, shape.y, shape.scaleX, shape.scaleY, shape.rotation);

и получил следующий результат:

x = -23.6 
y = 278.8 
scaleX = 11.627334873920528 
scaleY = -13.54222263865791 
rotation = 65.56274134518259 (in degrees)
21
задан ja72 5 December 2010 в 22:47
поделиться