import { VecMathArgs, Vector4 } from "./vec4"; import { Vector2 } from "./vec2"; import { Vector, ZograMatrix } from "./generic"; export declare type vec3 = Vector3; declare const V3Constructor: new (...p: [number, number, number]) => [number, number, number]; export declare class Vector3 extends V3Constructor implements Vector, ZograMatrix { get x(): number; set x(x: number); get y(): number; set y(y: number); get z(): number; set z(z: number); get magnitude(): number; get magnitudeSqr(): number; get normalized(): Vector3; get negative(): Vector3; get inversed(): Vector3; constructor(x: number, y: number, z: number); static zero(): Vector3; static one(): Vector3; asMut(): this; plus(v: Readonly | number): Vector3; minus(v: Readonly | number): Vector3; mul(v: Readonly | number): Vector3; div(v: Readonly | number): Vector3; dot(v: Readonly): number; normalize(): Vector3; inverse(): this; negate(): this; /** * cross product with vec3 * @param a u * @param b v */ cross(b: Readonly): Vector3; set(v: Readonly): this; set(v: Readonly>): this; fill(n: number): this; clone(out?: Vector3): vec3; setX(x: number): this; setY(y: number): this; setZ(z: number): this; toVec2(): Vector2; toVec4(w?: number): Vector4; equals(v: any): boolean; static math number>(func: F): (...args: VecMathArgs, Readonly>) => vec3; static mathNonAlloc number>(func: F, out: vec3, ...args: VecMathArgs, Readonly>): vec3; __to(type: Function): Vector2 | Vector4 | Vector3; } export declare function vec3(x: number): Vector3; export declare namespace vec3 { var from: (src: Iterable) => Vector3; var zero: typeof Vector3.zero; var one: typeof Vector3.one; var math: typeof Vector3.math; var normalize: { (args_0: Readonly): Vector3; (out: Vector3, args_0: Readonly): Vector3; (out: Vector3, args_0: ArrayLike): Vector3; (args_0: ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var inverse: { (args_0: Readonly): Vector3; (out: Vector3, args_0: Readonly): Vector3; (out: Vector3, args_0: ArrayLike): Vector3; (args_0: ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var negate: { (args_0: Readonly): Vector3; (out: Vector3, args_0: Readonly): Vector3; (out: Vector3, args_0: ArrayLike): Vector3; (args_0: ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var plus: { (args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var minus: { (args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var mul: { (args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var div: { (args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var set: { (args_0: Readonly): Vector3; (out: Vector3, args_0: Readonly): Vector3; (out: Vector3, args_0: ArrayLike): Vector3; (args_0: ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var fill: { (args_0: number): Vector3; (out: Vector3, args_0: number): Vector3; (out: Vector3, args_0: number): Vector3; (args_0: number): Vector3; (out: ArrayLike, args_0: number): ArrayLike; }; var distance: (u: Vector3, v: Vector3) => number; } export declare function vec3(x: number, y: number, z: number): Vector3; export declare namespace vec3 { var from: (src: Iterable) => Vector3; var zero: typeof Vector3.zero; var one: typeof Vector3.one; var math: typeof Vector3.math; var normalize: { (args_0: Readonly): Vector3; (out: Vector3, args_0: Readonly): Vector3; (out: Vector3, args_0: ArrayLike): Vector3; (args_0: ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var inverse: { (args_0: Readonly): Vector3; (out: Vector3, args_0: Readonly): Vector3; (out: Vector3, args_0: ArrayLike): Vector3; (args_0: ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var negate: { (args_0: Readonly): Vector3; (out: Vector3, args_0: Readonly): Vector3; (out: Vector3, args_0: ArrayLike): Vector3; (args_0: ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var plus: { (args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var minus: { (args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var mul: { (args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var div: { (args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: Readonly, args_1: Readonly): Vector3; (out: Vector3, args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (args_0: ArrayLike, args_1: number | ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var set: { (args_0: Readonly): Vector3; (out: Vector3, args_0: Readonly): Vector3; (out: Vector3, args_0: ArrayLike): Vector3; (args_0: ArrayLike): Vector3; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var fill: { (args_0: number): Vector3; (out: Vector3, args_0: number): Vector3; (out: Vector3, args_0: number): Vector3; (args_0: number): Vector3; (out: ArrayLike, args_0: number): ArrayLike; }; var distance: (u: Vector3, v: Vector3) => number; } export {};