import { IInversible } from '../interfaces/IInversible'; import { IAppliableOnVector, IVectorApplyModifier, IVectorApplyModifierFunction } from '../interfaces/IVectorApplyModifier'; import { IAxis, IVector, IVectorData } from '../interfaces/IVectorData'; export declare class Vector implements IVector, IInversible { [axis: string]: any; static zero(): Vector; static cube(scale?: number): Vector; static square(scale?: number): Vector; static fromObject(vector: IVector): Vector; static fromObject(vector: T, axisMapping: Array): Vector; static fromArray(values: number[]): Vector; static fromArray(...values: number[]): Vector; static fromPolar(rotation: number, distance?: number): Vector; static clone(vector: IVector): Vector; static add(...vectors: IVector[]): Vector; static subtract(vectorA: IVector, vectorB: IVector): Vector; static multiply(...vectors: IVector[]): Vector; static divide(vectorA: IVector, vectorB: IVector): Vector; static scale(vector: IVector, scale: number): Vector; static rotate(vector: IVector, rotate: IVector): Vector; static mapEachPlane(vector: IVector, callback: (ortogonalAxis: IAxis, vectorBD: Vector) => IVector): Vector; static mapPlane(vector: IVector, ortogonalAxis: IAxis, callback: (vectorBD: Vector) => IVector): Vector; static dotProduct(vectorA: IVector, vectorB: IVector): number; static crossProduct(vectorA: IVector, vectorB: IVector): Vector; static average(...vectors: IVector[]): IVector; static isEqual(vectorA: IVector, vectorB: IVector): boolean; static stripInfatesimals(vector: IVector): Vector; static isZero(vector: IVector): boolean; static distance(vectorA: IVector, vectorB?: IVector): number; static distanceSquared(vectorA: IVector, vectorB?: IVector): number; static rotation(vectorA: IVector, vectorB?: IVector): number; static cubeMax(vector: IVector): Vector; static map(vector: IVector, modifier: (value: number, axis: keyof IVectorData) => number): Vector; static rearrangeAxes(vector: IVector, modifier: (values: number[]) => number[]): Vector; static apply(vector: IVector, modifier: IVectorApplyModifier): Vector; static applyWithin(vector: IVector, context: IInversible, modifier: IVectorApplyModifierFunction): Vector; static to2D(vector: IVector): Vector; static toJSON(vector: IVector): IVectorData; static toObject(vector: IVector, axisMapping?: Array): T; static toObject2D(vector: IVector): IVector; static toObject3D(vector: IVector): IVector; static toArray(vector: IVector): number[]; static toArray2D(vector: IVector): [number, number]; static toArray3D(vector: IVector): [number, number, number]; static toString(vector: IVector): string; static toString2D(vector: IVector): string; static toString3D(vector: IVector): string; readonly x: number; readonly y: number; readonly z: number; constructor(vector: IVector); constructor(x?: number, y?: number, z?: number); inverse(): Vector; negate(): Vector; half(): Vector; third(): Vector; quarter(): Vector; double(): Vector; triple(): Vector; clone(): Vector; add(...vectors: IVector[]): Vector; subtract(vectorB: IVector): Vector; multiply(...vectors: IVector[]): Vector; divide(vectorB: IVector): Vector; scale(scale: number): Vector; rotate(rotate: IVector): Vector; mapEachPlane(callback: (ortogonalAxis: IAxis, vectorBD: Vector) => IVector): Vector; mapPlane(ortogonalAxis: IAxis, callback: (vectorBD: Vector) => IVector): Vector; dotProduct(vectorB: IVector): number; crossProduct(vectorB: IVector): Vector; isEqual(vectorB: IVector): boolean; isZero(): boolean; stripInfatesimals(): Vector; distance(vectorB?: IVector): number; distanceSquared(vectorB?: IVector): number; rotation(vectorB?: IVector): number; cubeMax(): Vector; map(modifier: (value: number, axis: keyof IVectorData) => number): Vector; rearrangeAxes(modifier: (values: number[]) => number[]): Vector; apply(modifier: IVectorApplyModifier): Vector; applyWithin(context: IInversible, modifier: IVectorApplyModifierFunction): Vector; to2D(): Vector; toJSON(): IVectorData; toObject(axisMapping?: Array): T; toObject2D(): IVectorData; toObject3D(): IVectorData; toArray(): number[]; toArray2D(): [number, number]; toArray3D(): [number, number, number]; toString(): string; toString2D(): string; toString3D(): string; } /** * TODO: .length. * TODO: toUnitVector() * TODO: toPolar() * TODO: ortogonal(), normal() * TODO: rotate should accept just a number as a rotatation to rotate along z axis */