matrix.js 1.4 KB

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