@visactor/vgrammar-venn
Version:
Venn layout transform for VGrammar
46 lines (45 loc) • 1.16 kB
TypeScript
import type { ICircle, IPointLike } from '@visactor/vutils';
export type VennCircleName = string;
export type VennAreaName = string;
export interface IVennCircle extends ICircle {
setId: VennCircleName;
parent?: IVennCircle;
}
export interface IVennArea {
sets: VennCircleName[];
size: number;
weight?: number;
label?: string;
}
export interface IVennSingleArea {
set: VennCircleName;
size: number;
weight?: number;
}
export interface IVennParams {
maxIterations?: number;
initialLayout?: (areas: IVennArea[], params: IVennParams) => Record<VennCircleName, IVennCircle>;
lossFunction?: (sets: Record<VennCircleName, IVennCircle>, overlaps: IVennArea[]) => number;
restarts?: number;
history?: any;
}
export interface ICluster extends Array<IVennCircle> {
size?: number;
bounds?: {
xRange: {
max: number;
min: number;
};
yRange: {
max: number;
min: number;
};
};
}
export interface IVennOverlapArc {
p1: IPointLike;
p2: IPointLike;
radius: number;
largeArcFlag: boolean;
setId: VennCircleName;
}