circle.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var util_1 = require("./util");
  4. exports.default = {
  5. /**
  6. * 计算包围盒
  7. * @param {number} x 圆心 x
  8. * @param {number} y 圆心 y
  9. * @param {number} r 半径
  10. * @return {object} 包围盒
  11. */
  12. box: function (x, y, r) {
  13. return {
  14. x: x - r,
  15. y: y - r,
  16. width: 2 * r,
  17. height: 2 * r,
  18. };
  19. },
  20. /**
  21. * 计算周长
  22. * @param {number} x 圆心 x
  23. * @param {number} y 圆心 y
  24. * @param {number} r 半径
  25. * @return {number} 周长
  26. */
  27. length: function (x, y, r) {
  28. return Math.PI * 2 * r;
  29. },
  30. /**
  31. * 根据比例获取点
  32. * @param {number} x 圆心 x
  33. * @param {number} y 圆心 y
  34. * @param {number} r 半径
  35. * @param {number} t 指定比例,x轴方向为 0
  36. * @return {object} 点
  37. */
  38. pointAt: function (x, y, r, t) {
  39. var angle = Math.PI * 2 * t;
  40. return {
  41. x: x + r * Math.cos(angle),
  42. y: y + r * Math.sin(angle),
  43. };
  44. },
  45. /**
  46. * 点到圆的距离
  47. * @param {number} x 圆心 x
  48. * @param {number} y 圆心 y
  49. * @param {number} r 半径
  50. * @param {number} x0 指定的点 x
  51. * @param {number} y0 指定的点 y
  52. * @return {number} 距离
  53. */
  54. pointDistance: function (x, y, r, x0, y0) {
  55. return Math.abs(util_1.distance(x, y, x0, y0) - r);
  56. },
  57. /**
  58. * 根据比例计算切线角度
  59. * @param {number} x 圆心 x
  60. * @param {number} y 圆心 y
  61. * @param {number} r 半径
  62. * @param {number} t 指定比例 0 - 1 之间,x轴方向为 0。在 0-1 范围之外是循环还是返回 null,还需要调整
  63. * @return {number} 角度,在 0 - 2PI 之间
  64. */
  65. tangentAngle: function (x, y, r, t) {
  66. var angle = Math.PI * 2 * t;
  67. return util_1.piMod(angle + Math.PI / 2);
  68. },
  69. };
  70. //# sourceMappingURL=circle.js.map