/** * Vector Utils * A vector is an array of numbers e.g. [0, 3, 4]. */ type Vector = ReadonlyArray; export declare function zip(xs: ReadonlyArray, ys: ReadonlyArray): [T, T][]; export declare function zip(...arrays: ReadonlyArray[]): T[][]; export declare function map(pair: [T, T], f: (a: T, i: number) => U): [U, U]; /** * Checks if the given vector contains only numbers and, optionally, is of the * right dimension (length). * * is([1, 2, 3]) -> true * is([1, "Hello", 3]) -> false * is([1, 2, 3], 1) -> false */ export declare function is(vec: unknown, dimension: 2): vec is [number, number]; export declare function is(vec: unknown, dimension?: number): vec is Vector; export declare function normalize(v: V): V; export declare function length(v: Vector): number; export declare function dot(a: Vector, b: Vector): number; export declare function add(...vecs: ReadonlyArray): V; export declare function subtract(v1: V, v2: V): V; export declare function negate(v: V): V; export declare function scale(v1: V, scalar: number): V; export declare function equal(v1: Vector, v2: Vector, tolerance?: number): boolean; export declare function codirectional(v1: Vector, v2: Vector, tolerance?: number): boolean; export declare function collinear(v1: Vector, v2: Vector, tolerance?: number): boolean; export declare function polarRadFromCart(v: readonly [number, number]): [number, number]; export declare function polarDegFromCart(v: readonly [number, number]): [number, number]; export declare function cartFromPolarRad(radius: number, theta?: number): [number, number]; export declare function cartFromPolarDeg(radius: number, theta?: number): [number, number]; export declare function rotateRad(v: readonly [number, number], theta: number): [number, number]; export declare function rotateDeg(v: readonly [number, number], theta: number): [number, number]; export declare function angleRad(v1: Vector, v2: Vector): number; export declare function angleDeg(v1: Vector, v2: Vector): number; export declare function projection(v1: V, v2: V): V; export declare function round(vec: V, precision: V | number): V; export declare function roundTo(coord: [number, number], increment: [number, number] | number): [number, number]; export declare function roundTo(vec: V, increment: V | number): V; export declare function floorTo(vec: V, increment: V | number): V; export declare function ceilTo(vec: V, increment: V | number): V; export {};