@thi.ng/vectors
Version:
Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts
64 lines • 2.62 kB
TypeScript
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