UNPKG

@thi.ng/vectors

Version:

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

64 lines 2.62 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 Vec2 extends AVec implements IHash<number>, IVector<Vec2> { /** * Returns array of memory mapped {@link Vec2} instances using given * backing array and stride settings: The `cstride` is the step size * between individual XY 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): Vec2[]; /** * Merges given `src` iterable of {@link Vec2}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 `Vec2.mapBuffer` for the * inverse operation. Returns `buf`. * * @param buf - * @param src - * @param start - * @param cstride - * @param estride - */ static intoBuffer(buf: NumericArray, src: Iterable<Vec2>, start?: number, cstride?: number, estride?: number): NumericArray; static iterator(buf: NumericArray, num: number, start?: number, cstride?: number, estride?: number): Generator<Vec2, void, unknown>; static readonly X_AXIS: Vec2; static readonly Y_AXIS: Vec2; static readonly MIN: Vec2; static readonly MAX: Vec2; static readonly ZERO: Vec2; static readonly ONE: Vec2; [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 x(): number; set x(x: number); get y(): number; set y(y: number); copy(): Vec2; copyView(): Vec2; empty(): Vec2; eqDelta(v: ReadonlyVec, eps?: number): boolean; hash(): number; toJSON(): number[]; } export declare const vec2: (x?: number, y?: number) => Vec2; export declare const vec2n: (n: number) => Vec2; export declare const asVec2: (x: Vec) => Vec2; //# sourceMappingURL=vec2.d.ts.map