8c0398c826304e4fe7264e8b01695d5af82a280bb9a117d3a92c5edf12be42e814dcb16795c8de7786577ae0322311d529f751c4a7f07b1dbe88b4734775b8 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { VectorArray } from 'zrender/lib/core/vector.js';
  2. declare type KDTreePoint = {
  3. array: VectorArray;
  4. };
  5. declare class KDTreeNode<T> {
  6. left: KDTreeNode<T>;
  7. right: KDTreeNode<T>;
  8. axis: number;
  9. data: T;
  10. constructor(axis: number, data: T);
  11. }
  12. /**
  13. * @constructor
  14. * @alias module:echarts/data/KDTree
  15. * @param {Array} points List of points.
  16. * each point needs an array property to repesent the actual data
  17. * @param {Number} [dimension]
  18. * Point dimension.
  19. * Default will use the first point's length as dimensiont
  20. */
  21. declare class KDTree<T extends KDTreePoint> {
  22. dimension: number;
  23. root: KDTreeNode<T>;
  24. private _stack;
  25. private _nearstNList;
  26. constructor(points: T[], dimension?: number);
  27. /**
  28. * Resursively build the tree
  29. */
  30. private _buildTree;
  31. /**
  32. * Find nearest point
  33. * @param target Target point
  34. * @param squaredDistance Squared distance function
  35. * @return Nearest point
  36. */
  37. nearest(target: T, squaredDistance: (a: T, b: T) => number): T;
  38. _addNearest(found: number, dist: number, node: KDTreeNode<T>): void;
  39. /**
  40. * Find nearest N points
  41. * @param target Target point
  42. * @param N
  43. * @param squaredDistance Squared distance function
  44. * @param output Output nearest N points
  45. */
  46. nearestN(target: T, N: number, squaredDistance: (a: T, b: T) => number, output: T[]): T[];
  47. }
  48. export default KDTree;