matrix.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.vertical = exports.rotate = exports.normalize = exports.distance = exports.max = exports.min = exports.sub = exports.add = exports.scale = void 0;
  4. var tslib_1 = require("tslib");
  5. /**
  6. * @param vec
  7. * @param s
  8. */
  9. function scale(vec, s) {
  10. return [vec[0] * s, vec[1] * s];
  11. }
  12. exports.scale = scale;
  13. function add(vec1, vec2) {
  14. return [vec1[0] + vec2[0], vec1[1] + vec2[1]];
  15. }
  16. exports.add = add;
  17. function sub(vec1, vec2) {
  18. return [vec1[0] - vec2[0], vec1[1] - vec2[1]];
  19. }
  20. exports.sub = sub;
  21. function min(vec1, vec2) {
  22. return [Math.min(vec1[0], vec2[0]), Math.min(vec1[1], vec2[1])];
  23. }
  24. exports.min = min;
  25. function max(vec1, vec2) {
  26. return [Math.max(vec1[0], vec2[0]), Math.max(vec1[1], vec2[1])];
  27. }
  28. exports.max = max;
  29. function distance(vec1, vec2) {
  30. return Math.sqrt(Math.pow((vec1[0] - vec2[0]), 2) + Math.pow((vec1[1] - vec2[1]), 2));
  31. }
  32. exports.distance = distance;
  33. function normalize(vec) {
  34. if (vec[0] === 0 && vec[1] === 0)
  35. return [0, 0];
  36. var len = Math.sqrt(Math.pow(vec[0], 2) + Math.pow(vec[1], 2));
  37. return [vec[0] / len, vec[1] / len];
  38. }
  39. exports.normalize = normalize;
  40. /**
  41. * 将给定向量围绕指定点旋转指定角度
  42. * @param vec
  43. * @param origin 旋转中心
  44. * @param angle 旋转角度,弧度制
  45. */
  46. function rotate(vec, origin, angle) {
  47. var _a = tslib_1.__read(vec, 2), x = _a[0], y = _a[1];
  48. var _b = tslib_1.__read(origin, 2), ox = _b[0], oy = _b[1];
  49. var dx = x - ox;
  50. var dy = y - oy;
  51. var sin = Math.sin(angle);
  52. var cos = Math.cos(angle);
  53. return [dx * cos - dy * sin + ox, dx * sin + dy * cos + oy];
  54. }
  55. exports.rotate = rotate;
  56. function vertical(vec, flag) {
  57. return flag ? [vec[1], -vec[0]] : [-vec[1], vec[0]];
  58. }
  59. exports.vertical = vertical;
  60. //# sourceMappingURL=matrix.js.map