@yali-engine/math 0.0.0-stage → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/frustum.d.ts +16 -0
- package/dist/frustum.js +47 -0
- package/dist/frustum.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/mat4.d.ts +35 -0
- package/dist/mat4.js +210 -0
- package/dist/mat4.js.map +1 -0
- package/dist/quat.d.ts +24 -0
- package/dist/quat.js +129 -0
- package/dist/quat.js.map +1 -0
- package/dist/scalar.d.ts +20 -0
- package/dist/scalar.js +36 -0
- package/dist/scalar.js.map +1 -0
- package/dist/transform.d.ts +10 -0
- package/dist/transform.js +26 -0
- package/dist/transform.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/vec3.d.ts +25 -0
- package/dist/vec3.js +80 -0
- package/dist/vec3.js.map +1 -0
- package/package.json +21 -3
- package/README.md +0 -3
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { In, Out } from './types.ts';
|
|
2
|
+
/** `containsSphere` results (PlayCanvas's convention). */
|
|
3
|
+
export declare const OUTSIDE = 0;
|
|
4
|
+
/** The sphere crosses a plane. */
|
|
5
|
+
export declare const INTERSECTS = 1;
|
|
6
|
+
/** The sphere is inside all six planes. */
|
|
7
|
+
export declare const INSIDE = 2;
|
|
8
|
+
/**
|
|
9
|
+
* The six inward planes (left, right, bottom, top, near, far; `[nx, ny, nz, d]` each, 24
|
|
10
|
+
* floats) of a view-projection matrix with WebGPU's 0..1 depth, reverse-Z (Gribb–Hartmann).
|
|
11
|
+
* An infinite far plane comes out as `(0, 0, 0, 1)`, which everything passes. The layout
|
|
12
|
+
* the cull shader's `Camera.frustum` reads.
|
|
13
|
+
*/
|
|
14
|
+
export declare function setFromProjectionMatrix<T extends Out>(out: T, m: In, o?: number, mi?: number): T;
|
|
15
|
+
/** Where a sphere is: `OUTSIDE`, `INTERSECTS` or `INSIDE` the planes. */
|
|
16
|
+
export declare function containsSphere(planes: In, center: In, radius: number, pi?: number, ci?: number): number;
|
package/dist/frustum.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** `containsSphere` results (PlayCanvas's convention). */
|
|
2
|
+
export const OUTSIDE = 0;
|
|
3
|
+
/** The sphere crosses a plane. */
|
|
4
|
+
export const INTERSECTS = 1;
|
|
5
|
+
/** The sphere is inside all six planes. */
|
|
6
|
+
export const INSIDE = 2;
|
|
7
|
+
/**
|
|
8
|
+
* The six inward planes (left, right, bottom, top, near, far; `[nx, ny, nz, d]` each, 24
|
|
9
|
+
* floats) of a view-projection matrix with WebGPU's 0..1 depth, reverse-Z (Gribb–Hartmann).
|
|
10
|
+
* An infinite far plane comes out as `(0, 0, 0, 1)`, which everything passes. The layout
|
|
11
|
+
* the cull shader's `Camera.frustum` reads.
|
|
12
|
+
*/
|
|
13
|
+
export function setFromProjectionMatrix(out, m, o = 0, mi = 0) {
|
|
14
|
+
for (let p = 0; p < 6; p++) {
|
|
15
|
+
// Row i of m is m[mi + i], m[mi + 4 + i], m[mi + 8 + i], m[mi + 12 + i].
|
|
16
|
+
const row = p < 4 ? p >> 1 : 2;
|
|
17
|
+
const sign = p < 4 ? (p & 1 ? -1 : 1) : -1;
|
|
18
|
+
const keep3 = p < 5 ? 1 : 0; // the far plane is row 2 alone
|
|
19
|
+
for (let k = 0; k < 4; k++)
|
|
20
|
+
out[o + p * 4 + k] = keep3 * m[mi + k * 4 + 3] + (p < 5 ? sign : 1) * m[mi + k * 4 + row];
|
|
21
|
+
const l = Math.hypot(out[o + p * 4], out[o + p * 4 + 1], out[o + p * 4 + 2]);
|
|
22
|
+
if (l > 1e-12)
|
|
23
|
+
for (let k = 0; k < 4; k++)
|
|
24
|
+
out[o + p * 4 + k] /= l;
|
|
25
|
+
else {
|
|
26
|
+
out[o + p * 4] = 0;
|
|
27
|
+
out[o + p * 4 + 1] = 0;
|
|
28
|
+
out[o + p * 4 + 2] = 0;
|
|
29
|
+
out[o + p * 4 + 3] = 1;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
/** Where a sphere is: `OUTSIDE`, `INTERSECTS` or `INSIDE` the planes. */
|
|
35
|
+
export function containsSphere(planes, center, radius, pi = 0, ci = 0) {
|
|
36
|
+
let inside = true;
|
|
37
|
+
for (let p = 0; p < 6; p++) {
|
|
38
|
+
const b = pi + p * 4;
|
|
39
|
+
const d = planes[b] * center[ci] + planes[b + 1] * center[ci + 1] + planes[b + 2] * center[ci + 2] + planes[b + 3];
|
|
40
|
+
if (d < -radius)
|
|
41
|
+
return OUTSIDE;
|
|
42
|
+
if (d < radius)
|
|
43
|
+
inside = false;
|
|
44
|
+
}
|
|
45
|
+
return inside ? INSIDE : INTERSECTS;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=frustum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frustum.js","sourceRoot":"","sources":["../src/frustum.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@yali-engine/math`: the TS side of Yali's math (ADR-0054), for gameplay and engine code on the
|
|
3
|
+
* main thread or a worker. The same conventions as the Rust crate `yali-math` and
|
|
4
|
+
* `shaders/core/math.wesl`: right-handed, +Y up, −Z forward; quaternions `[x, y, z, w]`,
|
|
5
|
+
* `multiply(out, a, b)` applies `b` first; column-major matrices (16 floats); reverse-Z
|
|
6
|
+
* projections with WebGPU's 0..1 depth; radians.
|
|
7
|
+
*
|
|
8
|
+
* Every function writes into `out` and returns it; nothing allocates. Inputs and outputs
|
|
9
|
+
* are any indexable numbers (Float32Array, Float64Array, an ECS column, number[]), and the
|
|
10
|
+
* optional trailing offsets address an element inside a larger array, so the functions work
|
|
11
|
+
* in place on ECS columns. Names follow three.js where it has the operation.
|
|
12
|
+
*
|
|
13
|
+
* Heavy per-entity loops belong in Rust systems (DESIGN.md §22); these are for gameplay
|
|
14
|
+
* logic, cameras and tools.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* import { quat, vec3 } from '@yali-engine/math';
|
|
18
|
+
* const q = quat.setFromAxisAngle(new Float32Array(4), [0, 1, 0], Math.PI / 2);
|
|
19
|
+
* const v = vec3.applyQuaternion(new Float32Array(3), [1, 0, 0], q); // ≈ [0, 0, -1]
|
|
20
|
+
* // In place on a chunk's Transform.r column, entity i:
|
|
21
|
+
* quat.multiply(rot, rot, spin, i * 4, i * 4, 0);
|
|
22
|
+
*/
|
|
23
|
+
export * as frustum from './frustum.ts';
|
|
24
|
+
export * as mat4 from './mat4.ts';
|
|
25
|
+
export * as MathUtils from './scalar.ts';
|
|
26
|
+
export * as quat from './quat.ts';
|
|
27
|
+
export * as transform from './transform.ts';
|
|
28
|
+
export type { In, Out } from './types.ts';
|
|
29
|
+
export * as vec3 from './vec3.ts';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@yali-engine/math`: the TS side of Yali's math (ADR-0054), for gameplay and engine code on the
|
|
3
|
+
* main thread or a worker. The same conventions as the Rust crate `yali-math` and
|
|
4
|
+
* `shaders/core/math.wesl`: right-handed, +Y up, −Z forward; quaternions `[x, y, z, w]`,
|
|
5
|
+
* `multiply(out, a, b)` applies `b` first; column-major matrices (16 floats); reverse-Z
|
|
6
|
+
* projections with WebGPU's 0..1 depth; radians.
|
|
7
|
+
*
|
|
8
|
+
* Every function writes into `out` and returns it; nothing allocates. Inputs and outputs
|
|
9
|
+
* are any indexable numbers (Float32Array, Float64Array, an ECS column, number[]), and the
|
|
10
|
+
* optional trailing offsets address an element inside a larger array, so the functions work
|
|
11
|
+
* in place on ECS columns. Names follow three.js where it has the operation.
|
|
12
|
+
*
|
|
13
|
+
* Heavy per-entity loops belong in Rust systems (DESIGN.md §22); these are for gameplay
|
|
14
|
+
* logic, cameras and tools.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* import { quat, vec3 } from '@yali-engine/math';
|
|
18
|
+
* const q = quat.setFromAxisAngle(new Float32Array(4), [0, 1, 0], Math.PI / 2);
|
|
19
|
+
* const v = vec3.applyQuaternion(new Float32Array(3), [1, 0, 0], q); // ≈ [0, 0, -1]
|
|
20
|
+
* // In place on a chunk's Transform.r column, entity i:
|
|
21
|
+
* quat.multiply(rot, rot, spin, i * 4, i * 4, 0);
|
|
22
|
+
*/
|
|
23
|
+
export * as frustum from "./frustum.js";
|
|
24
|
+
export * as mat4 from "./mat4.js";
|
|
25
|
+
export * as MathUtils from "./scalar.js";
|
|
26
|
+
export * as quat from "./quat.js";
|
|
27
|
+
export * as transform from "./transform.js";
|
|
28
|
+
export * as vec3 from "./vec3.js";
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC"}
|
package/dist/mat4.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { In, Out } from './types.ts';
|
|
2
|
+
/** `out = I`. */
|
|
3
|
+
export declare function identity<T extends Out>(out: T, o?: number): T;
|
|
4
|
+
/** `out = a * b`: apply `b`, then `a`. Safe when `out` is `a` or `b`. */
|
|
5
|
+
export declare function multiply<T extends Out>(out: T, a: In, b: In, o?: number, ai?: number, bi?: number): T;
|
|
6
|
+
/** `out = aᵀ`. Safe when `out` is `a`. */
|
|
7
|
+
export declare function transpose<T extends Out>(out: T, a: In, o?: number, ai?: number): T;
|
|
8
|
+
/**
|
|
9
|
+
* `out = a⁻¹`, or `null` when `a` is singular (or not finite). The Laplace expansion over
|
|
10
|
+
* 2×2 sub-determinants, as `yali-math` computes it. Safe when `out` is `a`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function invert<T extends Out>(out: T, a: In, o?: number, ai?: number): T | null;
|
|
13
|
+
/** The determinant. */
|
|
14
|
+
export declare function determinant(a: In, ai?: number): number;
|
|
15
|
+
/** `out = m · (p, 1)`, without the perspective divide (affine matrices). Safe when `out` is `p`. */
|
|
16
|
+
export declare function transformPoint<T extends Out>(out: T, m: In, p: In, o?: number, mi?: number, pi?: number): T;
|
|
17
|
+
/** `out = m · (v, 0)`: rotation and scale, no translation. Safe when `out` is `v`. */
|
|
18
|
+
export declare function transformVector<T extends Out>(out: T, m: In, v: In, o?: number, mi?: number, vi?: number): T;
|
|
19
|
+
/** Scale `s`, then rotate `q`, then translate `t` (three.js `Matrix4.compose`). */
|
|
20
|
+
export declare function compose<T extends Out>(out: T, t: In, q: In, s: In, o?: number, ti?: number, qi?: number, si?: number): T;
|
|
21
|
+
/** A right-handed view matrix from `eye` looking along `dir` with `up`. */
|
|
22
|
+
export declare function lookTo<T extends Out>(out: T, eye: In, dir: In, up: In, o?: number, ei?: number, di?: number, ui?: number): T;
|
|
23
|
+
/**
|
|
24
|
+
* Yali's projection (ADR-0008): right-handed, reverse-Z, infinite far plane, WebGPU's 0..1
|
|
25
|
+
* depth (1 at `near`, towards 0 at infinity; clear depth to 0 and compare `greater`).
|
|
26
|
+
*/
|
|
27
|
+
export declare function perspectiveInfiniteReverse<T extends Out>(out: T, fovY: number, aspect: number, near: number, o?: number): T;
|
|
28
|
+
/** A right-handed orthographic projection, reverse-Z, 0..1 depth (1 at `near`, 0 at `far`). */
|
|
29
|
+
export declare function orthographicReverse<T extends Out>(out: T, left: number, right: number, bottom: number, top: number, near: number, far: number, o?: number): T;
|
|
30
|
+
/**
|
|
31
|
+
* Splits an affine `m` into translation, rotation and scale (three.js
|
|
32
|
+
* `Matrix4.decompose`): scale is each basis column's length, a negative determinant is a
|
|
33
|
+
* mirror folded into x, and the rotation comes from the normalized columns.
|
|
34
|
+
*/
|
|
35
|
+
export declare function decompose(outT: Out, outQ: Out, outS: Out, m: In, ti?: number, qi?: number, si?: number, mi?: number): void;
|
package/dist/mat4.js
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { setFromRotationMatrix } from "./quat.js";
|
|
2
|
+
/** `out = I`. */
|
|
3
|
+
export function identity(out, o = 0) {
|
|
4
|
+
for (let k = 0; k < 16; k++)
|
|
5
|
+
out[o + k] = k % 5 === 0 ? 1 : 0;
|
|
6
|
+
return out;
|
|
7
|
+
}
|
|
8
|
+
/** `out = a * b`: apply `b`, then `a`. Safe when `out` is `a` or `b`. */
|
|
9
|
+
export function multiply(out, a, b, o = 0, ai = 0, bi = 0) {
|
|
10
|
+
const a00 = a[ai], a01 = a[ai + 1], a02 = a[ai + 2], a03 = a[ai + 3];
|
|
11
|
+
const a10 = a[ai + 4], a11 = a[ai + 5], a12 = a[ai + 6], a13 = a[ai + 7];
|
|
12
|
+
const a20 = a[ai + 8], a21 = a[ai + 9], a22 = a[ai + 10], a23 = a[ai + 11];
|
|
13
|
+
const a30 = a[ai + 12], a31 = a[ai + 13], a32 = a[ai + 14], a33 = a[ai + 15];
|
|
14
|
+
for (let c = 0; c < 4; c++) {
|
|
15
|
+
const b0 = b[bi + c * 4], b1 = b[bi + c * 4 + 1], b2 = b[bi + c * 4 + 2], b3 = b[bi + c * 4 + 3];
|
|
16
|
+
out[o + c * 4] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;
|
|
17
|
+
out[o + c * 4 + 1] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;
|
|
18
|
+
out[o + c * 4 + 2] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;
|
|
19
|
+
out[o + c * 4 + 3] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;
|
|
20
|
+
}
|
|
21
|
+
return out;
|
|
22
|
+
}
|
|
23
|
+
/** `out = aᵀ`. Safe when `out` is `a`. */
|
|
24
|
+
export function transpose(out, a, o = 0, ai = 0) {
|
|
25
|
+
for (let c = 0; c < 4; c++) {
|
|
26
|
+
for (let r = c + 1; r < 4; r++) {
|
|
27
|
+
const x = a[ai + c * 4 + r], y = a[ai + r * 4 + c];
|
|
28
|
+
out[o + c * 4 + r] = y;
|
|
29
|
+
out[o + r * 4 + c] = x;
|
|
30
|
+
}
|
|
31
|
+
out[o + c * 5] = a[ai + c * 5];
|
|
32
|
+
}
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* `out = a⁻¹`, or `null` when `a` is singular (or not finite). The Laplace expansion over
|
|
37
|
+
* 2×2 sub-determinants, as `yali-math` computes it. Safe when `out` is `a`.
|
|
38
|
+
*/
|
|
39
|
+
export function invert(out, a, o = 0, ai = 0) {
|
|
40
|
+
// a[ai + i*4 + j] read as row i, column j: the expansion applied to the transpose yields
|
|
41
|
+
// the inverse column by column (see yali-math's Mat4::inverse).
|
|
42
|
+
const s0 = a[ai] * a[ai + 5] - a[ai + 4] * a[ai + 1], s1 = a[ai] * a[ai + 6] - a[ai + 4] * a[ai + 2], s2 = a[ai] * a[ai + 7] - a[ai + 4] * a[ai + 3];
|
|
43
|
+
const s3 = a[ai + 1] * a[ai + 6] - a[ai + 5] * a[ai + 2], s4 = a[ai + 1] * a[ai + 7] - a[ai + 5] * a[ai + 3], s5 = a[ai + 2] * a[ai + 7] - a[ai + 6] * a[ai + 3];
|
|
44
|
+
const c0 = a[ai + 8] * a[ai + 13] - a[ai + 12] * a[ai + 9], c1 = a[ai + 8] * a[ai + 14] - a[ai + 12] * a[ai + 10], c2 = a[ai + 8] * a[ai + 15] - a[ai + 12] * a[ai + 11];
|
|
45
|
+
const c3 = a[ai + 9] * a[ai + 14] - a[ai + 13] * a[ai + 10], c4 = a[ai + 9] * a[ai + 15] - a[ai + 13] * a[ai + 11], c5 = a[ai + 10] * a[ai + 15] - a[ai + 14] * a[ai + 11];
|
|
46
|
+
const det = s0 * c5 - s1 * c4 + s2 * c3 + s3 * c2 - s4 * c1 + s5 * c0;
|
|
47
|
+
if (det === 0 || !Number.isFinite(det))
|
|
48
|
+
return null;
|
|
49
|
+
const k = 1 / det;
|
|
50
|
+
// All sixteen computed before any write, so `out` may be `a`.
|
|
51
|
+
const i0 = a[ai + 5] * c5 - a[ai + 6] * c4 + a[ai + 7] * c3, i1 = -a[ai + 1] * c5 + a[ai + 2] * c4 - a[ai + 3] * c3;
|
|
52
|
+
const i2 = a[ai + 13] * s5 - a[ai + 14] * s4 + a[ai + 15] * s3, i3 = -a[ai + 9] * s5 + a[ai + 10] * s4 - a[ai + 11] * s3;
|
|
53
|
+
const i4 = -a[ai + 4] * c5 + a[ai + 6] * c2 - a[ai + 7] * c1, i5 = a[ai] * c5 - a[ai + 2] * c2 + a[ai + 3] * c1;
|
|
54
|
+
const i6 = -a[ai + 12] * s5 + a[ai + 14] * s2 - a[ai + 15] * s1, i7 = a[ai + 8] * s5 - a[ai + 10] * s2 + a[ai + 11] * s1;
|
|
55
|
+
const i8 = a[ai + 4] * c4 - a[ai + 5] * c2 + a[ai + 7] * c0, i9 = -a[ai] * c4 + a[ai + 1] * c2 - a[ai + 3] * c0;
|
|
56
|
+
const i10 = a[ai + 12] * s4 - a[ai + 13] * s2 + a[ai + 15] * s0, i11 = -a[ai + 8] * s4 + a[ai + 9] * s2 - a[ai + 11] * s0;
|
|
57
|
+
const i12 = -a[ai + 4] * c3 + a[ai + 5] * c1 - a[ai + 6] * c0, i13 = a[ai] * c3 - a[ai + 1] * c1 + a[ai + 2] * c0;
|
|
58
|
+
const i14 = -a[ai + 12] * s3 + a[ai + 13] * s1 - a[ai + 14] * s0, i15 = a[ai + 8] * s3 - a[ai + 9] * s1 + a[ai + 10] * s0;
|
|
59
|
+
out[o] = i0 * k;
|
|
60
|
+
out[o + 1] = i1 * k;
|
|
61
|
+
out[o + 2] = i2 * k;
|
|
62
|
+
out[o + 3] = i3 * k;
|
|
63
|
+
out[o + 4] = i4 * k;
|
|
64
|
+
out[o + 5] = i5 * k;
|
|
65
|
+
out[o + 6] = i6 * k;
|
|
66
|
+
out[o + 7] = i7 * k;
|
|
67
|
+
out[o + 8] = i8 * k;
|
|
68
|
+
out[o + 9] = i9 * k;
|
|
69
|
+
out[o + 10] = i10 * k;
|
|
70
|
+
out[o + 11] = i11 * k;
|
|
71
|
+
out[o + 12] = i12 * k;
|
|
72
|
+
out[o + 13] = i13 * k;
|
|
73
|
+
out[o + 14] = i14 * k;
|
|
74
|
+
out[o + 15] = i15 * k;
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
/** The determinant. */
|
|
78
|
+
export function determinant(a, ai = 0) {
|
|
79
|
+
const s0 = a[ai] * a[ai + 5] - a[ai + 4] * a[ai + 1], s1 = a[ai] * a[ai + 6] - a[ai + 4] * a[ai + 2], s2 = a[ai] * a[ai + 7] - a[ai + 4] * a[ai + 3];
|
|
80
|
+
const s3 = a[ai + 1] * a[ai + 6] - a[ai + 5] * a[ai + 2], s4 = a[ai + 1] * a[ai + 7] - a[ai + 5] * a[ai + 3], s5 = a[ai + 2] * a[ai + 7] - a[ai + 6] * a[ai + 3];
|
|
81
|
+
const c0 = a[ai + 8] * a[ai + 13] - a[ai + 12] * a[ai + 9], c1 = a[ai + 8] * a[ai + 14] - a[ai + 12] * a[ai + 10], c2 = a[ai + 8] * a[ai + 15] - a[ai + 12] * a[ai + 11];
|
|
82
|
+
const c3 = a[ai + 9] * a[ai + 14] - a[ai + 13] * a[ai + 10], c4 = a[ai + 9] * a[ai + 15] - a[ai + 13] * a[ai + 11], c5 = a[ai + 10] * a[ai + 15] - a[ai + 14] * a[ai + 11];
|
|
83
|
+
return s0 * c5 - s1 * c4 + s2 * c3 + s3 * c2 - s4 * c1 + s5 * c0;
|
|
84
|
+
}
|
|
85
|
+
/** `out = m · (p, 1)`, without the perspective divide (affine matrices). Safe when `out` is `p`. */
|
|
86
|
+
export function transformPoint(out, m, p, o = 0, mi = 0, pi = 0) {
|
|
87
|
+
const x = p[pi], y = p[pi + 1], z = p[pi + 2];
|
|
88
|
+
out[o] = m[mi] * x + m[mi + 4] * y + m[mi + 8] * z + m[mi + 12];
|
|
89
|
+
out[o + 1] = m[mi + 1] * x + m[mi + 5] * y + m[mi + 9] * z + m[mi + 13];
|
|
90
|
+
out[o + 2] = m[mi + 2] * x + m[mi + 6] * y + m[mi + 10] * z + m[mi + 14];
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
/** `out = m · (v, 0)`: rotation and scale, no translation. Safe when `out` is `v`. */
|
|
94
|
+
export function transformVector(out, m, v, o = 0, mi = 0, vi = 0) {
|
|
95
|
+
const x = v[vi], y = v[vi + 1], z = v[vi + 2];
|
|
96
|
+
out[o] = m[mi] * x + m[mi + 4] * y + m[mi + 8] * z;
|
|
97
|
+
out[o + 1] = m[mi + 1] * x + m[mi + 5] * y + m[mi + 9] * z;
|
|
98
|
+
out[o + 2] = m[mi + 2] * x + m[mi + 6] * y + m[mi + 10] * z;
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
/** Scale `s`, then rotate `q`, then translate `t` (three.js `Matrix4.compose`). */
|
|
102
|
+
export function compose(out, t, q, s, o = 0, ti = 0, qi = 0, si = 0) {
|
|
103
|
+
const x = q[qi], y = q[qi + 1], z = q[qi + 2], w = q[qi + 3];
|
|
104
|
+
const x2 = x + x, y2 = y + y, z2 = z + z;
|
|
105
|
+
const xx = x * x2, xy = x * y2, xz = x * z2, yy = y * y2, yz = y * z2, zz = z * z2;
|
|
106
|
+
const wx = w * x2, wy = w * y2, wz = w * z2;
|
|
107
|
+
const sx = s[si], sy = s[si + 1], sz = s[si + 2];
|
|
108
|
+
out[o] = (1 - (yy + zz)) * sx;
|
|
109
|
+
out[o + 1] = (xy + wz) * sx;
|
|
110
|
+
out[o + 2] = (xz - wy) * sx;
|
|
111
|
+
out[o + 3] = 0;
|
|
112
|
+
out[o + 4] = (xy - wz) * sy;
|
|
113
|
+
out[o + 5] = (1 - (xx + zz)) * sy;
|
|
114
|
+
out[o + 6] = (yz + wx) * sy;
|
|
115
|
+
out[o + 7] = 0;
|
|
116
|
+
out[o + 8] = (xz + wy) * sz;
|
|
117
|
+
out[o + 9] = (yz - wx) * sz;
|
|
118
|
+
out[o + 10] = (1 - (xx + yy)) * sz;
|
|
119
|
+
out[o + 11] = 0;
|
|
120
|
+
out[o + 12] = t[ti];
|
|
121
|
+
out[o + 13] = t[ti + 1];
|
|
122
|
+
out[o + 14] = t[ti + 2];
|
|
123
|
+
out[o + 15] = 1;
|
|
124
|
+
return out;
|
|
125
|
+
}
|
|
126
|
+
/** A right-handed view matrix from `eye` looking along `dir` with `up`. */
|
|
127
|
+
export function lookTo(out, eye, dir, up, o = 0, ei = 0, di = 0, ui = 0) {
|
|
128
|
+
const dl = Math.hypot(dir[di], dir[di + 1], dir[di + 2]);
|
|
129
|
+
const dk = dl > 0 ? 1 / dl : 0;
|
|
130
|
+
const fx = dir[di] * dk, fy = dir[di + 1] * dk, fz = dir[di + 2] * dk;
|
|
131
|
+
const ux0 = up[ui], uy0 = up[ui + 1], uz0 = up[ui + 2];
|
|
132
|
+
const cx = fy * uz0 - fz * uy0, cy = fz * ux0 - fx * uz0, cz = fx * uy0 - fy * ux0;
|
|
133
|
+
const cl = Math.hypot(cx, cy, cz);
|
|
134
|
+
const ck = cl > 0 ? 1 / cl : 0;
|
|
135
|
+
const sx = cx * ck, sy = cy * ck, sz = cz * ck;
|
|
136
|
+
const ux = sy * fz - sz * fy, uy = sz * fx - sx * fz, uz = sx * fy - sy * fx;
|
|
137
|
+
const ex = eye[ei], ey = eye[ei + 1], ez = eye[ei + 2];
|
|
138
|
+
out[o] = sx;
|
|
139
|
+
out[o + 1] = ux;
|
|
140
|
+
out[o + 2] = -fx;
|
|
141
|
+
out[o + 3] = 0;
|
|
142
|
+
out[o + 4] = sy;
|
|
143
|
+
out[o + 5] = uy;
|
|
144
|
+
out[o + 6] = -fy;
|
|
145
|
+
out[o + 7] = 0;
|
|
146
|
+
out[o + 8] = sz;
|
|
147
|
+
out[o + 9] = uz;
|
|
148
|
+
out[o + 10] = -fz;
|
|
149
|
+
out[o + 11] = 0;
|
|
150
|
+
out[o + 12] = -(sx * ex + sy * ey + sz * ez);
|
|
151
|
+
out[o + 13] = -(ux * ex + uy * ey + uz * ez);
|
|
152
|
+
out[o + 14] = fx * ex + fy * ey + fz * ez;
|
|
153
|
+
out[o + 15] = 1;
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Yali's projection (ADR-0008): right-handed, reverse-Z, infinite far plane, WebGPU's 0..1
|
|
158
|
+
* depth (1 at `near`, towards 0 at infinity; clear depth to 0 and compare `greater`).
|
|
159
|
+
*/
|
|
160
|
+
export function perspectiveInfiniteReverse(out, fovY, aspect, near, o = 0) {
|
|
161
|
+
const f = 1 / Math.tan(fovY / 2);
|
|
162
|
+
for (let k = 0; k < 16; k++)
|
|
163
|
+
out[o + k] = 0;
|
|
164
|
+
out[o] = f / aspect;
|
|
165
|
+
out[o + 5] = f;
|
|
166
|
+
out[o + 11] = -1;
|
|
167
|
+
out[o + 14] = near;
|
|
168
|
+
return out;
|
|
169
|
+
}
|
|
170
|
+
/** A right-handed orthographic projection, reverse-Z, 0..1 depth (1 at `near`, 0 at `far`). */
|
|
171
|
+
export function orthographicReverse(out, left, right, bottom, top, near, far, o = 0) {
|
|
172
|
+
const rw = 1 / (right - left), rh = 1 / (top - bottom), rd = 1 / (far - near);
|
|
173
|
+
for (let k = 0; k < 16; k++)
|
|
174
|
+
out[o + k] = 0;
|
|
175
|
+
out[o] = 2 * rw;
|
|
176
|
+
out[o + 5] = 2 * rh;
|
|
177
|
+
out[o + 10] = rd;
|
|
178
|
+
out[o + 12] = -(left + right) * rw;
|
|
179
|
+
out[o + 13] = -(top + bottom) * rh;
|
|
180
|
+
out[o + 14] = far * rd;
|
|
181
|
+
out[o + 15] = 1;
|
|
182
|
+
return out;
|
|
183
|
+
}
|
|
184
|
+
/** Scratch for `decompose` (allocated once, never per call). */
|
|
185
|
+
const rot = new Float64Array(16);
|
|
186
|
+
/**
|
|
187
|
+
* Splits an affine `m` into translation, rotation and scale (three.js
|
|
188
|
+
* `Matrix4.decompose`): scale is each basis column's length, a negative determinant is a
|
|
189
|
+
* mirror folded into x, and the rotation comes from the normalized columns.
|
|
190
|
+
*/
|
|
191
|
+
export function decompose(outT, outQ, outS, m, ti = 0, qi = 0, si = 0, mi = 0) {
|
|
192
|
+
let sx = Math.hypot(m[mi], m[mi + 1], m[mi + 2]);
|
|
193
|
+
const sy = Math.hypot(m[mi + 4], m[mi + 5], m[mi + 6]);
|
|
194
|
+
const sz = Math.hypot(m[mi + 8], m[mi + 9], m[mi + 10]);
|
|
195
|
+
if (determinant(m, mi) < 0)
|
|
196
|
+
sx = -sx;
|
|
197
|
+
outT[ti] = m[mi + 12];
|
|
198
|
+
outT[ti + 1] = m[mi + 13];
|
|
199
|
+
outT[ti + 2] = m[mi + 14];
|
|
200
|
+
outS[si] = sx;
|
|
201
|
+
outS[si + 1] = sy;
|
|
202
|
+
outS[si + 2] = sz;
|
|
203
|
+
for (let k = 0; k < 3; k++) {
|
|
204
|
+
rot[k] = m[mi + k] / sx;
|
|
205
|
+
rot[4 + k] = m[mi + 4 + k] / sy;
|
|
206
|
+
rot[8 + k] = m[mi + 8 + k] / sz;
|
|
207
|
+
}
|
|
208
|
+
setFromRotationMatrix(outQ, rot, qi);
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=mat4.js.map
|
package/dist/mat4.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mat4.js","sourceRoot":"","sources":["../src/mat4.ts"],"names":[],"mappings":"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,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjK,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACzK,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3K,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACtE,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAClB,8DAA8D;IAC9D,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACpH,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACzH,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAChH,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACzH,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAChH,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAC1H,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAClH,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAC1H,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/E,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnF,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACvF,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3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"}
|
package/dist/quat.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { In, Out } from './types.ts';
|
|
2
|
+
/** `out = (0, 0, 0, 1)`. */
|
|
3
|
+
export declare function identity<T extends Out>(out: T, o?: number): T;
|
|
4
|
+
/** `out = a * b`: apply `b`, then `a` (Hamilton product). Safe when `out` is `a` or `b`. */
|
|
5
|
+
export declare function multiply<T extends Out>(out: T, a: In, b: In, o?: number, ai?: number, bi?: number): T;
|
|
6
|
+
/** A rotation of `angle` radians about the unit `axis`. */
|
|
7
|
+
export declare function setFromAxisAngle<T extends Out>(out: T, axis: In, angle: number, o?: number, ai?: number): T;
|
|
8
|
+
/**
|
|
9
|
+
* The rotation of `m`'s upper 3×3 (orthonormal: no scale), Shepperd's method, as
|
|
10
|
+
* `yali-math`'s `Quat::from_basis` computes it.
|
|
11
|
+
*/
|
|
12
|
+
export declare function setFromRotationMatrix<T extends Out>(out: T, m: In, o?: number, mi?: number): T;
|
|
13
|
+
/** `a · b`. */
|
|
14
|
+
export declare function dot(a: In, b: In, ai?: number, bi?: number): number;
|
|
15
|
+
/** Unit length; the identity for a zero (or non-finite) quaternion. */
|
|
16
|
+
export declare function normalize<T extends Out>(out: T, a: In, o?: number, ai?: number): T;
|
|
17
|
+
/** The opposite rotation of a unit quaternion. */
|
|
18
|
+
export declare function conjugate<T extends Out>(out: T, a: In, o?: number, ai?: number): T;
|
|
19
|
+
/** The inverse of any non-zero quaternion. */
|
|
20
|
+
export declare function invert<T extends Out>(out: T, a: In, o?: number, ai?: number): T;
|
|
21
|
+
/** Normalized lerp along the shorter arc (what transform interpolation uses). */
|
|
22
|
+
export declare function nlerp<T extends Out>(out: T, a: In, b: In, t: number, o?: number, ai?: number, bi?: number): T;
|
|
23
|
+
/** Spherical interpolation along the shorter arc; `nlerp` when nearly equal. Safe when `out` is `a` or `b`. */
|
|
24
|
+
export declare function slerp<T extends Out>(out: T, a: In, b: In, t: number, o?: number, ai?: number, bi?: number): T;
|
package/dist/quat.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/** `out = (0, 0, 0, 1)`. */
|
|
2
|
+
export function identity(out, o = 0) {
|
|
3
|
+
out[o] = 0;
|
|
4
|
+
out[o + 1] = 0;
|
|
5
|
+
out[o + 2] = 0;
|
|
6
|
+
out[o + 3] = 1;
|
|
7
|
+
return out;
|
|
8
|
+
}
|
|
9
|
+
/** `out = a * b`: apply `b`, then `a` (Hamilton product). Safe when `out` is `a` or `b`. */
|
|
10
|
+
export function multiply(out, a, b, o = 0, ai = 0, bi = 0) {
|
|
11
|
+
const ax = a[ai], ay = a[ai + 1], az = a[ai + 2], aw = a[ai + 3];
|
|
12
|
+
const bx = b[bi], by = b[bi + 1], bz = b[bi + 2], bw = b[bi + 3];
|
|
13
|
+
out[o] = aw * bx + ax * bw + ay * bz - az * by;
|
|
14
|
+
out[o + 1] = aw * by - ax * bz + ay * bw + az * bx;
|
|
15
|
+
out[o + 2] = aw * bz + ax * by - ay * bx + az * bw;
|
|
16
|
+
out[o + 3] = aw * bw - ax * bx - ay * by - az * bz;
|
|
17
|
+
return out;
|
|
18
|
+
}
|
|
19
|
+
/** A rotation of `angle` radians about the unit `axis`. */
|
|
20
|
+
export function setFromAxisAngle(out, axis, angle, o = 0, ai = 0) {
|
|
21
|
+
const s = Math.sin(angle / 2);
|
|
22
|
+
out[o] = axis[ai] * s;
|
|
23
|
+
out[o + 1] = axis[ai + 1] * s;
|
|
24
|
+
out[o + 2] = axis[ai + 2] * s;
|
|
25
|
+
out[o + 3] = Math.cos(angle / 2);
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The rotation of `m`'s upper 3×3 (orthonormal: no scale), Shepperd's method, as
|
|
30
|
+
* `yali-math`'s `Quat::from_basis` computes it.
|
|
31
|
+
*/
|
|
32
|
+
export function setFromRotationMatrix(out, m, o = 0, mi = 0) {
|
|
33
|
+
const m00 = m[mi], m10 = m[mi + 1], m20 = m[mi + 2];
|
|
34
|
+
const m01 = m[mi + 4], m11 = m[mi + 5], m21 = m[mi + 6];
|
|
35
|
+
const m02 = m[mi + 8], m12 = m[mi + 9], m22 = m[mi + 10];
|
|
36
|
+
const tr = m00 + m11 + m22;
|
|
37
|
+
let x, y, z, w;
|
|
38
|
+
if (tr > 0) {
|
|
39
|
+
const s = Math.sqrt(tr + 1) * 2;
|
|
40
|
+
x = (m21 - m12) / s;
|
|
41
|
+
y = (m02 - m20) / s;
|
|
42
|
+
z = (m10 - m01) / s;
|
|
43
|
+
w = 0.25 * s;
|
|
44
|
+
}
|
|
45
|
+
else if (m00 > m11 && m00 > m22) {
|
|
46
|
+
const s = Math.sqrt(1 + m00 - m11 - m22) * 2;
|
|
47
|
+
x = 0.25 * s;
|
|
48
|
+
y = (m01 + m10) / s;
|
|
49
|
+
z = (m02 + m20) / s;
|
|
50
|
+
w = (m21 - m12) / s;
|
|
51
|
+
}
|
|
52
|
+
else if (m11 > m22) {
|
|
53
|
+
const s = Math.sqrt(1 + m11 - m00 - m22) * 2;
|
|
54
|
+
x = (m01 + m10) / s;
|
|
55
|
+
y = 0.25 * s;
|
|
56
|
+
z = (m12 + m21) / s;
|
|
57
|
+
w = (m02 - m20) / s;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const s = Math.sqrt(1 + m22 - m00 - m11) * 2;
|
|
61
|
+
x = (m02 + m20) / s;
|
|
62
|
+
y = (m12 + m21) / s;
|
|
63
|
+
z = 0.25 * s;
|
|
64
|
+
w = (m10 - m01) / s;
|
|
65
|
+
}
|
|
66
|
+
out[o] = x;
|
|
67
|
+
out[o + 1] = y;
|
|
68
|
+
out[o + 2] = z;
|
|
69
|
+
out[o + 3] = w;
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
/** `a · b`. */
|
|
73
|
+
export function dot(a, b, ai = 0, bi = 0) {
|
|
74
|
+
return a[ai] * b[bi] + a[ai + 1] * b[bi + 1] + a[ai + 2] * b[bi + 2] + a[ai + 3] * b[bi + 3];
|
|
75
|
+
}
|
|
76
|
+
/** Unit length; the identity for a zero (or non-finite) quaternion. */
|
|
77
|
+
export function normalize(out, a, o = 0, ai = 0) {
|
|
78
|
+
const l = Math.sqrt(dot(a, a, ai, ai));
|
|
79
|
+
if (!(l > 0) || !Number.isFinite(l))
|
|
80
|
+
return identity(out, o);
|
|
81
|
+
out[o] = a[ai] / l;
|
|
82
|
+
out[o + 1] = a[ai + 1] / l;
|
|
83
|
+
out[o + 2] = a[ai + 2] / l;
|
|
84
|
+
out[o + 3] = a[ai + 3] / l;
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
/** The opposite rotation of a unit quaternion. */
|
|
88
|
+
export function conjugate(out, a, o = 0, ai = 0) {
|
|
89
|
+
out[o] = -a[ai];
|
|
90
|
+
out[o + 1] = -a[ai + 1];
|
|
91
|
+
out[o + 2] = -a[ai + 2];
|
|
92
|
+
out[o + 3] = a[ai + 3];
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
/** The inverse of any non-zero quaternion. */
|
|
96
|
+
export function invert(out, a, o = 0, ai = 0) {
|
|
97
|
+
const n = dot(a, a, ai, ai);
|
|
98
|
+
const k = n > 0 ? 1 / n : 0;
|
|
99
|
+
out[o] = -a[ai] * k;
|
|
100
|
+
out[o + 1] = -a[ai + 1] * k;
|
|
101
|
+
out[o + 2] = -a[ai + 2] * k;
|
|
102
|
+
out[o + 3] = a[ai + 3] * k;
|
|
103
|
+
return out;
|
|
104
|
+
}
|
|
105
|
+
/** Normalized lerp along the shorter arc (what transform interpolation uses). */
|
|
106
|
+
export function nlerp(out, a, b, t, o = 0, ai = 0, bi = 0) {
|
|
107
|
+
const sign = dot(a, b, ai, bi) < 0 ? -1 : 1;
|
|
108
|
+
for (let k = 0; k < 4; k++)
|
|
109
|
+
out[o + k] = a[ai + k] + (sign * b[bi + k] - a[ai + k]) * t;
|
|
110
|
+
return normalize(out, out, o, o);
|
|
111
|
+
}
|
|
112
|
+
/** Spherical interpolation along the shorter arc; `nlerp` when nearly equal. Safe when `out` is `a` or `b`. */
|
|
113
|
+
export function slerp(out, a, b, t, o = 0, ai = 0, bi = 0) {
|
|
114
|
+
let d = dot(a, b, ai, bi);
|
|
115
|
+
const sign = d < 0 ? -1 : 1;
|
|
116
|
+
d *= sign;
|
|
117
|
+
if (d > 0.9995)
|
|
118
|
+
return nlerp(out, a, b, t, o, ai, bi);
|
|
119
|
+
const theta = Math.acos(Math.min(d, 1));
|
|
120
|
+
const s = Math.sin(theta);
|
|
121
|
+
const wa = Math.sin((1 - t) * theta) / s, wb = (Math.sin(t * theta) / s) * sign;
|
|
122
|
+
const ax = a[ai], ay = a[ai + 1], az = a[ai + 2], aw = a[ai + 3];
|
|
123
|
+
out[o] = ax * wa + b[bi] * wb;
|
|
124
|
+
out[o + 1] = ay * wa + b[bi + 1] * wb;
|
|
125
|
+
out[o + 2] = az * wa + b[bi + 2] * wb;
|
|
126
|
+
out[o + 3] = aw * wa + b[bi + 3] * wb;
|
|
127
|
+
return out;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=quat.js.map
|
package/dist/quat.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quat.js","sourceRoot":"","sources":["../src/quat.ts"],"names":[],"mappings":"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"}
|
package/dist/scalar.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** `v` limited to `[lo, hi]`. */
|
|
2
|
+
export declare function clamp(v: number, lo: number, hi: number): number;
|
|
3
|
+
/** `a + (b - a) * t`. */
|
|
4
|
+
export declare function lerp(a: number, b: number, t: number): number;
|
|
5
|
+
/** Where `v` sits between `a` and `b` (0 at `a`, 1 at `b`; 0 when `a === b`). */
|
|
6
|
+
export declare function inverseLerp(a: number, b: number, v: number): number;
|
|
7
|
+
/** Hermite step from 0 at `lo` to 1 at `hi`. */
|
|
8
|
+
export declare function smoothstep(v: number, lo: number, hi: number): number;
|
|
9
|
+
/**
|
|
10
|
+
* Frame-rate-independent approach of `a` towards `b` at rate `lambda` (1/s) over `dt` (s):
|
|
11
|
+
* the same total motion whether a second is one step or sixty.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* camera.distance = MathUtils.damp(camera.distance, target, 6, dt);
|
|
15
|
+
*/
|
|
16
|
+
export declare function damp(a: number, b: number, lambda: number, dt: number): number;
|
|
17
|
+
/** Degrees to radians. */
|
|
18
|
+
export declare function degToRad(d: number): number;
|
|
19
|
+
/** Radians to degrees. */
|
|
20
|
+
export declare function radToDeg(r: number): number;
|
package/dist/scalar.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** `v` limited to `[lo, hi]`. */
|
|
2
|
+
export function clamp(v, lo, hi) {
|
|
3
|
+
return Math.min(Math.max(v, lo), hi);
|
|
4
|
+
}
|
|
5
|
+
/** `a + (b - a) * t`. */
|
|
6
|
+
export function lerp(a, b, t) {
|
|
7
|
+
return a + (b - a) * t;
|
|
8
|
+
}
|
|
9
|
+
/** Where `v` sits between `a` and `b` (0 at `a`, 1 at `b`; 0 when `a === b`). */
|
|
10
|
+
export function inverseLerp(a, b, v) {
|
|
11
|
+
return a === b ? 0 : (v - a) / (b - a);
|
|
12
|
+
}
|
|
13
|
+
/** Hermite step from 0 at `lo` to 1 at `hi`. */
|
|
14
|
+
export function smoothstep(v, lo, hi) {
|
|
15
|
+
const x = clamp(inverseLerp(lo, hi, v), 0, 1);
|
|
16
|
+
return x * x * (3 - 2 * x);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Frame-rate-independent approach of `a` towards `b` at rate `lambda` (1/s) over `dt` (s):
|
|
20
|
+
* the same total motion whether a second is one step or sixty.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* camera.distance = MathUtils.damp(camera.distance, target, 6, dt);
|
|
24
|
+
*/
|
|
25
|
+
export function damp(a, b, lambda, dt) {
|
|
26
|
+
return lerp(a, b, 1 - Math.exp(-lambda * dt));
|
|
27
|
+
}
|
|
28
|
+
/** Degrees to radians. */
|
|
29
|
+
export function degToRad(d) {
|
|
30
|
+
return d * (Math.PI / 180);
|
|
31
|
+
}
|
|
32
|
+
/** Radians to degrees. */
|
|
33
|
+
export function radToDeg(r) {
|
|
34
|
+
return r * (180 / Math.PI);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=scalar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scalar.js","sourceRoot":"","sources":["../src/scalar.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,MAAM,UAAU,KAAK,CAAC,CAAS,EAAE,EAAU,EAAE,EAAU;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAClD,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACzD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,EAAU,EAAE,EAAU;IAC1D,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc,EAAE,EAAU;IACnE,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { In, Out } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* `out = parent ∘ local` for transforms laid out as 8 numbers, `[tx, ty, tz, rx, ry, rz,
|
|
4
|
+
* rw, s]` (translation, rotation, uniform scale: `core.Transform`'s fields). Keep them in a
|
|
5
|
+
* Float64Array: translations are world positions (ADR-0008). Safe when `out` is an input.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const world = transform.compose(new Float64Array(8), parentWorld, childLocal);
|
|
9
|
+
*/
|
|
10
|
+
export declare function compose<T extends Out>(out: T, parent: In, local: In, o?: number, pi?: number, li?: number): T;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `out = parent ∘ local` for transforms laid out as 8 numbers, `[tx, ty, tz, rx, ry, rz,
|
|
3
|
+
* rw, s]` (translation, rotation, uniform scale: `core.Transform`'s fields). Keep them in a
|
|
4
|
+
* Float64Array: translations are world positions (ADR-0008). Safe when `out` is an input.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* const world = transform.compose(new Float64Array(8), parentWorld, childLocal);
|
|
8
|
+
*/
|
|
9
|
+
export function compose(out, parent, local, o = 0, pi = 0, li = 0) {
|
|
10
|
+
const s = parent[pi + 7];
|
|
11
|
+
const vx = local[li] * s, vy = local[li + 1] * s, vz = local[li + 2] * s;
|
|
12
|
+
const x = parent[pi + 3], y = parent[pi + 4], z = parent[pi + 5], w = parent[pi + 6];
|
|
13
|
+
const tx = 2 * (y * vz - z * vy), ty = 2 * (z * vx - x * vz), tz = 2 * (x * vy - y * vx);
|
|
14
|
+
const bx = local[li + 3], by = local[li + 4], bz = local[li + 5], bw = local[li + 6];
|
|
15
|
+
const ls = local[li + 7];
|
|
16
|
+
out[o] = parent[pi] + vx + w * tx + (y * tz - z * ty);
|
|
17
|
+
out[o + 1] = parent[pi + 1] + vy + w * ty + (z * tx - x * tz);
|
|
18
|
+
out[o + 2] = parent[pi + 2] + vz + w * tz + (x * ty - y * tx);
|
|
19
|
+
out[o + 3] = w * bx + x * bw + y * bz - z * by;
|
|
20
|
+
out[o + 4] = w * by - x * bz + y * bw + z * bx;
|
|
21
|
+
out[o + 5] = w * bz + x * by - y * bx + z * bw;
|
|
22
|
+
out[o + 6] = w * bw - x * bx - y * by - z * bz;
|
|
23
|
+
out[o + 7] = s * ls;
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAgB,GAAM,EAAE,MAAU,EAAE,KAAS,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC;IACzF,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACzE,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACrF,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACzF,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACrF,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACtD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9D,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9D,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC/C,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/types.d.ts
ADDED
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/vec3.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { In, Out } from './types.ts';
|
|
2
|
+
/** `out = a + b`. */
|
|
3
|
+
export declare function add<T extends Out>(out: T, a: In, b: In, o?: number, ai?: number, bi?: number): T;
|
|
4
|
+
/** `out = a - b`. */
|
|
5
|
+
export declare function sub<T extends Out>(out: T, a: In, b: In, o?: number, ai?: number, bi?: number): T;
|
|
6
|
+
/** `out = a * s`. */
|
|
7
|
+
export declare function multiplyScalar<T extends Out>(out: T, a: In, s: number, o?: number, ai?: number): T;
|
|
8
|
+
/** `a · b`. */
|
|
9
|
+
export declare function dot(a: In, b: In, ai?: number, bi?: number): number;
|
|
10
|
+
/** `out = a × b` (right-handed). Safe when `out` is `a` or `b`. */
|
|
11
|
+
export declare function cross<T extends Out>(out: T, a: In, b: In, o?: number, ai?: number, bi?: number): T;
|
|
12
|
+
/** Squared length. */
|
|
13
|
+
export declare function lengthSq(a: In, ai?: number): number;
|
|
14
|
+
/** Length. */
|
|
15
|
+
export declare function length(a: In, ai?: number): number;
|
|
16
|
+
/** Distance between two points. */
|
|
17
|
+
export declare function distanceTo(a: In, b: In, ai?: number, bi?: number): number;
|
|
18
|
+
/** `out = a / |a|`, or zero for a zero (or non-finite) vector. */
|
|
19
|
+
export declare function normalize<T extends Out>(out: T, a: In, o?: number, ai?: number): T;
|
|
20
|
+
/** `out = a + (b - a) * t`. */
|
|
21
|
+
export declare function lerp<T extends Out>(out: T, a: In, b: In, t: number, o?: number, ai?: number, bi?: number): T;
|
|
22
|
+
/** `out = q` rotating `v` (`t = 2 q.xyz × v; v + w t + q.xyz × t`). Safe when `out` is `v`. */
|
|
23
|
+
export declare function applyQuaternion<T extends Out>(out: T, v: In, q: In, o?: number, vi?: number, qi?: number): T;
|
|
24
|
+
/** `out = m · (v, 1)` with the perspective divide (three.js `applyMatrix4`). Safe when `out` is `v`. */
|
|
25
|
+
export declare function applyMatrix4<T extends Out>(out: T, v: In, m: In, o?: number, vi?: number, mi?: number): T;
|
package/dist/vec3.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/** `out = a + b`. */
|
|
2
|
+
export function add(out, a, b, o = 0, ai = 0, bi = 0) {
|
|
3
|
+
out[o] = a[ai] + b[bi];
|
|
4
|
+
out[o + 1] = a[ai + 1] + b[bi + 1];
|
|
5
|
+
out[o + 2] = a[ai + 2] + b[bi + 2];
|
|
6
|
+
return out;
|
|
7
|
+
}
|
|
8
|
+
/** `out = a - b`. */
|
|
9
|
+
export function sub(out, a, b, o = 0, ai = 0, bi = 0) {
|
|
10
|
+
out[o] = a[ai] - b[bi];
|
|
11
|
+
out[o + 1] = a[ai + 1] - b[bi + 1];
|
|
12
|
+
out[o + 2] = a[ai + 2] - b[bi + 2];
|
|
13
|
+
return out;
|
|
14
|
+
}
|
|
15
|
+
/** `out = a * s`. */
|
|
16
|
+
export function multiplyScalar(out, a, s, o = 0, ai = 0) {
|
|
17
|
+
out[o] = a[ai] * s;
|
|
18
|
+
out[o + 1] = a[ai + 1] * s;
|
|
19
|
+
out[o + 2] = a[ai + 2] * s;
|
|
20
|
+
return out;
|
|
21
|
+
}
|
|
22
|
+
/** `a · b`. */
|
|
23
|
+
export function dot(a, b, ai = 0, bi = 0) {
|
|
24
|
+
return a[ai] * b[bi] + a[ai + 1] * b[bi + 1] + a[ai + 2] * b[bi + 2];
|
|
25
|
+
}
|
|
26
|
+
/** `out = a × b` (right-handed). Safe when `out` is `a` or `b`. */
|
|
27
|
+
export function cross(out, a, b, o = 0, ai = 0, bi = 0) {
|
|
28
|
+
const ax = a[ai], ay = a[ai + 1], az = a[ai + 2];
|
|
29
|
+
const bx = b[bi], by = b[bi + 1], bz = b[bi + 2];
|
|
30
|
+
out[o] = ay * bz - az * by;
|
|
31
|
+
out[o + 1] = az * bx - ax * bz;
|
|
32
|
+
out[o + 2] = ax * by - ay * bx;
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
/** Squared length. */
|
|
36
|
+
export function lengthSq(a, ai = 0) {
|
|
37
|
+
return dot(a, a, ai, ai);
|
|
38
|
+
}
|
|
39
|
+
/** Length. */
|
|
40
|
+
export function length(a, ai = 0) {
|
|
41
|
+
return Math.sqrt(dot(a, a, ai, ai));
|
|
42
|
+
}
|
|
43
|
+
/** Distance between two points. */
|
|
44
|
+
export function distanceTo(a, b, ai = 0, bi = 0) {
|
|
45
|
+
const x = a[ai] - b[bi], y = a[ai + 1] - b[bi + 1], z = a[ai + 2] - b[bi + 2];
|
|
46
|
+
return Math.sqrt(x * x + y * y + z * z);
|
|
47
|
+
}
|
|
48
|
+
/** `out = a / |a|`, or zero for a zero (or non-finite) vector. */
|
|
49
|
+
export function normalize(out, a, o = 0, ai = 0) {
|
|
50
|
+
const l = length(a, ai);
|
|
51
|
+
const k = l > 0 && Number.isFinite(l) ? 1 / l : 0;
|
|
52
|
+
return multiplyScalar(out, a, k, o, ai);
|
|
53
|
+
}
|
|
54
|
+
/** `out = a + (b - a) * t`. */
|
|
55
|
+
export function lerp(out, a, b, t, o = 0, ai = 0, bi = 0) {
|
|
56
|
+
out[o] = a[ai] + (b[bi] - a[ai]) * t;
|
|
57
|
+
out[o + 1] = a[ai + 1] + (b[bi + 1] - a[ai + 1]) * t;
|
|
58
|
+
out[o + 2] = a[ai + 2] + (b[bi + 2] - a[ai + 2]) * t;
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
61
|
+
/** `out = q` rotating `v` (`t = 2 q.xyz × v; v + w t + q.xyz × t`). Safe when `out` is `v`. */
|
|
62
|
+
export function applyQuaternion(out, v, q, o = 0, vi = 0, qi = 0) {
|
|
63
|
+
const x = q[qi], y = q[qi + 1], z = q[qi + 2], w = q[qi + 3];
|
|
64
|
+
const vx = v[vi], vy = v[vi + 1], vz = v[vi + 2];
|
|
65
|
+
const tx = 2 * (y * vz - z * vy), ty = 2 * (z * vx - x * vz), tz = 2 * (x * vy - y * vx);
|
|
66
|
+
out[o] = vx + w * tx + (y * tz - z * ty);
|
|
67
|
+
out[o + 1] = vy + w * ty + (z * tx - x * tz);
|
|
68
|
+
out[o + 2] = vz + w * tz + (x * ty - y * tx);
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
/** `out = m · (v, 1)` with the perspective divide (three.js `applyMatrix4`). Safe when `out` is `v`. */
|
|
72
|
+
export function applyMatrix4(out, v, m, o = 0, vi = 0, mi = 0) {
|
|
73
|
+
const x = v[vi], y = v[vi + 1], z = v[vi + 2];
|
|
74
|
+
const w = 1 / (m[mi + 3] * x + m[mi + 7] * y + m[mi + 11] * z + m[mi + 15]);
|
|
75
|
+
out[o] = (m[mi] * x + m[mi + 4] * y + m[mi + 8] * z + m[mi + 12]) * w;
|
|
76
|
+
out[o + 1] = (m[mi + 1] * x + m[mi + 5] * y + m[mi + 9] * z + m[mi + 13]) * w;
|
|
77
|
+
out[o + 2] = (m[mi + 2] * x + m[mi + 6] * y + m[mi + 10] * z + m[mi + 14]) * w;
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=vec3.js.map
|
package/dist/vec3.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vec3.js","sourceRoot":"","sources":["../src/vec3.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yali-engine/math",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "Yali math for TS: vectors, quaternions, matrices, frustums and transforms as allocation-free functions over typed arrays (ADR-0054).",
|
|
5
|
+
"license": "MIT OR Apache-2.0",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"typecheck": "tsc -p tsconfig.json",
|
|
22
|
+
"test": "node --experimental-strip-types --no-warnings --test \"test/*.test.ts\""
|
|
23
|
+
}
|
|
6
24
|
}
|
package/README.md
DELETED