a:13:{s:9:"#provides";s:19:"dojox.gfx.decompose";s:9:"#resource";s:16:"gfx/decompose.js";s:9:"#requires";a:1:{i:0;a:2:{i:0;s:6:"common";i:1;s:16:"dojox.gfx.matrix";}}s:19:"dojox.gfx.decompose";a:6:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:6:"matrix";a:2:{s:4:"type";s:25:"dojox.gfx.matrix.Matrix2D";s:7:"summary";s:23:"a 2D matrix-like object";}}s:6:"source";s:1026:" var M = m.normalize(matrix), result = {dx: M.dx, dy: M.dy, sx: 1, sy: 1, angle1: 0, angle2: 0}; // detect case: [scale] if(eq(M.xy, 0) && eq(M.yx, 0)){ return dojo.mixin(result, {sx: M.xx, sy: M.yy}); // Object } // detect case: [scale, rotate] if(eq(M.xx * M.yx, -M.xy * M.yy)){ return decomposeSR(M, result); // Object } // detect case: [rotate, scale] if(eq(M.xx * M.xy, -M.yx * M.yy)){ return decomposeRS(M, result); // Object } // do SVD var MT = transpose(M), u = eigenvalueDecomposition([M, MT]), v = eigenvalueDecomposition([MT, M]), U = new m.Matrix2D({xx: u.vector1.x, xy: u.vector2.x, yx: u.vector1.y, yy: u.vector2.y}), VT = new m.Matrix2D({xx: v.vector1.x, xy: v.vector1.y, yx: v.vector2.x, yy: v.vector2.y}), S = new m.Matrix2D([m.invert(U), M, m.invert(VT)]); decomposeSR(VT, result); S.xx *= result.sx; S.yy *= result.sy; decomposeRS(U, result); S.xx *= result.sx; S.yy *= result.sy; return dojo.mixin(result, {sx: S.xx, sy: S.yy}); // Object";s:7:"summary";s:72:"decompose a 2D matrix into translation, scaling, and rotation components";s:11:"description";s:233:"this function decompose a matrix into four logical components: translation, rotation, scaling, and one more rotation using SVD. The components should be applied in following order: [translate, rotate(angle2), scale, rotate(angle1)]";s:7:"returns";s:6:"Object";}s:9:"result.dx";a:1:{s:7:"summary";s:0:"";}s:9:"result.dy";a:1:{s:7:"summary";s:0:"";}s:9:"result.sx";a:1:{s:7:"summary";s:0:"";}s:9:"result.sy";a:1:{s:7:"summary";s:0:"";}s:13:"result.angle1";a:1:{s:7:"summary";s:0:"";}s:13:"result.angle2";a:1:{s:7:"summary";s:0:"";}s:6:"result";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:9:"dojox.gfx";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:5:"dojox";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}