@antv/f6-plugin
Version:
F6 plugin
59 lines (58 loc) • 1.89 kB
TypeScript
import Base, { IPluginBaseConfig } from '../base';
import { IEdge, GraphData, NodeConfig } from '@antv/f6-core';
import { Point } from '@antv/g-base';
interface BundlingConfig extends IPluginBaseConfig {
edgeBundles?: IEdge[];
edgePoints?: NodeConfig[];
K?: number;
lambda?: number;
divisions?: number;
divRate?: number;
cycles?: number;
iterations?: number;
iterRate?: number;
bundleThreshold?: number;
eps?: number;
onLayoutEnd?: () => void;
onTick?: () => void;
}
interface VectorPosition {
source: {
x: number;
y: number;
};
target: {
x: number;
y: number;
};
vx: number;
vy: number;
length: number;
}
export default class Bundling extends Base {
constructor(config?: BundlingConfig);
getDefaultCfgs(): BundlingConfig;
init(): void;
bundling(data: GraphData): void;
updateBundling(cfg: BundlingConfig): void;
divideEdges(divisions: number): Point[][];
/**
* 计算边的长度
* @param points
*/
getEdgeLength(points: Point[]): number;
getEdgeBundles(): number[];
getBundleScore(ei: any, ej: any): number;
protected getAngleScore(ei: VectorPosition, ej: VectorPosition): number;
protected getScaleScore(ei: VectorPosition, ej: VectorPosition): number;
protected getPositionScore(ei: VectorPosition, ej: VectorPosition): number;
protected getVisibilityScore(ei: VectorPosition, ej: VectorPosition): number;
protected getEdgeVisibility(ei: VectorPosition, ej: VectorPosition): number;
protected getEdgeForces(e: any, eidx: number, divisions: number, lambda: number): Point[];
protected getSpringForce(divisions: any, kp: number): Point;
protected getElectrostaticForce(pidx: number, eidx: number): Point;
isTicking(): boolean;
getSimulation(): any;
destroy(): void;
}
export {};