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