matrix.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. "use strict";
  2. exports.__esModule = true;
  3. exports["default"] = void 0;
  4. var Matrix = {
  5. generateDefault: function generateDefault() {
  6. return [1, 0, 0, 1, 0, 0];
  7. },
  8. isChanged: function isChanged(m) {
  9. return m[0] !== 1 || m[1] !== 0 || m[2] !== 0 || m[3] !== 1 || m[4] !== 0 || m[5] !== 0;
  10. },
  11. multiply: function multiply(m1, m2) {
  12. var m11 = m1[0] * m2[0] + m1[2] * m2[1];
  13. var m12 = m1[1] * m2[0] + m1[3] * m2[1];
  14. var m21 = m1[0] * m2[2] + m1[2] * m2[3];
  15. var m22 = m1[1] * m2[2] + m1[3] * m2[3];
  16. var dx = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];
  17. var dy = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];
  18. return [m11, m12, m21, m22, dx, dy];
  19. },
  20. scale: function scale(out, m, v) {
  21. out[0] = m[0] * v[0];
  22. out[1] = m[1] * v[0];
  23. out[2] = m[2] * v[1];
  24. out[3] = m[3] * v[1];
  25. out[4] = m[4];
  26. out[5] = m[5];
  27. return out;
  28. },
  29. rotate: function rotate(out, m, radian) {
  30. var c = Math.cos(radian);
  31. var s = Math.sin(radian);
  32. var m11 = m[0] * c + m[2] * s;
  33. var m12 = m[1] * c + m[3] * s;
  34. var m21 = m[0] * -s + m[2] * c;
  35. var m22 = m[1] * -s + m[3] * c;
  36. out[0] = m11;
  37. out[1] = m12;
  38. out[2] = m21;
  39. out[3] = m22;
  40. out[4] = m[4];
  41. out[5] = m[5];
  42. return out;
  43. },
  44. translate: function translate(out, m, v) {
  45. out[0] = m[0];
  46. out[1] = m[1];
  47. out[2] = m[2];
  48. out[3] = m[3];
  49. out[4] = m[4] + m[0] * v[0] + m[2] * v[1];
  50. out[5] = m[5] + m[1] * v[0] + m[3] * v[1];
  51. return out;
  52. },
  53. transform: function transform(m, actions) {
  54. var out = [].concat(m);
  55. for (var i = 0, len = actions.length; i < len; i++) {
  56. var action = actions[i];
  57. switch (action[0]) {
  58. case 't':
  59. Matrix.translate(out, out, [action[1], action[2]]);
  60. break;
  61. case 's':
  62. Matrix.scale(out, out, [action[1], action[2]]);
  63. break;
  64. case 'r':
  65. Matrix.rotate(out, out, action[1]);
  66. break;
  67. default:
  68. break;
  69. }
  70. }
  71. return out;
  72. }
  73. };
  74. var _default = Matrix;
  75. exports["default"] = _default;