rect.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var segments_1 = require("./segments");
  4. function getPoints(x, y, width, height) {
  5. return [
  6. [x, y],
  7. [x + width, y],
  8. [x + width, y + height],
  9. [x, y + height],
  10. [x, y],
  11. ];
  12. }
  13. exports.default = {
  14. /**
  15. * 矩形包围盒计算
  16. * @param {number} x 起始点 x
  17. * @param {number} y 起始点 y
  18. * @param {number} width 宽度
  19. * @param {number} height 高度
  20. * @return {object} 包围盒
  21. */
  22. box: function (x, y, width, height) {
  23. return {
  24. x: x,
  25. y: y,
  26. width: width,
  27. height: height,
  28. };
  29. },
  30. /**
  31. * 长度,矩形不需要传入 x, y 即可计算周长,但是避免出错
  32. * @param {number} x 起始点 x
  33. * @param {number} y 起始点 y
  34. * @param {number} width 宽
  35. * @param {number} height 高
  36. */
  37. length: function (x, y, width, height) {
  38. return (width + height) * 2;
  39. },
  40. /**
  41. * 点到矩形的最小距离
  42. * @param {number} x 起始点 x
  43. * @param {number} y 起始点 y
  44. * @param {number} width 宽度
  45. * @param {number} height 高度
  46. * @param {number} x0 指定点的 x
  47. * @param {number} y0 指定点的 y
  48. * @return {number} 最短距离
  49. */
  50. pointDistance: function (x, y, width, height, x0, y0) {
  51. var points = getPoints(x, y, width, height);
  52. return segments_1.distanceAtSegment(points, x0, y0);
  53. },
  54. /**
  55. * 按照比例计算对应的点
  56. * @param {number} x 起始点 x
  57. * @param {number} y 起始点 y
  58. * @param {number} width 宽度
  59. * @param {number} height 高度
  60. * @param {number} t 比例 0-1 之间的值
  61. * @return {object} 计算出来的点信息,包含 x,y
  62. */
  63. pointAt: function (x, y, width, height, t) {
  64. // 边界判断,避免获取顶点
  65. if (t > 1 || t < 0) {
  66. return null;
  67. }
  68. var points = getPoints(x, y, width, height);
  69. return segments_1.pointAtSegments(points, t);
  70. },
  71. /**
  72. * 获取对应点的切线角度
  73. * @param {number} x 起始点 x
  74. * @param {number} y 起始点 y
  75. * @param {number} width 宽度
  76. * @param {number} height 高度
  77. * @param {number} t 比例 0-1 之间的值
  78. * @return {number} 切线的角度
  79. */
  80. tangentAngle: function (x, y, width, height, t) {
  81. // 边界判断,避免获取顶点
  82. if (t > 1 || t < 0) {
  83. return 0;
  84. }
  85. var points = getPoints(x, y, width, height);
  86. return segments_1.angleAtSegments(points, t);
  87. },
  88. };
  89. //# sourceMappingURL=rect.js.map