123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- import { Point } from './point';
- import { Geometry } from './geometry';
- import { Rectangle } from './rectangle';
- import { Ellipse } from './ellipse';
- import { Path } from './path';
- import { Polyline } from './polyline';
- export declare class Line extends Geometry {
- start: Point;
- end: Point;
- get center(): Point;
- constructor();
- constructor(x1: number, y1: number, x2: number, y2: number);
- constructor(p1: Point.PointLike | Point.PointData, p2: Point.PointLike | Point.PointData);
- getCenter(): Point;
- /**
- * Rounds the line to the given `precision`.
- */
- round(precision?: number): this;
- translate(tx: number, ty: number): this;
- translate(p: Point.PointLike | Point.PointData): this;
- /**
- * Rotate the line by `angle` around `origin`.
- */
- rotate(angle: number, origin?: Point.PointLike | Point.PointData): this;
- /**
- * Scale the line by `sx` and `sy` about the given `origin`. If origin is not
- * specified, the line is scaled around `0,0`.
- */
- scale(sx: number, sy: number, origin?: Point.PointLike | Point.PointData): this;
- /**
- * Returns the length of the line.
- */
- length(): number;
- /**
- * Useful for distance comparisons in which real length is not necessary
- * (saves one `Math.sqrt()` operation).
- */
- squaredLength(): number;
- /**
- * Scale the line so that it has the requested length. The start point of
- * the line is preserved.
- */
- setLength(length: number): this;
- parallel(distance: number): Line;
- /**
- * Returns the vector of the line with length equal to length of the line.
- */
- vector(): Point;
- /**
- * Returns the angle of incline of the line.
- *
- * The function returns `NaN` if the start and end endpoints of the line
- * both lie at the same coordinates(it is impossible to determine the angle
- * of incline of a line that appears to be a point). The
- * `line.isDifferentiable()` function may be used in advance to determine
- * whether the angle of incline can be computed for a given line.
- */
- angle(): number;
- /**
- * Returns a rectangle that is the bounding box of the line.
- */
- bbox(): Rectangle;
- /**
- * Returns the bearing (cardinal direction) of the line.
- *
- * The return value is one of the following strings:
- * 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW' and 'N'.
- *
- * The function returns 'N' if the two endpoints of the line are coincident.
- */
- bearing(): Point.Bearing;
- /**
- * Returns the point on the line that lies closest to point `p`.
- */
- closestPoint(p: Point.PointLike | Point.PointData): Point;
- /**
- * Returns the length of the line up to the point that lies closest to point `p`.
- */
- closestPointLength(p: Point.PointLike | Point.PointData): number;
- /**
- * Returns a line that is tangent to the line at the point that lies closest
- * to point `p`.
- */
- closestPointTangent(p: Point.PointLike | Point.PointData): Line | null;
- /**
- * Returns the normalized length (distance from the start of the line / total
- * line length) of the line up to the point that lies closest to point.
- */
- closestPointNormalizedLength(p: Point.PointLike | Point.PointData): number;
- /**
- * Returns a point on the line that lies `rate` (normalized length) away from
- * the beginning of the line.
- */
- pointAt(ratio: number): Point;
- /**
- * Returns a point on the line that lies length away from the beginning of
- * the line.
- */
- pointAtLength(length: number): Point;
- /**
- * Divides the line into two lines at the point that lies `rate` (normalized
- * length) away from the beginning of the line.
- */
- divideAt(ratio: number): Line[];
- /**
- * Divides the line into two lines at the point that lies length away from
- * the beginning of the line.
- */
- divideAtLength(length: number): Line[];
- /**
- * Returns `true` if the point `p` lies on the line. Return `false` otherwise.
- */
- containsPoint(p: Point.PointLike | Point.PointData): boolean;
- /**
- * Returns an array of the intersection points of the line with another
- * geometry shape.
- */
- intersect(shape: Line | Rectangle | Polyline | Ellipse): Point[] | null;
- intersect(shape: Path, options?: Path.Options): Point[] | null;
- /**
- * Returns the intersection point of the line with another line. Returns
- * `null` if no intersection exists.
- */
- intersectsWithLine(line: Line): Point | null;
- /**
- * Returns `true` if a tangent line can be found for the line.
- *
- * Tangents cannot be found if both of the line endpoints are coincident
- * (the line appears to be a point).
- */
- isDifferentiable(): boolean;
- /**
- * Returns the perpendicular distance between the line and point. The
- * distance is positive if the point lies to the right of the line, negative
- * if the point lies to the left of the line, and `0` if the point lies on
- * the line.
- */
- pointOffset(p: Point.PointLike | Point.PointData): number;
- /**
- * Returns the squared distance between the line and the point.
- */
- pointSquaredDistance(x: number, y: number): number;
- pointSquaredDistance(p: Point.PointLike | Point.PointData): number;
- /**
- * Returns the distance between the line and the point.
- */
- pointDistance(x: number, y: number): number;
- pointDistance(p: Point.PointLike | Point.PointData): number;
- /**
- * Returns a line tangent to the line at point that lies `rate` (normalized
- * length) away from the beginning of the line.
- */
- tangentAt(ratio: number): Line | null;
- /**
- * Returns a line tangent to the line at point that lies `length` away from
- * the beginning of the line.
- */
- tangentAtLength(length: number): Line | null;
- /**
- * Returns which direction the line would have to rotate in order to direct
- * itself at a point.
- *
- * Returns 1 if the given point on the right side of the segment, 0 if its
- * on the segment, and -1 if the point is on the left side of the segment.
- *
- * @see https://softwareengineering.stackexchange.com/questions/165776/what-do-ptlinedist-and-relativeccw-do
- */
- relativeCcw(x: number, y: number): -1 | 0 | 1;
- relativeCcw(p: Point.PointLike | Point.PointData): -1 | 0 | 1;
- /**
- * Return `true` if the line equals the other line.
- */
- equals(l: Line): boolean;
- /**
- * Returns another line which is a clone of the line.
- */
- clone(): Line;
- toJSON(): {
- start: {
- x: number;
- y: number;
- };
- end: {
- x: number;
- y: number;
- };
- };
- serialize(): string;
- }
- export declare namespace Line {
- function isLine(instance: any): instance is Line;
- }
|