/** * @fileOverview fruchterman layout * @author shiwu.wyy@antfin.com */ import { OutNode, Edge, PointTuple, IndexMap } from './types'; import { Base } from './base'; declare type NodeMap = { [key: string]: INode; }; declare type INode = OutNode & { cluster: string; }; /** * fruchterman 布局 */ export declare class FruchtermanLayout extends Base { /** 布局中心 */ center: PointTuple; /** 停止迭代的最大迭代数 */ maxIteration: number; /** 重力大小,影响图的紧凑程度 */ gravity: number; /** 速度 */ speed: number; /** 是否产生聚类力 */ clustering: boolean; /** 聚类力大小 */ clusterGravity: number; nodes: INode[]; edges: Edge[]; width: number; height: number; nodeMap: NodeMap; nodeIdxMap: IndexMap; constructor(options?: FruchtermanLayout.FruchtermanLayoutOptions); getDefaultCfg(): { maxIteration: number; gravity: number; speed: number; clustering: boolean; clusterGravity: number; }; /** * 执行布局 */ execute(): { nodes: INode[]; edges: Edge[]; } | undefined; run(): { nodes: INode[]; edges: Edge[]; }; private applyCalculate; private calRepulsive; private calAttractive; getType(): string; } export declare namespace FruchtermanLayout { interface FruchtermanLayoutOptions { type: 'fruchterman'; center?: PointTuple; maxIteration?: number; width?: number; height?: number; gravity?: number; speed?: number; clustering?: boolean; clusterGravity?: number; workerEnabled?: boolean; gpuEnabled?: boolean; } } export {};