ellipse.d.ts 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /**
  2. * @fileoverview 椭圆的一些计算,
  3. * - 周长计算参考:https://www.mathsisfun.com/geometry/ellipse-perimeter.html
  4. * - 距离计算参考:https://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/
  5. * @author dxq613@gmail.com
  6. */
  7. import { Point, BBox } from './types';
  8. declare const _default: {
  9. /**
  10. * 包围盒计算
  11. * @param {number} x 椭圆中心 x
  12. * @param {number} y 椭圆中心 y
  13. * @param {number} rx 椭圆 x 方向半径
  14. * @param {number} ry 椭圆 y 方向半径
  15. * @return {object} 包围盒
  16. */
  17. box(x: number, y: number, rx: number, ry: number): BBox;
  18. /**
  19. * 计算周长,使用近似法
  20. * @param {number} x 椭圆中心 x
  21. * @param {number} y 椭圆中心 y
  22. * @param {number} rx 椭圆 x 方向半径
  23. * @param {number} ry 椭圆 y 方向半径
  24. * @return {number} 椭圆周长
  25. */
  26. length(x: number, y: number, rx: number, ry: number): number;
  27. /**
  28. * 距离椭圆最近的点
  29. * @param {number} x 椭圆中心 x
  30. * @param {number} y 椭圆中心 y
  31. * @param {number} rx 椭圆 x 方向半径
  32. * @param {number} ry 椭圆 y 方向半径
  33. * @param {number} x0 指定的点 x
  34. * @param {number} y0 指定的点 y
  35. * @return {object} 椭圆上距离指定点最近的点
  36. */
  37. nearestPoint(x: number, y: number, rx: number, ry: number, x0: number, y0: number): {
  38. x: number;
  39. y: number;
  40. };
  41. /**
  42. * 点到椭圆最近的距离
  43. * @param {number} x 椭圆中心 x
  44. * @param {number} y 椭圆中心 y
  45. * @param {number} rx 椭圆 x 方向半径
  46. * @param {number} ry 椭圆 y 方向半径
  47. * @param {number} x0 指定的点 x
  48. * @param {number} y0 指定的点 y
  49. * @return {number} 点到椭圆的距离
  50. */
  51. pointDistance(x: number, y: number, rx: number, ry: number, x0: number, y0: number): number;
  52. /**
  53. * 根据比例获取点
  54. * @param {number} x 椭圆中心 x
  55. * @param {number} y 椭圆中心 y
  56. * @param {number} rx 椭圆 x 方向半径
  57. * @param {number} ry 椭圆 y 方向半径
  58. * @param {number} t 指定比例,x轴方向为 0
  59. * @return {object} 点
  60. */
  61. pointAt(x: number, y: number, rx: number, ry: number, t: number): Point;
  62. /**
  63. * 根据比例计算切线角度
  64. * @param {number} x 椭圆中心 x
  65. * @param {number} y 椭圆中心 y
  66. * @param {number} rx 椭圆 x 方向半径
  67. * @param {number} ry 椭圆 y 方向半径
  68. * @param {number} t 指定比例 0 - 1 之间,x轴方向为 0。在 0-1 范围之外是循环还是返回 null,还需要调整
  69. * @return {number} 角度,在 0 - 2PI 之间
  70. */
  71. tangentAngle(x: number, y: number, rx: number, ry: number, t: number): number;
  72. };
  73. export default _default;