87 lines
3.5 KiB
TypeScript
87 lines
3.5 KiB
TypeScript
import { Line } from './line';
|
|
import { Point } from './point';
|
|
import { Polyline } from './polyline';
|
|
import { Rectangle } from './rectangle';
|
|
import { Geometry } from './geometry';
|
|
export declare class Curve extends Geometry {
|
|
start: Point;
|
|
end: Point;
|
|
controlPoint1: Point;
|
|
controlPoint2: Point;
|
|
PRECISION: number;
|
|
constructor(start: Point.PointLike | Point.PointData, controlPoint1: Point.PointLike | Point.PointData, controlPoint2: Point.PointLike | Point.PointData, end: Point.PointLike | Point.PointData);
|
|
bbox(): Rectangle;
|
|
closestPoint(p: Point.PointLike | Point.PointData, options?: Curve.Options): Point;
|
|
closestPointLength(p: Point.PointLike | Point.PointData, options?: Curve.Options): number;
|
|
closestPointNormalizedLength(p: Point.PointLike | Point.PointData, options?: Curve.Options): number;
|
|
closestPointT(p: Point.PointLike | Point.PointData, options?: Curve.Options): number;
|
|
closestPointTangent(p: Point.PointLike | Point.PointData, options?: Curve.Options): Line | null;
|
|
containsPoint(p: Point.PointLike | Point.PointData, options?: Curve.Options): boolean;
|
|
divideAt(ratio: number, options?: Curve.Options): [Curve, Curve];
|
|
divideAtLength(length: number, options?: Curve.Options): [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?: Curve.Options): Curve[];
|
|
length(options?: Curve.Options): number;
|
|
lengthAtT(t: number, options?: Curve.Options): number;
|
|
pointAt(ratio: number, options?: Curve.Options): Point;
|
|
pointAtLength(length: number, options?: Curve.Options): Point;
|
|
pointAtT(t: number): Point;
|
|
isDifferentiable(): boolean;
|
|
tangentAt(ratio: number, options?: Curve.Options): Line | null;
|
|
tangentAtLength(length: number, options?: Curve.Options): Line | null;
|
|
tangentAtT(t: number): Line | null;
|
|
protected getPrecision(options?: Curve.Options): number;
|
|
protected getDivisions(options?: Curve.Options): Curve[];
|
|
protected getOptions(options?: Curve.Options): Curve.Options;
|
|
protected tAt(ratio: number, options?: Curve.Options): number;
|
|
protected tAtLength(length: number, options?: Curve.Options): number;
|
|
toPoints(options?: Curve.Options): Point[];
|
|
toPolyline(options?: Curve.Options): Polyline;
|
|
scale(sx: number, sy: number, origin?: Point.PointLike | Point.PointData): this;
|
|
rotate(angle: number, origin?: Point.PointLike | Point.PointData): this;
|
|
translate(tx: number, ty: number): this;
|
|
translate(p: Point.PointLike | Point.PointData): 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 declare namespace Curve {
|
|
function isCurve(instance: any): instance is Curve;
|
|
}
|
|
export declare namespace Curve {
|
|
interface Options {
|
|
precision?: number;
|
|
subdivisions?: Curve[];
|
|
}
|
|
}
|
|
export declare namespace Curve {
|
|
function throughPoints(points: (Point.PointLike | Point.PointData)[]): Curve[];
|
|
}
|