@thi.ng/vectors
Advanced tools
Comparing version 1.1.0 to 1.2.0
import { ICopy, IEqualsDelta, IEquiv, ILength } from "@thi.ng/api/api"; | ||
import { IVec, ReadonlyVec, Vec } from "./api"; | ||
export declare const opg0: (fn: () => number, a: import("@thi.ng/api/api").NumericArray, num?: number, i?: number, s?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const opg1: (fn: (x: number) => number, a: import("@thi.ng/api/api").NumericArray, num?: number, i?: number, s?: number) => import("@thi.ng/api/api").NumericArray; | ||
@@ -9,2 +10,5 @@ export declare const opg2: (fn: (x: number, y: number) => number, a: import("@thi.ng/api/api").NumericArray, b: ReadonlyVec, num?: number, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const setN: (a: import("@thi.ng/api/api").NumericArray, n: number, num?: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const randNorm: (a: import("@thi.ng/api/api").NumericArray, n?: number, num?: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const randMinMax: (a: import("@thi.ng/api/api").NumericArray, min: number, max: number, num?: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const jitter: (a: import("@thi.ng/api/api").NumericArray, n: number, num?: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const add: (a: import("@thi.ng/api/api").NumericArray, b: ReadonlyVec, num?: number, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
@@ -48,2 +52,5 @@ export declare const sub: (a: import("@thi.ng/api/api").NumericArray, b: ReadonlyVec, num?: number, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
static intoBuffer(buf: Vec, src: Iterable<Readonly<GVec>>, start: number, cstride: number, estride: number): import("@thi.ng/api/api").NumericArray; | ||
static of(size: number, n?: number): GVec; | ||
static randNorm(size: number, n?: number): GVec; | ||
static random(size: number, min: number, max: number): GVec; | ||
buf: Vec; | ||
@@ -63,2 +70,3 @@ n: number; | ||
setN(n: number): this; | ||
jitter(n?: number): this; | ||
add(v: Readonly<GVec>): this; | ||
@@ -65,0 +73,0 @@ sub(v: Readonly<GVec>): this; |
55
gvec.js
@@ -7,5 +7,13 @@ "use strict"; | ||
const math_1 = require("./math"); | ||
exports.opg0 = (fn, a, num = a.length, i = 0, s = 1) => { | ||
i += num * s; | ||
while (i -= s, --num >= 0) { | ||
a[i] = fn(); | ||
} | ||
return a; | ||
}; | ||
exports.opg1 = (fn, a, num = a.length, i = 0, s = 1) => { | ||
while (--num >= 0) { | ||
a[i + num * s] = fn(a[i + num * s]); | ||
i += num * s; | ||
while (i -= s, --num >= 0) { | ||
a[i] = fn(a[i]); | ||
} | ||
@@ -15,4 +23,6 @@ return a; | ||
exports.opg2 = (fn, a, b, num = a.length, ia = 0, ib = 0, sa = 1, sb = 1) => { | ||
while (--num >= 0) { | ||
a[ia + num * sa] = fn(a[ia + num * sa], b[ib + num * sb]); | ||
ia += num * sa; | ||
ib += num * sb; | ||
while (ia -= sa, ib -= sb, --num >= 0) { | ||
a[ia] = fn(a[ia], b[ib]); | ||
} | ||
@@ -22,4 +32,7 @@ return a; | ||
exports.opg3 = (fn, a, b, c, num = a.length, ia = 0, ib = 0, ic = 0, sa = 1, sb = 1, sc = 1) => { | ||
while (--num >= 0) { | ||
a[ia + num * sa] = fn(a[ia + num * sa], b[ib + num * sb], c[ic + num * sc]); | ||
ia += num * sa; | ||
ib += num * sb; | ||
ic += num * sc; | ||
while (ia -= sa, ib -= sb, ic -= sc, --num >= 0) { | ||
a[ia] = fn(a[ia], b[ib], c[ic]); | ||
} | ||
@@ -30,4 +43,6 @@ return a; | ||
exports.set = (a, b, num = a.length, ia = 0, ib = 0, sa = 1, sb = 1) => { | ||
while (--num >= 0) { | ||
a[ia + num * sa] = b[ib + num * sb]; | ||
ia += num * sa; | ||
ib += num * sb; | ||
while (ia -= sa, ib -= sb, --num >= 0) { | ||
a[ia] = b[ib]; | ||
} | ||
@@ -37,7 +52,14 @@ return a; | ||
exports.setN = (a, n, num = a.length, ia = 0, sa = 1) => { | ||
while (--num >= 0) { | ||
a[ia + num * sa] = n; | ||
ia += num * sa; | ||
while (ia -= sa, --num >= 0) { | ||
a[ia] = n; | ||
} | ||
return a; | ||
}; | ||
exports.randNorm = (a, n = 1, num = a.length, ia = 0, sa = 1) => exports.randMinMax(a, -n, n, num, ia, sa); | ||
exports.randMinMax = (a, min, max, num = a.length, ia = 0, sa = 1) => { | ||
const d = max - min; | ||
return exports.opg0(() => min + d * Math.random(), a, num, ia, sa); | ||
}; | ||
exports.jitter = (a, n, num = a.length, ia = 0, sa = 1) => exports.opg1((x) => x + Math.random() * 2 * n - n, a, num, ia, sa); | ||
exports.add = (a, b, num = a.length, ia = 0, ib = 0, sa = 1, sb = 1) => exports.opg2((x, y) => x + y, a, b, num, ia, ib, sa, sb); | ||
@@ -110,2 +132,11 @@ exports.sub = (a, b, num = a.length, ia = 0, ib = 0, sa = 1, sb = 1) => exports.opg2((x, y) => x - y, a, b, num, ia, ib, sa, sb); | ||
} | ||
static of(size, n = 0) { | ||
return new GVec(exports.setN([], n, size)); | ||
} | ||
static randNorm(size, n = 1) { | ||
return new GVec(exports.randNorm([], n, size)); | ||
} | ||
static random(size, min, max) { | ||
return new GVec(exports.randMinMax([], min, max, size)); | ||
} | ||
constructor(buf, n = buf.length, i = 0, s = 1) { | ||
@@ -153,2 +184,6 @@ this.buf = buf; | ||
} | ||
jitter(n = 1) { | ||
exports.jitter(this.buf, n, this.n, this.i, this.s); | ||
return this; | ||
} | ||
add(v) { | ||
@@ -155,0 +190,0 @@ this.ensureSize(v); |
{ | ||
"name": "@thi.ng/vectors", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"description": "Vector algebra for fixed & variable sizes, memory mapped, flexible layouts", | ||
@@ -33,3 +33,3 @@ "main": "./index.js", | ||
"@thi.ng/api": "^4.1.1", | ||
"@thi.ng/checks": "^1.5.8", | ||
"@thi.ng/checks": "^1.5.9", | ||
"@thi.ng/errors": "^0.1.7" | ||
@@ -36,0 +36,0 @@ }, |
import { ICopy, IEqualsDelta, IEquiv, ILength } from "@thi.ng/api/api"; | ||
import { IVec, ReadonlyVec, Vec } from "./api"; | ||
export declare const op2: (fn: (x: number) => number, a: import("@thi.ng/api/api").NumericArray, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const op20: (fn: () => number, a: import("@thi.ng/api/api").NumericArray, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const op21: (fn: (a: number, n: number) => number, a: import("@thi.ng/api/api").NumericArray, n: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const op22: (fn: (a: number, b: number) => number, a: import("@thi.ng/api/api").NumericArray, b: ReadonlyVec, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
@@ -9,2 +11,5 @@ export declare const get2: (a: ReadonlyVec, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const setS2: (a: import("@thi.ng/api/api").NumericArray, x: number, y: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const randNorm2: (a: import("@thi.ng/api/api").NumericArray, n?: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const randMinMax2: (a: import("@thi.ng/api/api").NumericArray, min: number, max: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const jitter2: (a: import("@thi.ng/api/api").NumericArray, n: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const swizzle2: (a: import("@thi.ng/api/api").NumericArray, b: ReadonlyVec, x: number, y: number, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
@@ -97,2 +102,4 @@ export declare const swap2: (a: import("@thi.ng/api/api").NumericArray, b: import("@thi.ng/api/api").NumericArray, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
static mixBilinear(a: Readonly<Vec2>, b: Readonly<Vec2>, c: Readonly<Vec2>, d: Readonly<Vec2>, u: number, v: number): Vec2; | ||
static randNorm(n?: number): Vec2; | ||
static random(min: number, max: number): Vec2; | ||
static add(a: Readonly<Vec2>, b: Readonly<Vec2>, out?: Vec2): Vec2; | ||
@@ -128,2 +135,3 @@ static sub(a: Readonly<Vec2>, b: Readonly<Vec2>, out?: Vec2): Vec2; | ||
setS(x: number, y: number): this; | ||
jitter(n?: number): this; | ||
swizzle(v: IVec, x: number, y: number): this; | ||
@@ -130,0 +138,0 @@ swap(v: Vec2): this; |
36
vec2.js
@@ -8,2 +8,8 @@ "use strict"; | ||
exports.op2 = (fn, a, ia = 0, sa = 1) => (a[ia] = fn(a[ia]), a[ia + sa] = fn(a[ia + sa]), a); | ||
exports.op20 = (fn, a, ia = 0, sa = 1) => (a[ia] = fn(), | ||
a[ia + sa] = fn(), | ||
a); | ||
exports.op21 = (fn, a, n, ia = 0, sa = 1) => (a[ia] = fn(a[ia], n), | ||
a[ia + sa] = fn(a[ia + sa], n), | ||
a); | ||
exports.op22 = (fn, a, b, ia = 0, ib = 0, sa = 1, sb = 1) => (a[ia] = fn(a[ia], b[ib]), | ||
@@ -16,9 +22,9 @@ a[ia + sa] = fn(a[ia + sa], b[ib + sb]), | ||
exports.setS2 = (a, x, y, ia = 0, sa = 1) => (a[ia] = x, a[ia + sa] = y, a); | ||
exports.swizzle2 = (a, b, x, y, ia = 0, ib = 0, sa = 1, sb = 1) => { | ||
const xx = b[ib + x * sb]; | ||
const yy = b[ib + y * sb]; | ||
a[ia] = xx; | ||
a[ia + sa] = yy; | ||
return a; | ||
exports.randNorm2 = (a, n = 1, ia = 0, sa = 1) => exports.randMinMax2(a, -n, n, ia, sa); | ||
exports.randMinMax2 = (a, min, max, ia = 0, sa = 1) => { | ||
const d = max - min; | ||
return exports.op20(() => min + d * Math.random(), a, ia, sa); | ||
}; | ||
exports.jitter2 = (a, n, ia = 0, sa = 1) => exports.op2((x) => x + Math.random() * 2 * n - n, a, ia, sa); | ||
exports.swizzle2 = (a, b, x, y, ia = 0, ib = 0, sa = 1, sb = 1) => exports.setS2(a, b[ib + x * sb], b[ib + y * sb], ia, sa); | ||
exports.swap2 = (a, b, ia = 0, ib = 0, sa = 1, sb = 1) => { | ||
@@ -64,8 +70,4 @@ let t = a[ia]; | ||
exports.sqrt2 = (a, ia = 0, sa = 1) => exports.op2(Math.sqrt, a, ia, sa); | ||
exports.pow2 = (a, b, ia = 0, ib = 0, sa = 1, sb = 1) => (a[ia] = Math.pow(a[ia], b[ib]), | ||
a[ia + sa] = Math.pow(a[ia + sa], b[ib + sb]), | ||
a); | ||
exports.powN2 = (a, n, ia = 0, sa = 1) => (a[ia] = Math.pow(a[ia], n), | ||
a[ia + sa] = Math.pow(a[ia + sa], n), | ||
a); | ||
exports.pow2 = (a, b, ia = 0, ib = 0, sa = 1, sb = 1) => exports.op22(Math.pow, a, b, ia, ib, sa, sb); | ||
exports.powN2 = (a, n, ia = 0, sa = 1) => exports.op21(Math.pow, a, n, ia, sa); | ||
exports.madd2 = (a, b, c, ia = 0, ib = 0, ic = 0, sa = 1, sb = 1, sc = 1) => (a[ia] += b[ib] * c[ic], a[ia + sa] += b[ib + sb] * c[ic + sc], a); | ||
@@ -217,2 +219,8 @@ exports.maddN2 = (a, b, n, ia = 0, ib = 0, sa = 1, sb = 1) => (a[ia] += b[ib] * n, a[ia + sa] += b[ib + sb] * n, a); | ||
} | ||
static randNorm(n = 1) { | ||
return new Vec2(exports.randNorm2([], n)); | ||
} | ||
static random(min, max) { | ||
return new Vec2(exports.randMinMax2([], min, max)); | ||
} | ||
static add(a, b, out) { | ||
@@ -302,2 +310,6 @@ !out && (out = new Vec2([])); | ||
} | ||
jitter(n = 1) { | ||
exports.jitter2(this.buf, n, this.i, this.s); | ||
return this; | ||
} | ||
swizzle(v, x, y) { | ||
@@ -304,0 +316,0 @@ exports.swizzle2(this.buf, v.buf, x, y, this.i, v.i, this.s, v.s); |
import { ICopy, IEqualsDelta, IEquiv, ILength } from "@thi.ng/api/api"; | ||
import { IVec, ReadonlyVec, Vec } from "./api"; | ||
export declare const op3: (fn: (x: number) => number, a: import("@thi.ng/api/api").NumericArray, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const op30: (fn: () => number, a: import("@thi.ng/api/api").NumericArray, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const op31: (fn: (a: number, n: number) => number, a: import("@thi.ng/api/api").NumericArray, n: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const op32: (fn: (a: number, b: number) => number, a: import("@thi.ng/api/api").NumericArray, b: ReadonlyVec, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
@@ -9,2 +11,5 @@ export declare const get3: (a: ReadonlyVec, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const setS3: (a: import("@thi.ng/api/api").NumericArray, x: number, y: number, z: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const randNorm3: (a: import("@thi.ng/api/api").NumericArray, n?: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const randMinMax3: (a: import("@thi.ng/api/api").NumericArray, min: number, max: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const jitter3: (a: import("@thi.ng/api/api").NumericArray, n: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const swizzle3: (a: import("@thi.ng/api/api").NumericArray, b: ReadonlyVec, x: number, y: number, z: number, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
@@ -102,2 +107,4 @@ export declare const swap3: (a: import("@thi.ng/api/api").NumericArray, b: import("@thi.ng/api/api").NumericArray, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
static orthoNormal3(a: Readonly<Vec3>, b: Readonly<Vec3>, c: Readonly<Vec3>): Vec3; | ||
static randNorm(n?: number): Vec3; | ||
static random(min: number, max: number): Vec3; | ||
static add(a: Readonly<Vec3>, b: Readonly<Vec3>, out?: Vec3): Vec3; | ||
@@ -134,2 +141,3 @@ static sub(a: Readonly<Vec3>, b: Readonly<Vec3>, out?: Vec3): Vec3; | ||
setS(x: number, y: number, z: number): this; | ||
jitter(n?: number): this; | ||
swizzle(v: IVec, x: number, y: number, z: number): this; | ||
@@ -136,0 +144,0 @@ swap(v: Vec3): this; |
34
vec3.js
@@ -12,2 +12,10 @@ "use strict"; | ||
a); | ||
exports.op30 = (fn, a, ia = 0, sa = 1) => (a[ia] = fn(), | ||
a[ia + sa] = fn(), | ||
a[ia + 2 * sa] = fn(), | ||
a); | ||
exports.op31 = (fn, a, n, ia = 0, sa = 1) => (a[ia] = fn(a[ia], n), | ||
a[ia + sa] = fn(a[ia + sa], n), | ||
a[ia + 2 * sa] = fn(a[ia + 2 * sa], n), | ||
a); | ||
exports.op32 = (fn, a, b, ia = 0, ib = 0, sa = 1, sb = 1) => (a[ia] = fn(a[ia], b[ib]), | ||
@@ -27,11 +35,9 @@ a[ia + sa] = fn(a[ia + sa], b[ib + sb]), | ||
exports.setS3 = (a, x, y, z, ia = 0, sa = 1) => (a[ia] = x, a[ia + sa] = y, a[ia + 2 * sa] = z, a); | ||
exports.swizzle3 = (a, b, x, y, z, ia = 0, ib = 0, sa = 1, sb = 1) => { | ||
const xx = b[ib + x * sb]; | ||
const yy = b[ib + y * sb]; | ||
const zz = b[ib + z * sb]; | ||
a[ia] = xx; | ||
a[ia + sa] = yy; | ||
a[ia + 2 * sa] = zz; | ||
return a; | ||
exports.randNorm3 = (a, n = 1, ia = 0, sa = 1) => exports.randMinMax3(a, -n, n, ia, sa); | ||
exports.randMinMax3 = (a, min, max, ia = 0, sa = 1) => { | ||
const d = max - min; | ||
return exports.op30(() => min + d * Math.random(), a, ia, sa); | ||
}; | ||
exports.jitter3 = (a, n, ia = 0, sa = 1) => exports.op3((x) => x + Math.random() * 2 * n - n, a, ia, sa); | ||
exports.swizzle3 = (a, b, x, y, z, ia = 0, ib = 0, sa = 1, sb = 1) => exports.setS3(a, b[ib + x * sb], b[ib + y * sb], b[ib + z * sb], ia, sa); | ||
exports.swap3 = (a, b, ia = 0, ib = 0, sa = 1, sb = 1) => { | ||
@@ -121,3 +127,3 @@ let t = a[ia]; | ||
exports.pow3 = (a, b, ia = 0, ib = 0, sa = 1, sb = 1) => exports.op32(Math.pow, a, b, ia, ib, sa, sb); | ||
exports.powN3 = (a, n, ia = 0, sa = 1) => exports.op3((x) => Math.pow(x, n), a, ia, sa); | ||
exports.powN3 = (a, n, ia = 0, sa = 1) => exports.op31(Math.pow, a, n, ia, sa); | ||
exports.madd3 = (a, b, c, ia = 0, ib = 0, ic = 0, sa = 1, sb = 1, sc = 1) => (a[ia] += b[ib] * c[ic], | ||
@@ -316,2 +322,8 @@ a[ia + sa] += b[ib + sb] * c[ic + sc], | ||
} | ||
static randNorm(n = 1) { | ||
return new Vec3(exports.randNorm3([], n)); | ||
} | ||
static random(min, max) { | ||
return new Vec3(exports.randMinMax3([], min, max)); | ||
} | ||
static add(a, b, out) { | ||
@@ -401,2 +413,6 @@ !out && (out = new Vec3([])); | ||
} | ||
jitter(n = 1) { | ||
exports.jitter3(this.buf, n, this.i, this.s); | ||
return this; | ||
} | ||
swizzle(v, x, y, z) { | ||
@@ -403,0 +419,0 @@ exports.swizzle3(this.buf, v.buf, x, y, z, this.i, v.i, this.s, v.s); |
import { ICopy, IEqualsDelta, IEquiv, ILength } from "@thi.ng/api/api"; | ||
import { IVec, ReadonlyVec, Vec } from "./api"; | ||
export declare const op4: (fn: (x: number) => number, a: import("@thi.ng/api/api").NumericArray, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const op40: (fn: () => number, a: import("@thi.ng/api/api").NumericArray, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const op41: (fn: (a: number, n: number) => number, a: import("@thi.ng/api/api").NumericArray, n: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const op42: (fn: (a: number, b: number) => number, a: import("@thi.ng/api/api").NumericArray, b: ReadonlyVec, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
@@ -9,2 +11,5 @@ export declare const get4: (a: ReadonlyVec, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const setS4: (a: import("@thi.ng/api/api").NumericArray, x: number, y: number, z: number, w: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const randNorm4: (a: import("@thi.ng/api/api").NumericArray, n?: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const randMinMax4: (a: import("@thi.ng/api/api").NumericArray, min: number, max: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const jitter4: (a: import("@thi.ng/api/api").NumericArray, n: number, ia?: number, sa?: number) => import("@thi.ng/api/api").NumericArray; | ||
export declare const swizzle4: (a: import("@thi.ng/api/api").NumericArray, b: ReadonlyVec, x: number, y: number, z: number, w: number, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
@@ -87,2 +92,4 @@ export declare const swap4: (a: import("@thi.ng/api/api").NumericArray, b: import("@thi.ng/api/api").NumericArray, ia?: number, ib?: number, sa?: number, sb?: number) => import("@thi.ng/api/api").NumericArray; | ||
static mixBilinear(a: Readonly<Vec4>, b: Readonly<Vec4>, c: Readonly<Vec4>, d: Readonly<Vec4>, u: number, v: number): Vec4; | ||
static randNorm(n?: number): Vec4; | ||
static random(min: number, max: number): Vec4; | ||
static add(a: Readonly<Vec4>, b: Readonly<Vec4>, out?: Vec4): Vec4; | ||
@@ -120,2 +127,3 @@ static sub(a: Readonly<Vec4>, b: Readonly<Vec4>, out?: Vec4): Vec4; | ||
setS(x: number, y: number, z: number, w: number): this; | ||
jitter(n?: number): this; | ||
swizzle(v: IVec, x: number, y: number, z: number, w: number): this; | ||
@@ -122,0 +130,0 @@ swap(v: Vec4): this; |
36
vec4.js
@@ -12,2 +12,12 @@ "use strict"; | ||
a); | ||
exports.op40 = (fn, a, ia = 0, sa = 1) => (a[ia] = fn(), | ||
a[ia + sa] = fn(), | ||
a[ia + 2 * sa] = fn(), | ||
a[ia + 3 * sa] = fn(), | ||
a); | ||
exports.op41 = (fn, a, n, ia = 0, sa = 1) => (a[ia] = fn(a[ia], n), | ||
a[ia + sa] = fn(a[ia + sa], n), | ||
a[ia + 2 * sa] = fn(a[ia + 2 * sa], n), | ||
a[ia + 3 * sa] = fn(a[ia + 3 * sa], n), | ||
a); | ||
exports.op42 = (fn, a, b, ia = 0, ib = 0, sa = 1, sb = 1) => (a[ia] = fn(a[ia], b[ib]), | ||
@@ -34,13 +44,9 @@ a[ia + sa] = fn(a[ia + sa], b[ib + sb]), | ||
a); | ||
exports.swizzle4 = (a, b, x, y, z, w, ia = 0, ib = 0, sa = 1, sb = 1) => { | ||
const xx = b[ib + x * sb]; | ||
const yy = b[ib + y * sb]; | ||
const zz = b[ib + z * sb]; | ||
const ww = b[ib + w * sb]; | ||
a[ia] = xx; | ||
a[ia + sa] = yy; | ||
a[ia + 2 * sa] = zz; | ||
a[ia + 3 * sa] = ww; | ||
return a; | ||
exports.randNorm4 = (a, n = 1, ia = 0, sa = 1) => exports.randMinMax4(a, -n, n, ia, sa); | ||
exports.randMinMax4 = (a, min, max, ia = 0, sa = 1) => { | ||
const d = max - min; | ||
return exports.op40(() => min + d * Math.random(), a, ia, sa); | ||
}; | ||
exports.jitter4 = (a, n, ia = 0, sa = 1) => exports.op4((x) => x + Math.random() * 2 * n - n, a, ia, sa); | ||
exports.swizzle4 = (a, b, x, y, z, w, ia = 0, ib = 0, sa = 1, sb = 1) => exports.setS4(a, b[ib + x * sb], b[ib + y * sb], b[ib + z * sb], b[ib + w * sb], ia, sa); | ||
exports.swap4 = (a, b, ia = 0, ib = 0, sa = 1, sb = 1) => { | ||
@@ -292,2 +298,8 @@ let t = a[ia]; | ||
} | ||
static randNorm(n = 1) { | ||
return new Vec4(exports.randNorm4([], n)); | ||
} | ||
static random(min, max) { | ||
return new Vec4(exports.randMinMax4([], min, max)); | ||
} | ||
static add(a, b, out) { | ||
@@ -377,2 +389,6 @@ !out && (out = new Vec4([])); | ||
} | ||
jitter(n = 1) { | ||
exports.jitter4(this.buf, n, this.i, this.s); | ||
return this; | ||
} | ||
swizzle(v, x, y, z, w) { | ||
@@ -379,0 +395,0 @@ exports.swizzle4(this.buf, v.buf, x, y, z, w, this.i, v.i, this.s, v.s); |
246682
4370
Updated@thi.ng/checks@^1.5.9