@certe/atmos-math 0.1.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/README.md ADDED
@@ -0,0 +1,105 @@
1
+ # ๐Ÿงฎ @certe/atmos-math
2
+
3
+ Lightweight, zero-dependency math library for the Atmos Engine. Every type is a plain `Float32Array` โ€” GPU-upload friendly, zero heap allocations on hot paths, and fully tree-shakeable.
4
+
5
+ ---
6
+
7
+ ## ๐Ÿ“ฆ Modules
8
+
9
+ | Module | Type | Description |
10
+ |--------|------|-------------|
11
+ | `Vec3` | `Float32Array(3)` | 3D vectors |
12
+ | `Mat4` | `Float32Array(16)` | 4ร—4 matrices (column-major) |
13
+ | `Quat` | `Float32Array(4)` | Quaternions `[x, y, z, w]` |
14
+ | `Ray` | `{ origin: Vec3, direction: Vec3 }` | Rays for picking & intersection |
15
+ | Noise | โ€” | Value noise, Perlin 3D, fBm |
16
+
17
+ ---
18
+
19
+ ## ๐Ÿ”‘ Out-Param Pattern
20
+
21
+ All operations follow the same convention โ€” the **first parameter is the output** and the function returns it for chaining:
22
+
23
+ ```ts
24
+ import { Vec3, Mat4, Quat } from '@certe/atmos-math';
25
+
26
+ const a = Vec3.fromValues(1, 2, 3);
27
+ const b = Vec3.fromValues(4, 5, 6);
28
+ const out = Vec3.create();
29
+
30
+ Vec3.add(out, a, b); // out = [5, 7, 9], returns out
31
+ Vec3.scale(out, out, 2); // out = [10, 14, 18]
32
+ ```
33
+
34
+ This avoids garbage collection pressure in per-frame code.
35
+
36
+ ---
37
+
38
+ ## ๐Ÿš€ Quick Start
39
+
40
+ ```ts
41
+ import { Vec3, Mat4, Quat } from '@certe/atmos-math';
42
+
43
+ // Build a TRS matrix from quaternion rotation + position + scale
44
+ const pos = Vec3.fromValues(0, 5, -10);
45
+ const rot = Quat.create();
46
+ Quat.fromEuler(rot, 0, Math.PI / 4, 0);
47
+ const scl = Vec3.fromValues(1, 1, 1);
48
+
49
+ const world = Mat4.create();
50
+ Mat4.fromRotationTranslationScale(world, rot, pos, scl);
51
+ ```
52
+
53
+ ---
54
+
55
+ ## ๐Ÿ“– API Overview
56
+
57
+ ### Vec3
58
+
59
+ `create` ยท `fromValues` ยท `set` ยท `copy` ยท `add` ยท `sub` ยท `scale` ยท `dot` ยท `cross` ยท `length` ยท `distance` ยท `normalize` ยท `transformQuat` ยท `lerp`
60
+
61
+ ### Mat4
62
+
63
+ `create` ยท `identity` ยท `multiply` ยท `translate` ยท `scale` ยท `rotateX/Y/Z` ยท `perspective` ยท `ortho` ยท `lookAt` ยท `invert` ยท `transpose` ยท `fromRotationTranslationScale`
64
+
65
+ ### Quat
66
+
67
+ `create` ยท `identity` ยท `fromAxisAngle` ยท `fromEuler` ยท `fromMat4` ยท `toEuler` ยท `toMat4` ยท `multiply` ยท `normalize` ยท `slerp` ยท `invert` ยท `copy` ยท `rotateX/Y/Z`
68
+
69
+ ### Ray
70
+
71
+ `create` ยท `fromScreenCoords` ยท `intersectSphere` ยท `intersectPlane` ยท `intersectTriangle` ยท `pointOnRay`
72
+
73
+ ### Noise
74
+
75
+ `valueNoise2D` ยท `fbm` ยท `perlinNoise3D` ยท `fbm3D`
76
+
77
+ ---
78
+
79
+ ## ๐Ÿง  Design Principles
80
+
81
+ - **Float32Array everywhere** โ€” matches GPU uniform/attribute layouts
82
+ - **Zero allocations in hot paths** โ€” module-level scratch arrays for temporaries
83
+ - **Functional API** โ€” no classes, no `this`, pure functions
84
+ - **Tree-shakeable** โ€” import only what you use
85
+ - **No dependencies** โ€” standalone package
86
+
87
+ ---
88
+
89
+ ## ๐Ÿ“ Structure
90
+
91
+ ```
92
+ packages/math/src/
93
+ index.ts # Re-exports all modules
94
+ vec3.ts # 3D vector operations
95
+ mat4.ts # 4ร—4 matrix operations
96
+ quat.ts # Quaternion operations
97
+ ray.ts # Ray creation & intersection tests
98
+ noise.ts # Value noise, Perlin 3D, fBm
99
+ ```
100
+
101
+ ---
102
+
103
+ ## ๐Ÿ”— Dependencies
104
+
105
+ None.
@@ -0,0 +1,10 @@
1
+ export * as Vec3 from './vec3.js';
2
+ export * as Mat4 from './mat4.js';
3
+ export * as Quat from './quat.js';
4
+ export * as Ray from './ray.js';
5
+ export type { Vec3 as Vec3Type } from './vec3.js';
6
+ export type { Mat4 as Mat4Type } from './mat4.js';
7
+ export type { Quat as QuatType } from './quat.js';
8
+ export type { Ray as RayType } from './ray.js';
9
+ export { valueNoise2D, fbm, perlinNoise3D, fbm3D } from './noise.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,YAAY,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * as Vec3 from './vec3.js';
2
+ export * as Mat4 from './mat4.js';
3
+ export * as Quat from './quat.js';
4
+ export * as Ray from './ray.js';
5
+ export { valueNoise2D, fbm, perlinNoise3D, fbm3D } from './noise.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAKhC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
package/dist/mat4.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ import type { Vec3 } from './vec3.js';
2
+ import type { Quat } from './quat.js';
3
+ /** A Mat4 is a Float32Array of length 16 in column-major order */
4
+ export type Mat4 = Float32Array;
5
+ export declare function create(): Mat4;
6
+ export declare function identity(out: Mat4): Mat4;
7
+ export declare function multiply(out: Mat4, a: Mat4, b: Mat4): Mat4;
8
+ export declare function translate(out: Mat4, a: Mat4, v: Vec3): Mat4;
9
+ export declare function scale(out: Mat4, a: Mat4, v: Vec3): Mat4;
10
+ export declare function rotateX(out: Mat4, a: Mat4, rad: number): Mat4;
11
+ export declare function rotateY(out: Mat4, a: Mat4, rad: number): Mat4;
12
+ export declare function rotateZ(out: Mat4, a: Mat4, rad: number): Mat4;
13
+ /** Orthographic projection (WebGPU NDC: depth 0..1) */
14
+ export declare function ortho(out: Mat4, left: number, right: number, bottom: number, top: number, near: number, far: number): Mat4;
15
+ export declare function perspective(out: Mat4, fovY: number, aspect: number, near: number, far: number): Mat4;
16
+ export declare function lookAt(out: Mat4, eye: Vec3, center: Vec3, up: Vec3): Mat4;
17
+ export declare function invert(out: Mat4, a: Mat4): Mat4 | null;
18
+ export declare function transpose(out: Mat4, a: Mat4): Mat4;
19
+ export declare function fromRotationTranslationScale(out: Mat4, q: Quat, v: Vec3, s: Vec3): Mat4;
20
+ //# sourceMappingURL=mat4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat4.d.ts","sourceRoot":"","sources":["../src/mat4.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,kEAAkE;AAClE,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC;AAEhC,wBAAgB,MAAM,IAAI,IAAI,CAE7B;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAMxC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CA+B1D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAoB3D;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAOvD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAoB7D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAoB7D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAoB7D;AAED,uDAAuD;AACvD,wBAAgB,KAAK,CACnB,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CAaN;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,IAAI,CA0BN;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,CAiCzE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAwCtD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAgBlD;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,IAAI,EACT,CAAC,EAAE,IAAI,EACP,CAAC,EAAE,IAAI,EACP,CAAC,EAAE,IAAI,GACN,IAAI,CAyBN"}
package/dist/mat4.js ADDED
@@ -0,0 +1,382 @@
1
+ export function create() {
2
+ return new Float32Array(16);
3
+ }
4
+ export function identity(out) {
5
+ out[0] = 1;
6
+ out[1] = 0;
7
+ out[2] = 0;
8
+ out[3] = 0;
9
+ out[4] = 0;
10
+ out[5] = 1;
11
+ out[6] = 0;
12
+ out[7] = 0;
13
+ out[8] = 0;
14
+ out[9] = 0;
15
+ out[10] = 1;
16
+ out[11] = 0;
17
+ out[12] = 0;
18
+ out[13] = 0;
19
+ out[14] = 0;
20
+ out[15] = 1;
21
+ return out;
22
+ }
23
+ export function multiply(out, a, b) {
24
+ const a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
25
+ const a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
26
+ const a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
27
+ const a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
28
+ let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
29
+ out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
30
+ out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
31
+ out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
32
+ out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
33
+ b0 = b[4];
34
+ b1 = b[5];
35
+ b2 = b[6];
36
+ b3 = b[7];
37
+ out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
38
+ out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
39
+ out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
40
+ out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
41
+ b0 = b[8];
42
+ b1 = b[9];
43
+ b2 = b[10];
44
+ b3 = b[11];
45
+ out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
46
+ out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
47
+ out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
48
+ out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
49
+ b0 = b[12];
50
+ b1 = b[13];
51
+ b2 = b[14];
52
+ b3 = b[15];
53
+ out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
54
+ out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
55
+ out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
56
+ out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
57
+ return out;
58
+ }
59
+ export function translate(out, a, v) {
60
+ const x = v[0], y = v[1], z = v[2];
61
+ if (a === out) {
62
+ out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];
63
+ out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];
64
+ out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];
65
+ out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];
66
+ }
67
+ else {
68
+ const a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
69
+ const a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
70
+ const a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
71
+ out[0] = a00;
72
+ out[1] = a01;
73
+ out[2] = a02;
74
+ out[3] = a03;
75
+ out[4] = a10;
76
+ out[5] = a11;
77
+ out[6] = a12;
78
+ out[7] = a13;
79
+ out[8] = a20;
80
+ out[9] = a21;
81
+ out[10] = a22;
82
+ out[11] = a23;
83
+ out[12] = a00 * x + a10 * y + a20 * z + a[12];
84
+ out[13] = a01 * x + a11 * y + a21 * z + a[13];
85
+ out[14] = a02 * x + a12 * y + a22 * z + a[14];
86
+ out[15] = a03 * x + a13 * y + a23 * z + a[15];
87
+ }
88
+ return out;
89
+ }
90
+ export function scale(out, a, v) {
91
+ const x = v[0], y = v[1], z = v[2];
92
+ out[0] = a[0] * x;
93
+ out[1] = a[1] * x;
94
+ out[2] = a[2] * x;
95
+ out[3] = a[3] * x;
96
+ out[4] = a[4] * y;
97
+ out[5] = a[5] * y;
98
+ out[6] = a[6] * y;
99
+ out[7] = a[7] * y;
100
+ out[8] = a[8] * z;
101
+ out[9] = a[9] * z;
102
+ out[10] = a[10] * z;
103
+ out[11] = a[11] * z;
104
+ out[12] = a[12];
105
+ out[13] = a[13];
106
+ out[14] = a[14];
107
+ out[15] = a[15];
108
+ return out;
109
+ }
110
+ export function rotateX(out, a, rad) {
111
+ const s = Math.sin(rad);
112
+ const c = Math.cos(rad);
113
+ const a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
114
+ const a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
115
+ if (a !== out) {
116
+ out[0] = a[0];
117
+ out[1] = a[1];
118
+ out[2] = a[2];
119
+ out[3] = a[3];
120
+ out[12] = a[12];
121
+ out[13] = a[13];
122
+ out[14] = a[14];
123
+ out[15] = a[15];
124
+ }
125
+ out[4] = a10 * c + a20 * s;
126
+ out[5] = a11 * c + a21 * s;
127
+ out[6] = a12 * c + a22 * s;
128
+ out[7] = a13 * c + a23 * s;
129
+ out[8] = a20 * c - a10 * s;
130
+ out[9] = a21 * c - a11 * s;
131
+ out[10] = a22 * c - a12 * s;
132
+ out[11] = a23 * c - a13 * s;
133
+ return out;
134
+ }
135
+ export function rotateY(out, a, rad) {
136
+ const s = Math.sin(rad);
137
+ const c = Math.cos(rad);
138
+ const a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
139
+ const a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
140
+ if (a !== out) {
141
+ out[4] = a[4];
142
+ out[5] = a[5];
143
+ out[6] = a[6];
144
+ out[7] = a[7];
145
+ out[12] = a[12];
146
+ out[13] = a[13];
147
+ out[14] = a[14];
148
+ out[15] = a[15];
149
+ }
150
+ out[0] = a00 * c - a20 * s;
151
+ out[1] = a01 * c - a21 * s;
152
+ out[2] = a02 * c - a22 * s;
153
+ out[3] = a03 * c - a23 * s;
154
+ out[8] = a00 * s + a20 * c;
155
+ out[9] = a01 * s + a21 * c;
156
+ out[10] = a02 * s + a22 * c;
157
+ out[11] = a03 * s + a23 * c;
158
+ return out;
159
+ }
160
+ export function rotateZ(out, a, rad) {
161
+ const s = Math.sin(rad);
162
+ const c = Math.cos(rad);
163
+ const a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
164
+ const a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
165
+ if (a !== out) {
166
+ out[8] = a[8];
167
+ out[9] = a[9];
168
+ out[10] = a[10];
169
+ out[11] = a[11];
170
+ out[12] = a[12];
171
+ out[13] = a[13];
172
+ out[14] = a[14];
173
+ out[15] = a[15];
174
+ }
175
+ out[0] = a00 * c + a10 * s;
176
+ out[1] = a01 * c + a11 * s;
177
+ out[2] = a02 * c + a12 * s;
178
+ out[3] = a03 * c + a13 * s;
179
+ out[4] = a10 * c - a00 * s;
180
+ out[5] = a11 * c - a01 * s;
181
+ out[6] = a12 * c - a02 * s;
182
+ out[7] = a13 * c - a03 * s;
183
+ return out;
184
+ }
185
+ /** Orthographic projection (WebGPU NDC: depth 0..1) */
186
+ export function ortho(out, left, right, bottom, top, near, far) {
187
+ const lr = 1 / (left - right);
188
+ const bt = 1 / (bottom - top);
189
+ const nf = 1 / (near - far);
190
+ out[0] = -2 * lr;
191
+ out[1] = 0;
192
+ out[2] = 0;
193
+ out[3] = 0;
194
+ out[4] = 0;
195
+ out[5] = -2 * bt;
196
+ out[6] = 0;
197
+ out[7] = 0;
198
+ out[8] = 0;
199
+ out[9] = 0;
200
+ out[10] = nf;
201
+ out[11] = 0;
202
+ out[12] = (left + right) * lr;
203
+ out[13] = (top + bottom) * bt;
204
+ out[14] = near * nf;
205
+ out[15] = 1;
206
+ return out;
207
+ }
208
+ export function perspective(out, fovY, aspect, near, far) {
209
+ const f = 1.0 / Math.tan(fovY / 2);
210
+ out[0] = f / aspect;
211
+ out[1] = 0;
212
+ out[2] = 0;
213
+ out[3] = 0;
214
+ out[4] = 0;
215
+ out[5] = f;
216
+ out[6] = 0;
217
+ out[7] = 0;
218
+ out[8] = 0;
219
+ out[9] = 0;
220
+ out[11] = -1;
221
+ out[12] = 0;
222
+ out[13] = 0;
223
+ out[15] = 0;
224
+ if (far !== Infinity) {
225
+ const rangeInv = 1 / (near - far);
226
+ out[10] = far * rangeInv;
227
+ out[14] = far * near * rangeInv;
228
+ }
229
+ else {
230
+ out[10] = -1;
231
+ out[14] = -near;
232
+ }
233
+ return out;
234
+ }
235
+ export function lookAt(out, eye, center, up) {
236
+ const eyeX = eye[0], eyeY = eye[1], eyeZ = eye[2];
237
+ const centerX = center[0], centerY = center[1], centerZ = center[2];
238
+ const upX = up[0], upY = up[1], upZ = up[2];
239
+ let fX = centerX - eyeX;
240
+ let fY = centerY - eyeY;
241
+ let fZ = centerZ - eyeZ;
242
+ let len = Math.sqrt(fX * fX + fY * fY + fZ * fZ);
243
+ if (len < 1e-8)
244
+ return identity(out);
245
+ len = 1 / len;
246
+ fX *= len;
247
+ fY *= len;
248
+ fZ *= len;
249
+ let sX = fY * upZ - fZ * upY;
250
+ let sY = fZ * upX - fX * upZ;
251
+ let sZ = fX * upY - fY * upX;
252
+ len = Math.sqrt(sX * sX + sY * sY + sZ * sZ);
253
+ if (len < 1e-8)
254
+ return identity(out);
255
+ len = 1 / len;
256
+ sX *= len;
257
+ sY *= len;
258
+ sZ *= len;
259
+ const uX = sY * fZ - sZ * fY;
260
+ const uY = sZ * fX - sX * fZ;
261
+ const uZ = sX * fY - sY * fX;
262
+ out[0] = sX;
263
+ out[1] = uX;
264
+ out[2] = -fX;
265
+ out[3] = 0;
266
+ out[4] = sY;
267
+ out[5] = uY;
268
+ out[6] = -fY;
269
+ out[7] = 0;
270
+ out[8] = sZ;
271
+ out[9] = uZ;
272
+ out[10] = -fZ;
273
+ out[11] = 0;
274
+ out[12] = -(sX * eyeX + sY * eyeY + sZ * eyeZ);
275
+ out[13] = -(uX * eyeX + uY * eyeY + uZ * eyeZ);
276
+ out[14] = fX * eyeX + fY * eyeY + fZ * eyeZ;
277
+ out[15] = 1;
278
+ return out;
279
+ }
280
+ export function invert(out, a) {
281
+ const a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
282
+ const a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
283
+ const a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
284
+ const a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
285
+ const b00 = a00 * a11 - a01 * a10;
286
+ const b01 = a00 * a12 - a02 * a10;
287
+ const b02 = a00 * a13 - a03 * a10;
288
+ const b03 = a01 * a12 - a02 * a11;
289
+ const b04 = a01 * a13 - a03 * a11;
290
+ const b05 = a02 * a13 - a03 * a12;
291
+ const b06 = a20 * a31 - a21 * a30;
292
+ const b07 = a20 * a32 - a22 * a30;
293
+ const b08 = a20 * a33 - a23 * a30;
294
+ const b09 = a21 * a32 - a22 * a31;
295
+ const b10 = a21 * a33 - a23 * a31;
296
+ const b11 = a22 * a33 - a23 * a32;
297
+ let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
298
+ if (!det)
299
+ return null;
300
+ det = 1.0 / det;
301
+ out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;
302
+ out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;
303
+ out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;
304
+ out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;
305
+ out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;
306
+ out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;
307
+ out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;
308
+ out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;
309
+ out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;
310
+ out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;
311
+ out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;
312
+ out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;
313
+ out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;
314
+ out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;
315
+ out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;
316
+ out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;
317
+ return out;
318
+ }
319
+ export function transpose(out, a) {
320
+ if (out === a) {
321
+ const a01 = a[1], a02 = a[2], a03 = a[3];
322
+ const a12 = a[6], a13 = a[7];
323
+ const a23 = a[11];
324
+ out[1] = a[4];
325
+ out[2] = a[8];
326
+ out[3] = a[12];
327
+ out[4] = a01;
328
+ out[6] = a[9];
329
+ out[7] = a[13];
330
+ out[8] = a02;
331
+ out[9] = a12;
332
+ out[11] = a[14];
333
+ out[12] = a03;
334
+ out[13] = a13;
335
+ out[14] = a23;
336
+ }
337
+ else {
338
+ out[0] = a[0];
339
+ out[1] = a[4];
340
+ out[2] = a[8];
341
+ out[3] = a[12];
342
+ out[4] = a[1];
343
+ out[5] = a[5];
344
+ out[6] = a[9];
345
+ out[7] = a[13];
346
+ out[8] = a[2];
347
+ out[9] = a[6];
348
+ out[10] = a[10];
349
+ out[11] = a[14];
350
+ out[12] = a[3];
351
+ out[13] = a[7];
352
+ out[14] = a[11];
353
+ out[15] = a[15];
354
+ }
355
+ return out;
356
+ }
357
+ export function fromRotationTranslationScale(out, q, v, s) {
358
+ const x = q[0], y = q[1], z = q[2], w = q[3];
359
+ const x2 = x + x, y2 = y + y, z2 = z + z;
360
+ const xx = x * x2, xy = x * y2, xz = x * z2;
361
+ const yy = y * y2, yz = y * z2, zz = z * z2;
362
+ const wx = w * x2, wy = w * y2, wz = w * z2;
363
+ const sx = s[0], sy = s[1], sz = s[2];
364
+ out[0] = (1 - (yy + zz)) * sx;
365
+ out[1] = (xy + wz) * sx;
366
+ out[2] = (xz - wy) * sx;
367
+ out[3] = 0;
368
+ out[4] = (xy - wz) * sy;
369
+ out[5] = (1 - (xx + zz)) * sy;
370
+ out[6] = (yz + wx) * sy;
371
+ out[7] = 0;
372
+ out[8] = (xz + wy) * sz;
373
+ out[9] = (yz - wx) * sz;
374
+ out[10] = (1 - (xx + yy)) * sz;
375
+ out[11] = 0;
376
+ out[12] = v[0];
377
+ out[13] = v[1];
378
+ out[14] = v[2];
379
+ out[15] = 1;
380
+ return out;
381
+ }
382
+ //# sourceMappingURL=mat4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat4.js","sourceRoot":"","sources":["../src/mat4.ts"],"names":[],"mappings":"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G,GAAG,CAAC;IAChF,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAEhB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACnD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAS,EAAE,CAAO;IAC1C,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;QACnB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;QAChD,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;QAChD,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;QACjD,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;QACpE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;QACpE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;QAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;QACrE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;QAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAE,CAAC;IACvE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,GAAS,EACT,CAAO,EACP,CAAO,EACP,CAAO;IAEP,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACjD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC5C,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC5C,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IAEzC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACxB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACxB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACxB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACxB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACxB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC/B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Simple 2D value noise โ€” no dependencies.
3
+ * Uses a hash-based pseudo-random lattice with smooth interpolation.
4
+ */
5
+ /**
6
+ * 2D value noise at (x, z). Returns a value in approximately [-1, 1].
7
+ * @param x World X coordinate (pre-scaled by caller)
8
+ * @param z World Z coordinate (pre-scaled by caller)
9
+ */
10
+ export declare function valueNoise2D(x: number, z: number): number;
11
+ /**
12
+ * Fractal Brownian Motion (fBm) using value noise.
13
+ * Stacks multiple octaves for natural-looking terrain.
14
+ */
15
+ export declare function fbm(x: number, z: number, octaves?: number, lacunarity?: number, persistence?: number): number;
16
+ /**
17
+ * 3D Perlin noise. Returns a value in approximately [-1, 1].
18
+ */
19
+ export declare function perlinNoise3D(x: number, y: number, z: number): number;
20
+ /**
21
+ * Fractal Brownian Motion using 3D Perlin noise.
22
+ */
23
+ export declare function fbm3D(x: number, y: number, z: number, octaves?: number, lacunarity?: number, persistence?: number): number;
24
+ //# sourceMappingURL=noise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noise.d.ts","sourceRoot":"","sources":["../src/noise.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAezD;AAED;;;GAGG;AACH,wBAAgB,GAAG,CACjB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EACpB,OAAO,SAAI,EAAE,UAAU,SAAI,EAAE,WAAW,SAAM,GAC7C,MAAM,CAcR;AAgDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAmCrE;AAED;;GAEG;AACH,wBAAgB,KAAK,CACnB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAC/B,OAAO,SAAI,EAAE,UAAU,SAAI,EAAE,WAAW,SAAM,GAC7C,MAAM,CAcR"}