transform-to-matrix
Version:
A tiny library to get 2/3D matricies from CSS3 transform functions. Fully covered by unit tests, with support for AMD, CommonJS, Node, and browser globals.
1 lines • 1.49 kB
JavaScript
!function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd?define("transform-to-matrix",[],b):a["transform-to-matrix"]=b()}(this,function(){var a;return a=function(){var a;return a={perspective:function(a){return[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,-1/a,1]]},rotate:function(b){return a.rotateZ(b)},rotateX:function(b){return a.rotate3d(1,0,0,b)},rotateY:function(b){return a.rotate3d(0,1,0,b)},rotateZ:function(a){var b,c;return b=Math.cos(a),c=Math.sin(a),[[b,-c,0],[c,b,0]]},rotate3d:function(a,b,c,d){var e,f,g,h,i;return i=a*a+b*b+c*c,e=Math.cos(d),g=Math.sin(d),f=1-e,h=Math.sqrt(i)*g,[[(a*a+(b*b+c*c)*e)/i,(a*b*f-c*h)/i,(a*c*f+b*h)/i,0],[(a*b*f+c*h)/i,(b*b+(a*a+c*c)*e)/i,(b*c*f-a*h)/i,0],[(a*c*f-b*h)/i,(b*c*f+a*h)/i,(c*c+(a*a+b*b)*e)/i,0],[0,0,0,1]]},scale:function(a,b){return[[a,0,0],[0,b,0]]},scaleX:function(b){return a.scale(b,1)},scaleY:function(b){return a.scale(1,b)},scaleZ:function(b){return a.scale3d(1,1,b)},scale3d:function(a,b,c){return[[a,0,0,0],[0,b,0,0],[0,0,c,0],[0,0,0,1]]},skew:function(a,b){return[[1,Math.tan(a),0],[Math.tan(b),1,0]]},skewX:function(a){return[[1,Math.tan(a),0],[0,1,0]]},skewY:function(a){return[[1,0,0],[Math.tan(a),1,0]]},translate:function(a,b){return[[1,0,a],[0,1,b]]},translateX:function(b){return a.translate(b,0)},translateY:function(b){return a.translate(0,b)},translateZ:function(b){return a.translate3d(0,0,b)},translate3d:function(a,b,c){return[[1,0,0,a],[0,1,0,b],[0,0,1,c],[0,0,0,1]]}}}()});