{"_id":"@atirip/matrix","_rev":"3-c034d192e0cd70b7bd871d478c7ad5f1","name":"@atirip/matrix","description":"General purpose, low garbage affine matrix library","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@atirip/matrix","description":"General purpose, low garbage affine matrix library","version":"1.0.0","main":"matrix.js","author":{"name":"Priit Pirita","email":"atirip@yahoo.com"},"repository":{"type":"git","url":"git+https://github.com/atirip/matrix.git"},"license":"MIT","keywords":["matrix"],"dependencies":{},"devDependencies":{"chai":"^1.5.x","mocha":"^1.8.x","mocha-eslint":"^0.1.7"},"scripts":{"test":"mocha"},"bugs":{"url":"https://github.com/atirip/matrix/issues"},"homepage":"https://github.com/atirip/matrix#readme","gitHead":"096979b413c8e4a07206f639f269e11323959725","_id":"@atirip/matrix@1.0.0","_shasum":"5294d1bb38a3d214b5a1418c8bf12f47b64aeb08","_from":".","_npmVersion":"2.11.1","_nodeVersion":"0.12.4","_npmUser":{"name":"atirip","email":"atirip@gmail.com"},"dist":{"shasum":"5294d1bb38a3d214b5a1418c8bf12f47b64aeb08","tarball":"https://registry.npmjs.org/@atirip/matrix/-/matrix-1.0.0.tgz","integrity":"sha512-ZMd73R5XiaqeMKs4WpiG3pVa7eBFKeXMnbOoaVQSygAvzwfTlSyKb2AtvEHlNWrjLw78rZylJozY5HFVH+1z5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDUYsofT5b6LRBt+rhlhrRzXUVfW7T0fvbrrTmFQuN+IAiEA6ahNDuwyvbIHs8CmMaWMtEvbHsZ1Cz7XNO4g1Mtrj5o="}]},"maintainers":[{"name":"atirip","email":"atirip@gmail.com"}]}},"readme":"# Matrix\n\nGeneral purpose, low garbage affine matrix library.\n\n## Why?\n\nI needed separate (no dependencies), minimal matrix library that is garbage friendly and can be called extensively (as in Javascript animations). \n\n## Install\n\n\t$ npm install @atirip/matrix\n\nOr clone this repo. \n\n## Usage\n\n\n#####Standard browser use\n\n\t<script src=\"matrix.js\"></script>\n\t<script>\n\t\tvar matrix = new atirip.Matrix();\n\t</script>\n\n\n- no minfied version is supplied\n- it attaches itself in 'atirip' namespace\n\n#####AMD\n\n\trequire([\"matrix\"], function(Matrix) {\n\t  // ...\n\t});\n\t\n\t\n#####In nodejs/browserify\n\n\tvar Matrix = require(\"@atirip/matrix\");\n\n\t\n## API\n\n#####Create matrix:\n\n\tvar matrix = new Matrix(); // creates identity matrix\n\tvar matrix = new Matrix(1, 2, 3, 4, 5, 6);\n\tvar matrix = new Matrix(5, 6); // equals new Matrix(1, 0, 0, 1, 5, 6)\n\tvar matrix = new Matrix( new Matrix() ); // clone\n\nYou may omit `new`.\n\t\n#####Do some simple stuff with it:  \nAs a general principle - `this` Matrix is always changed!\n\t\n\tmatrix.rotate(45); // in degrees\n\tmatrix.scale(2); // in unoform\n\tmatrix.scale(2, 3);\n\tmatrix.translate(100, 50);\n\nComplex transform:\n\t\n\tmatrix.transform(originX, originY, angle, sx, sy, x, y);\n\nScale, rotate matrix over specified origin, then translate. This is how one implements gesture based zoom/rotate/translate in iOS webapp for example.\n\n#####Static utility functions:\n\n\tMatrix.transformPoint(matrix, x, y /*, result*/);\n\tMatrix.transformPointReverse(matrix, x, y /*, result*/);\n\tMatrix.decompose(decomposed);\n\tMatrix.compose(matrix /*, result*);\n\tMatrix.copy(from, to);\n\nIf you pass `result` object, it is used, if not, new is created. That avoids creating garbage in loops. \n\n##Test\n\n\t$ npm test\n\n## License\n\nCopyright &copy; 2015 Priit Pirita, released under the MIT license.\n\n","maintainers":[{"name":"atirip","email":"atirip@gmail.com"}],"time":{"modified":"2022-06-12T14:49:57.991Z","created":"2015-06-06T18:53:03.618Z","1.0.0":"2015-06-06T18:53:03.618Z"},"homepage":"https://github.com/atirip/matrix#readme","keywords":["matrix"],"repository":{"type":"git","url":"git+https://github.com/atirip/matrix.git"},"author":{"name":"Priit Pirita","email":"atirip@yahoo.com"},"bugs":{"url":"https://github.com/atirip/matrix/issues"},"license":"MIT","readmeFilename":"README.md"}