1 |
|
2 |
|
3 |
|
4 |
|
5 | import { OutNode, Edge, PointTuple, IndexMap } from './types';
|
6 | import { Base } from './base';
|
7 | declare type INode = OutNode & {
|
8 | size: number | PointTuple;
|
9 | };
|
10 | declare type NodeMap = {
|
11 | [key: string]: INode;
|
12 | };
|
13 |
|
14 |
|
15 |
|
16 | export declare class GForceLayout extends Base {
|
17 |
|
18 | center: PointTuple;
|
19 |
|
20 | maxIteration: number;
|
21 |
|
22 | edgeStrength: number | ((d?: any) => number) | undefined;
|
23 | /** 斥力系数 */
|
24 | nodeStrength: number | ((d?: any) => number) | undefined;
|
25 | /** 库伦系数 */
|
26 | coulombDisScale: number;
|
27 | /** 阻尼系数 */
|
28 | damping: number;
|
29 | /** 最大速度 */
|
30 | maxSpeed: number;
|
31 | /** 一次迭代的平均移动距离小于该值时停止迭代 */
|
32 | minMovement: number;
|
33 | /** 迭代中衰减 */
|
34 | interval: number;
|
35 | /** 斥力的一个系数 */
|
36 | factor: number;
|
37 | /** 每个节点质量的回调函数,若不指定,则默认使用度数作为节点质量 */
|
38 | getMass: ((d?: any) => number) | undefined;
|
39 | /** 每个节点中心力的 x、y、强度的回调函数,若不指定,则没有额外中心力 */
|
40 | getCenter: ((d?: any, degree?: number) => number[]) | undefined;
|
41 | /** 理想边长 */
|
42 | linkDistance: number | ((d?: any) => number) | undefined;
|
43 | /** 重力大小 */
|
44 | gravity: number;
|
45 | /** 是否防止重叠 */
|
46 | preventOverlap: boolean;
|
47 | /** 防止重叠时的节点大小,默认从节点数据中取 size */
|
48 | nodeSize: number | number[] | ((d?: any) => number) | undefined;
|
49 | /** 防止重叠时的节点之间最小间距 */
|
50 | nodeSpacing: number | number[] | ((d?: any) => number) | undefined;
|
51 | /** 每次迭代结束的回调函数 */
|
52 | tick: (() => void) | null;
|
53 | /** 是否允许每次迭代结束调用回调函数 */
|
54 | enableTick: boolean;
|
55 | nodes: INode[] | null;
|
56 | edges: Edge[] | null;
|
57 | width: number;
|
58 | height: number;
|
59 | nodeMap: NodeMap;
|
60 | nodeIdxMap: IndexMap;
|
61 | canvasEl: HTMLCanvasElement;
|
62 | onLayoutEnd: () => void;
|
63 |
|
64 | private degrees;
|
65 |
|
66 | private timeInterval;
|
67 | constructor(options?: GForceLayout.GForceLayoutOptions);
|
68 | getDefaultCfg(): {
|
69 | maxIteration: number;
|
70 | gravity: number;
|
71 | enableTick: boolean;
|
72 | };
|
73 | |
74 |
|
75 |
|
76 | execute(): void;
|
77 | run(): void;
|
78 | calRepulsive(accArray: number[], nodes: INode[]): void;
|
79 | calAttractive(accArray: number[], edges: Edge[]): void;
|
80 | calGravity(accArray: number[], nodes: INode[]): void;
|
81 | updateVelocity(accArray: number[], velArray: number[], stepInterval: number, nodes: INode[]): void;
|
82 | updatePosition(velArray: number[], stepInterval: number, nodes: INode[]): void;
|
83 | stop(): void;
|
84 | destroy(): void;
|
85 | getType(): string;
|
86 | }
|
87 | export declare namespace GForceLayout {
|
88 | interface GForceLayoutOptions {
|
89 | type?: 'gForce';
|
90 | center?: PointTuple;
|
91 | width?: number;
|
92 | height?: number;
|
93 | linkDistance?: number | ((d?: any) => number) | undefined;
|
94 | nodeStrength?: number | ((d?: any) => number) | undefined;
|
95 | edgeStrength?: number | ((d?: any) => number) | undefined;
|
96 | preventOverlap?: boolean;
|
97 | nodeSize?: number | number[] | ((d?: any) => number) | undefined;
|
98 | nodeSpacing?: number | number[] | ((d?: any) => number) | undefined;
|
99 | minMovement?: number;
|
100 | maxIteration?: number;
|
101 | damping?: number;
|
102 | maxSpeed?: number;
|
103 | coulombDisScale?: number;
|
104 | getMass?: ((d?: any) => number) | undefined;
|
105 | getCenter?: ((d?: any, degree?: number) => number[]) | undefined;
|
106 | gravity?: number;
|
107 | tick?: () => void;
|
108 | onLayoutEnd?: () => void;
|
109 | workerEnabled?: boolean;
|
110 | gpuEnabled?: boolean;
|
111 | }
|
112 | }
|
113 | export {};
|