/** * This is TypeScript rewrite of the Point class to use instead of the version imported in MapLibre. * It also uses a class instead of prototypes. */ /** * Row major 2x2 matrix */ export type Matrix2 = [number, number, number, number]; /** * a point */ export declare class Point { x: number; y: number; constructor(x: number, y: number); private _matMult; private _add; private _sub; private _mult; private _div; private _multByPoint; private _divByPoint; private _unit; private _perp; private _rotate; private _rotateAround; private _round; /** * Clone this point, returning a new point that can be modified * without affecting the old one. * @return {Point} the clone */ clone(): Point; /** * Add this point's x & y coordinates to another point, * yielding a new point. * @param {Point} p the other point * @return {Point} output point */ add(p: Point): Point; /** * Subtract this point's x & y coordinates to from point, * yielding a new point. * @param {Point} p the other point * @return {Point} output point */ sub(p: Point): Point; /** * Multiply this point's x & y coordinates by point, * yielding a new point. * @param {Point} p the other point * @return {Point} output point */ multByPoint(p: Point): Point; /** * Divide this point's x & y coordinates by point, * yielding a new point. * @param {Point} p the other point * @return {Point} output point */ divByPoint(p: Point): Point; /** * Multiply this point's x & y coordinates by a factor, * yielding a new point. * @param {Number} k factor * @return {Point} output point */ mult(k: number): Point; /** * Divide this point's x & y coordinates by a factor, * yielding a new point. * @param {Point} k factor * @return {Point} output point */ div(k: number): Point; /** * Rotate this point around the 0, 0 origin by an angle a, * given in radians * @param {Number} a angle to rotate around, in radians * @return {Point} output point */ rotate(a: number): Point; /** * Rotate this point around p point by an angle a, * given in radians * @param {Number} a angle to rotate around, in radians * @param {Point} p Point to rotate around * @return {Point} output point */ rotateAround(a: number, p: Point): Point; /** * Multiply this point by a 4x1 transformation matrix * @param {Array} m transformation matrix * @return {Point} output point */ matMult(m: Matrix2): Point; /** * Calculate this point but as a unit vector from 0, 0, meaning * that the distance from the resulting point to the 0, 0 * coordinate will be equal to 1 and the angle from the resulting * point to the 0, 0 coordinate will be the same as before. * @return {Point} unit vector point */ unit(): Point; /** * Compute a perpendicular point, where the new y coordinate * is the old x coordinate and the new x coordinate is the old y * coordinate multiplied by -1 * @return {Point} perpendicular point */ perp(): Point; /** * Return a version of this point with the x & y coordinates * rounded to integers. * @return {Point} rounded point */ round(): Point; /** * Return the magnitude of this point: this is the Euclidean * distance from the 0, 0 coordinate to this point's x and y * coordinates. * @return {Number} magnitude */ mag(): number; /** * Judge whether this point is equal to another point, returning * true or false. * @param {Point} other the other point * @return {boolean} whether the points are equal */ equals(other: Point): boolean; /** * Calculate the distance from this point to another point * @param {Point} p the other point * @return {Number} distance */ dist(p: Point): number; /** * Calculate the distance from this point to another point, * without the square root step. Useful if you're comparing * relative distances. * @param {Point} p the other point * @return {Number} distance */ distSqr(p: Point): number; /** * Get the angle from the 0, 0 coordinate to this point, in radians * coordinates. * @return {Number} angle */ angle(): number; /** * Get the angle from this point to another point, in radians * @param {Point} b the other point * @return {Number} angle */ angleTo(b: Point): number; /** * Get the angle between this point and another point, in radians * @param {Point} b the other point * @return {Number} angle */ angleWith(b: Point): number; angleWithSep(x: number, y: number): number; /** * Construct a point from an array if necessary, otherwise if the input * is already a Point, or an unknown type, return it unchanged * @param {Array | Point} a any kind of input value * @return {Point} constructed point, or passed-through value. * @example * // this * var point = Point.convert([0, 1]); * // is equivalent to * var point = new Point(0, 1); */ static convert(a: Point | Array): Point; }