polyline.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { pointAtSegments, angleAtSegments, distanceAtSegment, lengthOfSegment } from './segments';
  2. import { getBBoxByArray } from './util';
  3. export default {
  4. /**
  5. * 计算多折线的包围盒
  6. * @param {array} points 点的集合 [x,y] 的形式
  7. * @return {object} 包围盒
  8. */
  9. box: function (points) {
  10. var xArr = [];
  11. var yArr = [];
  12. for (var i = 0; i < points.length; i++) {
  13. var point = points[i];
  14. xArr.push(point[0]);
  15. yArr.push(point[1]);
  16. }
  17. return getBBoxByArray(xArr, yArr);
  18. },
  19. /**
  20. * 计算多折线的长度
  21. * @param {array} points 点的集合 [x,y] 的形式
  22. * @return {object} 多条边的长度
  23. */
  24. length: function (points) {
  25. return lengthOfSegment(points);
  26. },
  27. /**
  28. * 根据比例获取多折线的点
  29. * @param {array} points 点的集合 [x,y] 的形式
  30. * @param {number} t 在多折线的长度上的比例
  31. * @return {object} 根据比例值计算出来的点
  32. */
  33. pointAt: function (points, t) {
  34. return pointAtSegments(points, t);
  35. },
  36. /**
  37. * 指定点到多折线的距离
  38. * @param {array} points 点的集合 [x,y] 的形式
  39. * @param {number} x 指定点的 x
  40. * @param {number} y 指定点的 y
  41. * @return {number} 点到多折线的距离
  42. */
  43. pointDistance: function (points, x, y) {
  44. return distanceAtSegment(points, x, y);
  45. },
  46. /**
  47. * 根据比例获取多折线的切线角度
  48. * @param {array} points 点的集合 [x,y] 的形式
  49. * @param {number} t 在多折线的长度上的比例
  50. * @return {object} 根据比例值计算出来的角度
  51. */
  52. tangentAngle: function (points, t) {
  53. return angleAtSegments(points, t);
  54. },
  55. };
  56. //# sourceMappingURL=polyline.js.map