@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering
81 lines (80 loc) • 3.13 kB
TypeScript
import { Line } from './line';
import { Point, PointOptions } from './point';
import { Polyline } from './polyline';
import { Rectangle } from './rectangle';
import { Geometry } from './geometry';
export declare class Curve extends Geometry {
static isCurve(instance: any): instance is Curve;
static throughPoints(points: PointOptions[]): any[];
start: Point;
end: Point;
controlPoint1: Point;
controlPoint2: Point;
PRECISION: number;
constructor(start: PointOptions, controlPoint1: PointOptions, controlPoint2: PointOptions, end: PointOptions);
bbox(): Rectangle;
closestPoint(p: PointOptions, options?: CurveOptions): Point;
closestPointLength(p: PointOptions, options?: CurveOptions): number;
closestPointNormalizedLength(p: PointOptions, options?: CurveOptions): number;
closestPointT(p: PointOptions, options?: CurveOptions): number;
closestPointTangent(p: PointOptions, options?: CurveOptions): Line;
containsPoint(p: PointOptions, options?: CurveOptions): boolean;
divideAt(ratio: number, options?: CurveOptions): [Curve, Curve];
divideAtLength(length: number, options?: CurveOptions): [Curve, Curve];
divide(t: number): [Curve, Curve];
divideAtT(t: number): [Curve, Curve];
endpointDistance(): number;
getSkeletonPoints(t: number): {
startControlPoint1: Point;
startControlPoint2: Point;
divider: Point;
dividerControlPoint1: Point;
dividerControlPoint2: Point;
};
getSubdivisions(options?: CurveOptions): Curve[];
length(options?: CurveOptions): number;
lengthAtT(t: number, options?: CurveOptions): number;
pointAt(ratio: number, options?: CurveOptions): Point;
pointAtLength(length: number, options?: CurveOptions): Point;
pointAtT(t: number): Point;
isDifferentiable(): boolean;
tangentAt(ratio: number, options?: CurveOptions): Line;
tangentAtLength(length: number, options?: CurveOptions): Line;
tangentAtT(t: number): Line;
protected getPrecision(options?: CurveOptions): number;
protected getDivisions(options?: CurveOptions): Curve[];
protected getOptions(options?: CurveOptions): CurveOptions;
protected tAt(ratio: number, options?: CurveOptions): number;
protected tAtLength(length: number, options?: CurveOptions): number;
toPoints(options?: CurveOptions): Point[];
toPolyline(options?: CurveOptions): Polyline;
scale(sx: number, sy: number, origin?: PointOptions): this;
rotate(angle: number, origin?: PointOptions): this;
translate(tx: number, ty: number): this;
translate(p: PointOptions): this;
equals(c: Curve): boolean;
clone(): Curve;
toJSON(): {
start: {
x: number;
y: number;
};
controlPoint1: {
x: number;
y: number;
};
controlPoint2: {
x: number;
y: number;
};
end: {
x: number;
y: number;
};
};
serialize(): string;
}
export interface CurveOptions {
precision?: number;
subdivisions?: Curve[];
}