92 lines
3.3 KiB
TypeScript
92 lines
3.3 KiB
TypeScript
import { Line } from './line';
|
|
import { Point } from './point';
|
|
import { Rectangle } from './rectangle';
|
|
import { Geometry } from './geometry';
|
|
export declare class Ellipse extends Geometry implements Ellipse.EllipseLike {
|
|
x: number;
|
|
y: number;
|
|
a: number;
|
|
b: number;
|
|
get center(): Point;
|
|
constructor(x?: number, y?: number, a?: number, b?: number);
|
|
/**
|
|
* Returns a rectangle that is the bounding box of the ellipse.
|
|
*/
|
|
bbox(): Rectangle;
|
|
/**
|
|
* Returns a point that is the center of the ellipse.
|
|
*/
|
|
getCenter(): Point;
|
|
/**
|
|
* Returns ellipse inflated in axis-x by `2 * amount` and in axis-y by
|
|
* `2 * amount`.
|
|
*/
|
|
inflate(amount: number): this;
|
|
/**
|
|
* Returns ellipse inflated in axis-x by `2 * dx` and in axis-y by `2 * dy`.
|
|
*/
|
|
inflate(dx: number, dy: number): this;
|
|
/**
|
|
* Returns a normalized distance from the ellipse center to point `p`.
|
|
* Returns `n < 1` for points inside the ellipse, `n = 1` for points
|
|
* lying on the ellipse boundary and `n > 1` for points outside the ellipse.
|
|
*/
|
|
normalizedDistance(x: number, y: number): number;
|
|
normalizedDistance(p: Point.PointLike | Point.PointData): number;
|
|
/**
|
|
* Returns `true` if the point `p` is inside the ellipse (inclusive).
|
|
* Returns `false` otherwise.
|
|
*/
|
|
containsPoint(x: number, y: number): boolean;
|
|
containsPoint(p: Point.PointLike | Point.PointData): boolean;
|
|
/**
|
|
* Returns an array of the intersection points of the ellipse and the line.
|
|
* Returns `null` if no intersection exists.
|
|
*/
|
|
intersectsWithLine(line: Line): Point[] | null;
|
|
/**
|
|
* Returns the point on the boundary of the ellipse that is the
|
|
* intersection of the ellipse with a line starting in the center
|
|
* of the ellipse ending in the point `p`.
|
|
*
|
|
* If angle is specified, the intersection will take into account
|
|
* the rotation of the ellipse by angle degrees around its center.
|
|
*/
|
|
intersectsWithLineFromCenterToPoint(p: Point.PointLike | Point.PointData, angle?: number): Point;
|
|
/**
|
|
* Returns the angle between the x-axis and the tangent from a point. It is
|
|
* valid for points lying on the ellipse boundary only.
|
|
*/
|
|
tangentTheta(p: Point.PointLike | Point.PointData): number;
|
|
scale(sx: number, sy: number): this;
|
|
rotate(angle: number, origin?: Point.PointLike | Point.PointData): this;
|
|
translate(dx: number, dy: number): this;
|
|
translate(p: Point.PointLike | Point.PointData): this;
|
|
equals(ellipse: Ellipse): boolean;
|
|
clone(): Ellipse;
|
|
toJSON(): {
|
|
x: number;
|
|
y: number;
|
|
a: number;
|
|
b: number;
|
|
};
|
|
serialize(): string;
|
|
}
|
|
export declare namespace Ellipse {
|
|
function isEllipse(instance: any): instance is Ellipse;
|
|
}
|
|
export declare namespace Ellipse {
|
|
interface EllipseLike extends Point.PointLike {
|
|
x: number;
|
|
y: number;
|
|
a: number;
|
|
b: number;
|
|
}
|
|
type EllipseData = [number, number, number, number];
|
|
}
|
|
export declare namespace Ellipse {
|
|
function create(x?: number | Ellipse | EllipseLike | EllipseData, y?: number, a?: number, b?: number): Ellipse;
|
|
function parse(e: Ellipse | EllipseLike | EllipseData): Ellipse;
|
|
function fromRect(rect: Rectangle): Ellipse;
|
|
}
|