UNPKG

@thi.ng/vectors

Version:

Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts

69 lines 2.76 kB
import type { IHash, NumericArray } from "@thi.ng/api"; import { type IVector, type ReadonlyVec, type Vec } from "./api.js"; import { AVec } from "./avec.js"; export declare class Vec3 extends AVec implements IHash<number>, IVector<Vec3> { /** * Returns array of memory mapped {@link Vec3} instances using given * backing array and stride settings: The `cstride` is the step size * between individual XYZ vector components. `estride` is the step * size between successive vectors. This arrangement allows for * different storage approaches, incl. SOA, AOS, striped / * interleaved etc. * * @param buf - backing array * @param num - num vectors * @param start - start index * @param cstride - component stride * @param estride - element stride */ static mapBuffer(buf: NumericArray, num?: number, start?: number, cstride?: number, estride?: number): Vec3[]; /** * Merges given `src` iterable of {@link Vec3}s into single array `buf`. * Vectors will be arranged according to given component and element * strides, starting at `start` index. It's the user's * responsibility to ensure the target buffer has sufficient * capacity to hold the input vectors. See `Vec3.mapBuffer` for the * inverse operation. Returns `buf`. * * @param buf - * @param src - * @param start - * @param cstride - * @param estride - */ static intoBuffer(buf: NumericArray, src: Iterable<Vec3>, start?: number, cstride?: number, estride?: number): NumericArray; static iterator(buf: NumericArray, num: number, start?: number, cstride?: number, estride?: number): Generator<Vec3, void, unknown>; static readonly X_AXIS: Vec3; static readonly Y_AXIS: Vec3; static readonly Z_AXIS: Vec3; static readonly MIN: Vec3; static readonly MAX: Vec3; static readonly ZERO: Vec3; static readonly ONE: Vec3; [id: number]: number; constructor(buf?: NumericArray, offset?: number, stride?: number); [Symbol.iterator](): Generator<number, void, unknown>; get length(): number; get [0](): number; set [0](x: number); get [1](): number; set [1](y: number); get [2](): number; set [2](z: number); get x(): number; set x(x: number); get y(): number; set y(y: number); get z(): number; set z(z: number); copy(): Vec3; copyView(): Vec3; empty(): Vec3; eqDelta(v: ReadonlyVec, eps?: number): boolean; hash(): number; toJSON(): number[]; } export declare const vec3: (x?: number, y?: number, z?: number) => Vec3; export declare const vec3n: (n: number) => Vec3; export declare const asVec3: (x: Vec) => Vec3; //# sourceMappingURL=vec3.d.ts.map