@daidr/minecraft-skin-renderer 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.
Files changed (150) hide show
  1. package/README.md +247 -0
  2. package/dist/animation/AnimationController.d.mts +15 -0
  3. package/dist/animation/AnimationController.d.mts.map +1 -0
  4. package/dist/animation/AnimationController.mjs +146 -0
  5. package/dist/animation/AnimationController.mjs.map +1 -0
  6. package/dist/animation/easing.mjs +9 -0
  7. package/dist/animation/easing.mjs.map +1 -0
  8. package/dist/animation/presets/fly.mjs +176 -0
  9. package/dist/animation/presets/fly.mjs.map +1 -0
  10. package/dist/animation/presets/idle.mjs +114 -0
  11. package/dist/animation/presets/idle.mjs.map +1 -0
  12. package/dist/animation/presets/index.mjs +7 -0
  13. package/dist/animation/presets/run.mjs +126 -0
  14. package/dist/animation/presets/run.mjs.map +1 -0
  15. package/dist/animation/presets/utils.mjs +166 -0
  16. package/dist/animation/presets/utils.mjs.map +1 -0
  17. package/dist/animation/presets/walk.mjs +76 -0
  18. package/dist/animation/presets/walk.mjs.map +1 -0
  19. package/dist/animation/types.d.mts +50 -0
  20. package/dist/animation/types.d.mts.map +1 -0
  21. package/dist/animation/types.mjs +22 -0
  22. package/dist/animation/types.mjs.map +1 -0
  23. package/dist/core/camera/Camera.d.mts +33 -0
  24. package/dist/core/camera/Camera.d.mts.map +1 -0
  25. package/dist/core/camera/Camera.mjs +77 -0
  26. package/dist/core/camera/Camera.mjs.map +1 -0
  27. package/dist/core/camera/OrbitControls.d.mts +50 -0
  28. package/dist/core/camera/OrbitControls.d.mts.map +1 -0
  29. package/dist/core/camera/OrbitControls.mjs +170 -0
  30. package/dist/core/camera/OrbitControls.mjs.map +1 -0
  31. package/dist/core/math/index.mjs +6 -0
  32. package/dist/core/math/mat4.d.mts +61 -0
  33. package/dist/core/math/mat4.d.mts.map +1 -0
  34. package/dist/core/math/mat4.mjs +513 -0
  35. package/dist/core/math/mat4.mjs.map +1 -0
  36. package/dist/core/math/quat.d.mts +61 -0
  37. package/dist/core/math/quat.d.mts.map +1 -0
  38. package/dist/core/math/quat.mjs +360 -0
  39. package/dist/core/math/quat.mjs.map +1 -0
  40. package/dist/core/math/utils.d.mts +43 -0
  41. package/dist/core/math/utils.d.mts.map +1 -0
  42. package/dist/core/math/utils.mjs +85 -0
  43. package/dist/core/math/utils.mjs.map +1 -0
  44. package/dist/core/math/vec3.d.mts +61 -0
  45. package/dist/core/math/vec3.d.mts.map +1 -0
  46. package/dist/core/math/vec3.mjs +198 -0
  47. package/dist/core/math/vec3.mjs.map +1 -0
  48. package/dist/core/plugins/registry.mjs +29 -0
  49. package/dist/core/plugins/registry.mjs.map +1 -0
  50. package/dist/core/plugins/types.d.mts +34 -0
  51. package/dist/core/plugins/types.d.mts.map +1 -0
  52. package/dist/core/renderer/registry.d.mts +46 -0
  53. package/dist/core/renderer/registry.d.mts.map +1 -0
  54. package/dist/core/renderer/registry.mjs +46 -0
  55. package/dist/core/renderer/registry.mjs.map +1 -0
  56. package/dist/core/renderer/shader-composer.mjs +30 -0
  57. package/dist/core/renderer/shader-composer.mjs.map +1 -0
  58. package/dist/core/renderer/types.d.mts +172 -0
  59. package/dist/core/renderer/types.d.mts.map +1 -0
  60. package/dist/core/renderer/types.mjs +90 -0
  61. package/dist/core/renderer/types.mjs.map +1 -0
  62. package/dist/core/renderer/utils.mjs +20 -0
  63. package/dist/core/renderer/utils.mjs.map +1 -0
  64. package/dist/core/renderer/webgl/WebGLBuffer.mjs +57 -0
  65. package/dist/core/renderer/webgl/WebGLBuffer.mjs.map +1 -0
  66. package/dist/core/renderer/webgl/WebGLPipeline.mjs +259 -0
  67. package/dist/core/renderer/webgl/WebGLPipeline.mjs.map +1 -0
  68. package/dist/core/renderer/webgl/WebGLRenderer.mjs +140 -0
  69. package/dist/core/renderer/webgl/WebGLRenderer.mjs.map +1 -0
  70. package/dist/core/renderer/webgl/WebGLTexture.mjs +87 -0
  71. package/dist/core/renderer/webgl/WebGLTexture.mjs.map +1 -0
  72. package/dist/core/renderer/webgl/plugin.d.mts +8 -0
  73. package/dist/core/renderer/webgl/plugin.d.mts.map +1 -0
  74. package/dist/core/renderer/webgl/plugin.mjs +24 -0
  75. package/dist/core/renderer/webgl/plugin.mjs.map +1 -0
  76. package/dist/core/renderer/webgl/shaders/index.mjs +81 -0
  77. package/dist/core/renderer/webgl/shaders/index.mjs.map +1 -0
  78. package/dist/core/renderer/webgpu/WebGPUBuffer.mjs +52 -0
  79. package/dist/core/renderer/webgpu/WebGPUBuffer.mjs.map +1 -0
  80. package/dist/core/renderer/webgpu/WebGPUPipeline.mjs +167 -0
  81. package/dist/core/renderer/webgpu/WebGPUPipeline.mjs.map +1 -0
  82. package/dist/core/renderer/webgpu/WebGPURenderer.mjs +299 -0
  83. package/dist/core/renderer/webgpu/WebGPURenderer.mjs.map +1 -0
  84. package/dist/core/renderer/webgpu/WebGPUTexture.mjs +126 -0
  85. package/dist/core/renderer/webgpu/WebGPUTexture.mjs.map +1 -0
  86. package/dist/core/renderer/webgpu/plugin.d.mts +8 -0
  87. package/dist/core/renderer/webgpu/plugin.d.mts.map +1 -0
  88. package/dist/core/renderer/webgpu/plugin.mjs +35 -0
  89. package/dist/core/renderer/webgpu/plugin.mjs.map +1 -0
  90. package/dist/core/renderer/webgpu/shaders/index.mjs +84 -0
  91. package/dist/core/renderer/webgpu/shaders/index.mjs.map +1 -0
  92. package/dist/index.d.mts +16 -0
  93. package/dist/index.mjs +19 -0
  94. package/dist/model/PlayerModel.d.mts +8 -0
  95. package/dist/model/PlayerModel.d.mts.map +1 -0
  96. package/dist/model/PlayerModel.mjs +253 -0
  97. package/dist/model/PlayerModel.mjs.map +1 -0
  98. package/dist/model/bone-utils.mjs +3 -0
  99. package/dist/model/constants.mjs +20 -0
  100. package/dist/model/constants.mjs.map +1 -0
  101. package/dist/model/geometry/BoxGeometry.mjs +316 -0
  102. package/dist/model/geometry/BoxGeometry.mjs.map +1 -0
  103. package/dist/model/geometry/index.mjs +3 -0
  104. package/dist/model/index.mjs +10 -0
  105. package/dist/model/types.d.mts +64 -0
  106. package/dist/model/types.d.mts.map +1 -0
  107. package/dist/model/types.mjs +67 -0
  108. package/dist/model/types.mjs.map +1 -0
  109. package/dist/model/uv/CapeUV.mjs +25 -0
  110. package/dist/model/uv/CapeUV.mjs.map +1 -0
  111. package/dist/model/uv/SkinUV.mjs +104 -0
  112. package/dist/model/uv/SkinUV.mjs.map +1 -0
  113. package/dist/model/uv/common.mjs +147 -0
  114. package/dist/model/uv/common.mjs.map +1 -0
  115. package/dist/panorama.d.mts +2 -0
  116. package/dist/panorama.mjs +3 -0
  117. package/dist/plugins/panorama/PanoramaRenderer.mjs +94 -0
  118. package/dist/plugins/panorama/PanoramaRenderer.mjs.map +1 -0
  119. package/dist/plugins/panorama/SkyboxGeometry.mjs +132 -0
  120. package/dist/plugins/panorama/SkyboxGeometry.mjs.map +1 -0
  121. package/dist/plugins/panorama/plugin.d.mts +8 -0
  122. package/dist/plugins/panorama/plugin.d.mts.map +1 -0
  123. package/dist/plugins/panorama/plugin.mjs +13 -0
  124. package/dist/plugins/panorama/plugin.mjs.map +1 -0
  125. package/dist/plugins/panorama/shaders/webgl.mjs +59 -0
  126. package/dist/plugins/panorama/shaders/webgl.mjs.map +1 -0
  127. package/dist/plugins/panorama/shaders/webgpu.mjs +70 -0
  128. package/dist/plugins/panorama/shaders/webgpu.mjs.map +1 -0
  129. package/dist/texture/TextureLoader.d.mts +22 -0
  130. package/dist/texture/TextureLoader.d.mts.map +1 -0
  131. package/dist/texture/TextureLoader.mjs +114 -0
  132. package/dist/texture/TextureLoader.mjs.map +1 -0
  133. package/dist/viewer/BoneMatrixComputer.mjs +82 -0
  134. package/dist/viewer/BoneMatrixComputer.mjs.map +1 -0
  135. package/dist/viewer/RenderLoop.mjs +45 -0
  136. package/dist/viewer/RenderLoop.mjs.map +1 -0
  137. package/dist/viewer/RenderState.mjs +44 -0
  138. package/dist/viewer/RenderState.mjs.map +1 -0
  139. package/dist/viewer/ResourceManager.mjs +278 -0
  140. package/dist/viewer/ResourceManager.mjs.map +1 -0
  141. package/dist/viewer/SkinViewer.d.mts +98 -0
  142. package/dist/viewer/SkinViewer.d.mts.map +1 -0
  143. package/dist/viewer/SkinViewer.mjs +379 -0
  144. package/dist/viewer/SkinViewer.mjs.map +1 -0
  145. package/dist/viewer/index.mjs +7 -0
  146. package/dist/webgl.d.mts +2 -0
  147. package/dist/webgl.mjs +3 -0
  148. package/dist/webgpu.d.mts +2 -0
  149. package/dist/webgpu.mjs +3 -0
  150. package/package.json +75 -0
@@ -0,0 +1,513 @@
1
+ //#region src/core/math/mat4.ts
2
+ /** Create an identity matrix */
3
+ function mat4Identity() {
4
+ return new Float32Array([
5
+ 1,
6
+ 0,
7
+ 0,
8
+ 0,
9
+ 0,
10
+ 1,
11
+ 0,
12
+ 0,
13
+ 0,
14
+ 0,
15
+ 1,
16
+ 0,
17
+ 0,
18
+ 0,
19
+ 0,
20
+ 1
21
+ ]);
22
+ }
23
+ /** Create a zero matrix */
24
+ function mat4Zero() {
25
+ return new Float32Array(16);
26
+ }
27
+ /** Clone a matrix */
28
+ function mat4Clone(m) {
29
+ return new Float32Array(m);
30
+ }
31
+ /** Copy matrix a to matrix out */
32
+ function mat4Copy(out, a) {
33
+ out.set(a);
34
+ return out;
35
+ }
36
+ /** Multiply two matrices: out = a * b */
37
+ function mat4Multiply(a, b) {
38
+ const out = new Float32Array(16);
39
+ const a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
40
+ const a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
41
+ const a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
42
+ const a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
43
+ let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
44
+ out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
45
+ out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
46
+ out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
47
+ out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
48
+ b0 = b[4];
49
+ b1 = b[5];
50
+ b2 = b[6];
51
+ b3 = b[7];
52
+ out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
53
+ out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
54
+ out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
55
+ out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
56
+ b0 = b[8];
57
+ b1 = b[9];
58
+ b2 = b[10];
59
+ b3 = b[11];
60
+ out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
61
+ out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
62
+ out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
63
+ out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
64
+ b0 = b[12];
65
+ b1 = b[13];
66
+ b2 = b[14];
67
+ b3 = b[15];
68
+ out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
69
+ out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
70
+ out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
71
+ out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
72
+ return out;
73
+ }
74
+ /** Create a translation matrix */
75
+ function mat4FromTranslation(v) {
76
+ return new Float32Array([
77
+ 1,
78
+ 0,
79
+ 0,
80
+ 0,
81
+ 0,
82
+ 1,
83
+ 0,
84
+ 0,
85
+ 0,
86
+ 0,
87
+ 1,
88
+ 0,
89
+ v[0],
90
+ v[1],
91
+ v[2],
92
+ 1
93
+ ]);
94
+ }
95
+ /** Create a scaling matrix */
96
+ function mat4FromScaling(v) {
97
+ return new Float32Array([
98
+ v[0],
99
+ 0,
100
+ 0,
101
+ 0,
102
+ 0,
103
+ v[1],
104
+ 0,
105
+ 0,
106
+ 0,
107
+ 0,
108
+ v[2],
109
+ 0,
110
+ 0,
111
+ 0,
112
+ 0,
113
+ 1
114
+ ]);
115
+ }
116
+ /** Create a rotation matrix around X axis */
117
+ function mat4FromRotationX(rad) {
118
+ const s = Math.sin(rad);
119
+ const c = Math.cos(rad);
120
+ return new Float32Array([
121
+ 1,
122
+ 0,
123
+ 0,
124
+ 0,
125
+ 0,
126
+ c,
127
+ s,
128
+ 0,
129
+ 0,
130
+ -s,
131
+ c,
132
+ 0,
133
+ 0,
134
+ 0,
135
+ 0,
136
+ 1
137
+ ]);
138
+ }
139
+ /** Create a rotation matrix around Y axis */
140
+ function mat4FromRotationY(rad) {
141
+ const s = Math.sin(rad);
142
+ const c = Math.cos(rad);
143
+ return new Float32Array([
144
+ c,
145
+ 0,
146
+ -s,
147
+ 0,
148
+ 0,
149
+ 1,
150
+ 0,
151
+ 0,
152
+ s,
153
+ 0,
154
+ c,
155
+ 0,
156
+ 0,
157
+ 0,
158
+ 0,
159
+ 1
160
+ ]);
161
+ }
162
+ /** Create a rotation matrix around Z axis */
163
+ function mat4FromRotationZ(rad) {
164
+ const s = Math.sin(rad);
165
+ const c = Math.cos(rad);
166
+ return new Float32Array([
167
+ c,
168
+ s,
169
+ 0,
170
+ 0,
171
+ -s,
172
+ c,
173
+ 0,
174
+ 0,
175
+ 0,
176
+ 0,
177
+ 1,
178
+ 0,
179
+ 0,
180
+ 0,
181
+ 0,
182
+ 1
183
+ ]);
184
+ }
185
+ /** Translate a matrix by vector */
186
+ function mat4Translate(m, v) {
187
+ const out = mat4Clone(m);
188
+ const x = v[0], y = v[1], z = v[2];
189
+ out[12] = m[0] * x + m[4] * y + m[8] * z + m[12];
190
+ out[13] = m[1] * x + m[5] * y + m[9] * z + m[13];
191
+ out[14] = m[2] * x + m[6] * y + m[10] * z + m[14];
192
+ out[15] = m[3] * x + m[7] * y + m[11] * z + m[15];
193
+ return out;
194
+ }
195
+ /** Scale a matrix by vector */
196
+ function mat4Scale(m, v) {
197
+ const out = new Float32Array(16);
198
+ const x = v[0], y = v[1], z = v[2];
199
+ out[0] = m[0] * x;
200
+ out[1] = m[1] * x;
201
+ out[2] = m[2] * x;
202
+ out[3] = m[3] * x;
203
+ out[4] = m[4] * y;
204
+ out[5] = m[5] * y;
205
+ out[6] = m[6] * y;
206
+ out[7] = m[7] * y;
207
+ out[8] = m[8] * z;
208
+ out[9] = m[9] * z;
209
+ out[10] = m[10] * z;
210
+ out[11] = m[11] * z;
211
+ out[12] = m[12];
212
+ out[13] = m[13];
213
+ out[14] = m[14];
214
+ out[15] = m[15];
215
+ return out;
216
+ }
217
+ /** Rotate a matrix around X axis */
218
+ function mat4RotateX(m, rad) {
219
+ return mat4Multiply(m, mat4FromRotationX(rad));
220
+ }
221
+ /** Rotate a matrix around Y axis */
222
+ function mat4RotateY(m, rad) {
223
+ return mat4Multiply(m, mat4FromRotationY(rad));
224
+ }
225
+ /** Rotate a matrix around Z axis */
226
+ function mat4RotateZ(m, rad) {
227
+ return mat4Multiply(m, mat4FromRotationZ(rad));
228
+ }
229
+ /** Create a perspective projection matrix */
230
+ function mat4Perspective(fovY, aspect, near, far) {
231
+ const f = 1 / Math.tan(fovY / 2);
232
+ const nf = 1 / (near - far);
233
+ const out = new Float32Array(16);
234
+ out[0] = f / aspect;
235
+ out[5] = f;
236
+ out[10] = (far + near) * nf;
237
+ out[11] = -1;
238
+ out[14] = 2 * far * near * nf;
239
+ return out;
240
+ }
241
+ /** Create an orthographic projection matrix */
242
+ function mat4Ortho(left, right, bottom, top, near, far) {
243
+ const lr = 1 / (left - right);
244
+ const bt = 1 / (bottom - top);
245
+ const nf = 1 / (near - far);
246
+ return new Float32Array([
247
+ -2 * lr,
248
+ 0,
249
+ 0,
250
+ 0,
251
+ 0,
252
+ -2 * bt,
253
+ 0,
254
+ 0,
255
+ 0,
256
+ 0,
257
+ 2 * nf,
258
+ 0,
259
+ (left + right) * lr,
260
+ (top + bottom) * bt,
261
+ (far + near) * nf,
262
+ 1
263
+ ]);
264
+ }
265
+ /** Create a look-at view matrix */
266
+ function mat4LookAt(eye, center, up) {
267
+ const x0 = eye[0], x1 = eye[1], x2 = eye[2];
268
+ const u0 = up[0], u1 = up[1], u2 = up[2];
269
+ const c0 = center[0], c1 = center[1], c2 = center[2];
270
+ let z0 = x0 - c0;
271
+ let z1 = x1 - c1;
272
+ let z2 = x2 - c2;
273
+ let len = z0 * z0 + z1 * z1 + z2 * z2;
274
+ if (len > 0) {
275
+ len = 1 / Math.sqrt(len);
276
+ z0 *= len;
277
+ z1 *= len;
278
+ z2 *= len;
279
+ }
280
+ let y0 = u1 * z2 - u2 * z1;
281
+ let y1 = u2 * z0 - u0 * z2;
282
+ let y2 = u0 * z1 - u1 * z0;
283
+ len = y0 * y0 + y1 * y1 + y2 * y2;
284
+ if (len > 0) {
285
+ len = 1 / Math.sqrt(len);
286
+ y0 *= len;
287
+ y1 *= len;
288
+ y2 *= len;
289
+ }
290
+ const w0 = z1 * y2 - z2 * y1;
291
+ const w1 = z2 * y0 - z0 * y2;
292
+ const w2 = z0 * y1 - z1 * y0;
293
+ return new Float32Array([
294
+ y0,
295
+ w0,
296
+ z0,
297
+ 0,
298
+ y1,
299
+ w1,
300
+ z1,
301
+ 0,
302
+ y2,
303
+ w2,
304
+ z2,
305
+ 0,
306
+ -(y0 * x0 + y1 * x1 + y2 * x2),
307
+ -(w0 * x0 + w1 * x1 + w2 * x2),
308
+ -(z0 * x0 + z1 * x1 + z2 * x2),
309
+ 1
310
+ ]);
311
+ }
312
+ /** Invert a matrix */
313
+ function mat4Invert(m) {
314
+ const a00 = m[0], a01 = m[1], a02 = m[2], a03 = m[3];
315
+ const a10 = m[4], a11 = m[5], a12 = m[6], a13 = m[7];
316
+ const a20 = m[8], a21 = m[9], a22 = m[10], a23 = m[11];
317
+ const a30 = m[12], a31 = m[13], a32 = m[14], a33 = m[15];
318
+ const b00 = a00 * a11 - a01 * a10;
319
+ const b01 = a00 * a12 - a02 * a10;
320
+ const b02 = a00 * a13 - a03 * a10;
321
+ const b03 = a01 * a12 - a02 * a11;
322
+ const b04 = a01 * a13 - a03 * a11;
323
+ const b05 = a02 * a13 - a03 * a12;
324
+ const b06 = a20 * a31 - a21 * a30;
325
+ const b07 = a20 * a32 - a22 * a30;
326
+ const b08 = a20 * a33 - a23 * a30;
327
+ const b09 = a21 * a32 - a22 * a31;
328
+ const b10 = a21 * a33 - a23 * a31;
329
+ const b11 = a22 * a33 - a23 * a32;
330
+ let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
331
+ if (!det) return null;
332
+ det = 1 / det;
333
+ return new Float32Array([
334
+ (a11 * b11 - a12 * b10 + a13 * b09) * det,
335
+ (a02 * b10 - a01 * b11 - a03 * b09) * det,
336
+ (a31 * b05 - a32 * b04 + a33 * b03) * det,
337
+ (a22 * b04 - a21 * b05 - a23 * b03) * det,
338
+ (a12 * b08 - a10 * b11 - a13 * b07) * det,
339
+ (a00 * b11 - a02 * b08 + a03 * b07) * det,
340
+ (a32 * b02 - a30 * b05 - a33 * b01) * det,
341
+ (a20 * b05 - a22 * b02 + a23 * b01) * det,
342
+ (a10 * b10 - a11 * b08 + a13 * b06) * det,
343
+ (a01 * b08 - a00 * b10 - a03 * b06) * det,
344
+ (a30 * b04 - a31 * b02 + a33 * b00) * det,
345
+ (a21 * b02 - a20 * b04 - a23 * b00) * det,
346
+ (a11 * b07 - a10 * b09 - a12 * b06) * det,
347
+ (a00 * b09 - a01 * b07 + a02 * b06) * det,
348
+ (a31 * b01 - a30 * b03 - a32 * b00) * det,
349
+ (a20 * b03 - a21 * b01 + a22 * b00) * det
350
+ ]);
351
+ }
352
+ /** Transpose a matrix */
353
+ function mat4Transpose(m) {
354
+ return new Float32Array([
355
+ m[0],
356
+ m[4],
357
+ m[8],
358
+ m[12],
359
+ m[1],
360
+ m[5],
361
+ m[9],
362
+ m[13],
363
+ m[2],
364
+ m[6],
365
+ m[10],
366
+ m[14],
367
+ m[3],
368
+ m[7],
369
+ m[11],
370
+ m[15]
371
+ ]);
372
+ }
373
+ /** Get the translation component of a matrix */
374
+ function mat4GetTranslation(m) {
375
+ return [
376
+ m[12],
377
+ m[13],
378
+ m[14]
379
+ ];
380
+ }
381
+ /** Get the scaling component of a matrix */
382
+ function mat4GetScaling(m) {
383
+ return [
384
+ Math.sqrt(m[0] * m[0] + m[1] * m[1] + m[2] * m[2]),
385
+ Math.sqrt(m[4] * m[4] + m[5] * m[5] + m[6] * m[6]),
386
+ Math.sqrt(m[8] * m[8] + m[9] * m[9] + m[10] * m[10])
387
+ ];
388
+ }
389
+ /** Set matrix to identity (mutable) */
390
+ function mat4IdentityMut(out) {
391
+ out[0] = 1;
392
+ out[1] = 0;
393
+ out[2] = 0;
394
+ out[3] = 0;
395
+ out[4] = 0;
396
+ out[5] = 1;
397
+ out[6] = 0;
398
+ out[7] = 0;
399
+ out[8] = 0;
400
+ out[9] = 0;
401
+ out[10] = 1;
402
+ out[11] = 0;
403
+ out[12] = 0;
404
+ out[13] = 0;
405
+ out[14] = 0;
406
+ out[15] = 1;
407
+ return out;
408
+ }
409
+ /** Multiply two matrices (mutable): out = a * b */
410
+ function mat4MultiplyMut(out, a, b) {
411
+ const a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
412
+ const a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
413
+ const a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
414
+ const a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
415
+ let b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
416
+ out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
417
+ out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
418
+ out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
419
+ out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
420
+ b0 = b[4];
421
+ b1 = b[5];
422
+ b2 = b[6];
423
+ b3 = b[7];
424
+ out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
425
+ out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
426
+ out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
427
+ out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
428
+ b0 = b[8];
429
+ b1 = b[9];
430
+ b2 = b[10];
431
+ b3 = b[11];
432
+ out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
433
+ out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
434
+ out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
435
+ out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
436
+ b0 = b[12];
437
+ b1 = b[13];
438
+ b2 = b[14];
439
+ b3 = b[15];
440
+ out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
441
+ out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
442
+ out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
443
+ out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
444
+ return out;
445
+ }
446
+ /** Translate a matrix by vector (mutable) */
447
+ function mat4TranslateMut(out, m, v) {
448
+ const x = v[0], y = v[1], z = v[2];
449
+ if (out !== m) {
450
+ out[0] = m[0];
451
+ out[1] = m[1];
452
+ out[2] = m[2];
453
+ out[3] = m[3];
454
+ out[4] = m[4];
455
+ out[5] = m[5];
456
+ out[6] = m[6];
457
+ out[7] = m[7];
458
+ out[8] = m[8];
459
+ out[9] = m[9];
460
+ out[10] = m[10];
461
+ out[11] = m[11];
462
+ }
463
+ out[12] = m[0] * x + m[4] * y + m[8] * z + m[12];
464
+ out[13] = m[1] * x + m[5] * y + m[9] * z + m[13];
465
+ out[14] = m[2] * x + m[6] * y + m[10] * z + m[14];
466
+ out[15] = m[3] * x + m[7] * y + m[11] * z + m[15];
467
+ return out;
468
+ }
469
+ /** Scale a matrix by vector (mutable) */
470
+ function mat4ScaleMut(out, m, v) {
471
+ const x = v[0], y = v[1], z = v[2];
472
+ out[0] = m[0] * x;
473
+ out[1] = m[1] * x;
474
+ out[2] = m[2] * x;
475
+ out[3] = m[3] * x;
476
+ out[4] = m[4] * y;
477
+ out[5] = m[5] * y;
478
+ out[6] = m[6] * y;
479
+ out[7] = m[7] * y;
480
+ out[8] = m[8] * z;
481
+ out[9] = m[9] * z;
482
+ out[10] = m[10] * z;
483
+ out[11] = m[11] * z;
484
+ out[12] = m[12];
485
+ out[13] = m[13];
486
+ out[14] = m[14];
487
+ out[15] = m[15];
488
+ return out;
489
+ }
490
+ /** Create a translation matrix (mutable) */
491
+ function mat4FromTranslationMut(out, v) {
492
+ out[0] = 1;
493
+ out[1] = 0;
494
+ out[2] = 0;
495
+ out[3] = 0;
496
+ out[4] = 0;
497
+ out[5] = 1;
498
+ out[6] = 0;
499
+ out[7] = 0;
500
+ out[8] = 0;
501
+ out[9] = 0;
502
+ out[10] = 1;
503
+ out[11] = 0;
504
+ out[12] = v[0];
505
+ out[13] = v[1];
506
+ out[14] = v[2];
507
+ out[15] = 1;
508
+ return out;
509
+ }
510
+
511
+ //#endregion
512
+ export { mat4Clone, mat4Copy, mat4FromRotationX, mat4FromRotationY, mat4FromRotationZ, mat4FromScaling, mat4FromTranslation, mat4FromTranslationMut, mat4GetScaling, mat4GetTranslation, mat4Identity, mat4IdentityMut, mat4Invert, mat4LookAt, mat4Multiply, mat4MultiplyMut, mat4Ortho, mat4Perspective, mat4RotateX, mat4RotateY, mat4RotateZ, mat4Scale, mat4ScaleMut, mat4Translate, mat4TranslateMut, mat4Transpose, mat4Zero };
513
+ //# sourceMappingURL=mat4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mat4.mjs","names":[],"sources":["../../../src/core/math/mat4.ts"],"sourcesContent":["/**\n * 4x4 Matrix operations (column-major order, compatible with WebGL/WebGPU)\n * Stored as Float32Array for direct GPU upload\n */\n\nimport type { Vec3 } from \"./vec3\";\n\nexport type Mat4 = Float32Array;\n\n/** Create an identity matrix */\nexport function mat4Identity(): Mat4 {\n // prettier-ignore\n return new Float32Array([\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1,\n ])\n}\n\n/** Create a zero matrix */\nexport function mat4Zero(): Mat4 {\n return new Float32Array(16);\n}\n\n/** Clone a matrix */\nexport function mat4Clone(m: Mat4): Mat4 {\n return new Float32Array(m);\n}\n\n/** Copy matrix a to matrix out */\nexport function mat4Copy(out: Mat4, a: Mat4): Mat4 {\n out.set(a);\n return out;\n}\n\n/** Multiply two matrices: out = a * b */\nexport function mat4Multiply(a: Mat4, b: Mat4): Mat4 {\n const out = new Float32Array(16);\n\n const a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n const a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n const a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n const a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n\n let b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n return out;\n}\n\n/** Create a translation matrix */\nexport function mat4FromTranslation(v: Vec3): Mat4 {\n // prettier-ignore\n return new Float32Array([\n 1, 0, 0, 0,\n 0, 1, 0, 0,\n 0, 0, 1, 0,\n v[0], v[1], v[2], 1,\n ])\n}\n\n/** Create a scaling matrix */\nexport function mat4FromScaling(v: Vec3): Mat4 {\n // prettier-ignore\n return new Float32Array([\n v[0], 0, 0, 0,\n 0, v[1], 0, 0,\n 0, 0, v[2], 0,\n 0, 0, 0, 1,\n ])\n}\n\n/** Create a rotation matrix around X axis */\nexport function mat4FromRotationX(rad: number): Mat4 {\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n // prettier-ignore\n return new Float32Array([\n 1, 0, 0, 0,\n 0, c, s, 0,\n 0, -s, c, 0,\n 0, 0, 0, 1,\n ])\n}\n\n/** Create a rotation matrix around Y axis */\nexport function mat4FromRotationY(rad: number): Mat4 {\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n // prettier-ignore\n return new Float32Array([\n c, 0, -s, 0,\n 0, 1, 0, 0,\n s, 0, c, 0,\n 0, 0, 0, 1,\n ])\n}\n\n/** Create a rotation matrix around Z axis */\nexport function mat4FromRotationZ(rad: number): Mat4 {\n const s = Math.sin(rad);\n const c = Math.cos(rad);\n // prettier-ignore\n return new Float32Array([\n c, s, 0, 0,\n -s, c, 0, 0,\n 0, 0, 1, 0,\n 0, 0, 0, 1,\n ])\n}\n\n/** Translate a matrix by vector */\nexport function mat4Translate(m: Mat4, v: Vec3): Mat4 {\n const out = mat4Clone(m);\n const x = v[0],\n y = v[1],\n z = v[2];\n out[12] = m[0] * x + m[4] * y + m[8] * z + m[12];\n out[13] = m[1] * x + m[5] * y + m[9] * z + m[13];\n out[14] = m[2] * x + m[6] * y + m[10] * z + m[14];\n out[15] = m[3] * x + m[7] * y + m[11] * z + m[15];\n return out;\n}\n\n/** Scale a matrix by vector */\nexport function mat4Scale(m: Mat4, v: Vec3): Mat4 {\n const out = new Float32Array(16);\n const x = v[0],\n y = v[1],\n z = v[2];\n out[0] = m[0] * x;\n out[1] = m[1] * x;\n out[2] = m[2] * x;\n out[3] = m[3] * x;\n out[4] = m[4] * y;\n out[5] = m[5] * y;\n out[6] = m[6] * y;\n out[7] = m[7] * y;\n out[8] = m[8] * z;\n out[9] = m[9] * z;\n out[10] = m[10] * z;\n out[11] = m[11] * z;\n out[12] = m[12];\n out[13] = m[13];\n out[14] = m[14];\n out[15] = m[15];\n return out;\n}\n\n/** Rotate a matrix around X axis */\nexport function mat4RotateX(m: Mat4, rad: number): Mat4 {\n return mat4Multiply(m, mat4FromRotationX(rad));\n}\n\n/** Rotate a matrix around Y axis */\nexport function mat4RotateY(m: Mat4, rad: number): Mat4 {\n return mat4Multiply(m, mat4FromRotationY(rad));\n}\n\n/** Rotate a matrix around Z axis */\nexport function mat4RotateZ(m: Mat4, rad: number): Mat4 {\n return mat4Multiply(m, mat4FromRotationZ(rad));\n}\n\n/** Create a perspective projection matrix */\nexport function mat4Perspective(fovY: number, aspect: number, near: number, far: number): Mat4 {\n const f = 1.0 / Math.tan(fovY / 2);\n const nf = 1 / (near - far);\n\n const out = new Float32Array(16);\n out[0] = f / aspect;\n out[5] = f;\n out[10] = (far + near) * nf;\n out[11] = -1;\n out[14] = 2 * far * near * nf;\n return out;\n}\n\n/** Create an orthographic projection matrix */\nexport function mat4Ortho(\n left: number,\n right: number,\n bottom: number,\n top: number,\n near: number,\n far: number,\n): Mat4 {\n const lr = 1 / (left - right);\n const bt = 1 / (bottom - top);\n const nf = 1 / (near - far);\n\n // prettier-ignore\n return new Float32Array([\n -2 * lr, 0, 0, 0,\n 0, -2 * bt, 0, 0,\n 0, 0, 2 * nf, 0,\n (left + right) * lr, (top + bottom) * bt, (far + near) * nf, 1,\n ])\n}\n\n/** Create a look-at view matrix */\nexport function mat4LookAt(eye: Vec3, center: Vec3, up: Vec3): Mat4 {\n const x0 = eye[0],\n x1 = eye[1],\n x2 = eye[2];\n const u0 = up[0],\n u1 = up[1],\n u2 = up[2];\n const c0 = center[0],\n c1 = center[1],\n c2 = center[2];\n\n let z0 = x0 - c0;\n let z1 = x1 - c1;\n let z2 = x2 - c2;\n let len = z0 * z0 + z1 * z1 + z2 * z2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n }\n\n let y0 = u1 * z2 - u2 * z1;\n let y1 = u2 * z0 - u0 * z2;\n let y2 = u0 * z1 - u1 * z0;\n len = y0 * y0 + y1 * y1 + y2 * y2;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n const w0 = z1 * y2 - z2 * y1;\n const w1 = z2 * y0 - z0 * y2;\n const w2 = z0 * y1 - z1 * y0;\n\n // prettier-ignore\n return new Float32Array([\n y0, w0, z0, 0,\n y1, w1, z1, 0,\n y2, w2, z2, 0,\n -(y0 * x0 + y1 * x1 + y2 * x2),\n -(w0 * x0 + w1 * x1 + w2 * x2),\n -(z0 * x0 + z1 * x1 + z2 * x2),\n 1,\n ])\n}\n\n/** Invert a matrix */\nexport function mat4Invert(m: Mat4): Mat4 | null {\n const a00 = m[0],\n a01 = m[1],\n a02 = m[2],\n a03 = m[3];\n const a10 = m[4],\n a11 = m[5],\n a12 = m[6],\n a13 = m[7];\n const a20 = m[8],\n a21 = m[9],\n a22 = m[10],\n a23 = m[11];\n const a30 = m[12],\n a31 = m[13],\n a32 = m[14],\n a33 = m[15];\n\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n\n // prettier-ignore\n return new Float32Array([\n (a11 * b11 - a12 * b10 + a13 * b09) * det,\n (a02 * b10 - a01 * b11 - a03 * b09) * det,\n (a31 * b05 - a32 * b04 + a33 * b03) * det,\n (a22 * b04 - a21 * b05 - a23 * b03) * det,\n (a12 * b08 - a10 * b11 - a13 * b07) * det,\n (a00 * b11 - a02 * b08 + a03 * b07) * det,\n (a32 * b02 - a30 * b05 - a33 * b01) * det,\n (a20 * b05 - a22 * b02 + a23 * b01) * det,\n (a10 * b10 - a11 * b08 + a13 * b06) * det,\n (a01 * b08 - a00 * b10 - a03 * b06) * det,\n (a30 * b04 - a31 * b02 + a33 * b00) * det,\n (a21 * b02 - a20 * b04 - a23 * b00) * det,\n (a11 * b07 - a10 * b09 - a12 * b06) * det,\n (a00 * b09 - a01 * b07 + a02 * b06) * det,\n (a31 * b01 - a30 * b03 - a32 * b00) * det,\n (a20 * b03 - a21 * b01 + a22 * b00) * det,\n ])\n}\n\n/** Transpose a matrix */\nexport function mat4Transpose(m: Mat4): Mat4 {\n // prettier-ignore\n return new Float32Array([\n m[0], m[4], m[8], m[12],\n m[1], m[5], m[9], m[13],\n m[2], m[6], m[10], m[14],\n m[3], m[7], m[11], m[15],\n ])\n}\n\n/** Get the translation component of a matrix */\nexport function mat4GetTranslation(m: Mat4): Vec3 {\n return [m[12], m[13], m[14]];\n}\n\n/** Get the scaling component of a matrix */\nexport function mat4GetScaling(m: Mat4): Vec3 {\n return [\n Math.sqrt(m[0] * m[0] + m[1] * m[1] + m[2] * m[2]),\n Math.sqrt(m[4] * m[4] + m[5] * m[5] + m[6] * m[6]),\n Math.sqrt(m[8] * m[8] + m[9] * m[9] + m[10] * m[10]),\n ];\n}\n\n// ============================================================================\n// Mutable versions (for performance-critical paths)\n// These functions modify the output parameter instead of creating new objects\n// ============================================================================\n\n/** Set matrix to identity (mutable) */\nexport function mat4IdentityMut(out: Mat4): Mat4 {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = 0;\n out[13] = 0;\n out[14] = 0;\n out[15] = 1;\n return out;\n}\n\n/** Multiply two matrices (mutable): out = a * b */\nexport function mat4MultiplyMut(out: Mat4, a: Mat4, b: Mat4): Mat4 {\n const a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n const a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n const a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n const a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n\n let b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3];\n out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[4];\n b1 = b[5];\n b2 = b[6];\n b3 = b[7];\n out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[8];\n b1 = b[9];\n b2 = b[10];\n b3 = b[11];\n out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n b0 = b[12];\n b1 = b[13];\n b2 = b[14];\n b3 = b[15];\n out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\n return out;\n}\n\n/** Translate a matrix by vector (mutable) */\nexport function mat4TranslateMut(out: Mat4, m: Mat4, v: Vec3): Mat4 {\n const x = v[0],\n y = v[1],\n z = v[2];\n\n if (out !== m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n out[6] = m[6];\n out[7] = m[7];\n out[8] = m[8];\n out[9] = m[9];\n out[10] = m[10];\n out[11] = m[11];\n }\n\n out[12] = m[0] * x + m[4] * y + m[8] * z + m[12];\n out[13] = m[1] * x + m[5] * y + m[9] * z + m[13];\n out[14] = m[2] * x + m[6] * y + m[10] * z + m[14];\n out[15] = m[3] * x + m[7] * y + m[11] * z + m[15];\n\n return out;\n}\n\n/** Scale a matrix by vector (mutable) */\nexport function mat4ScaleMut(out: Mat4, m: Mat4, v: Vec3): Mat4 {\n const x = v[0],\n y = v[1],\n z = v[2];\n\n out[0] = m[0] * x;\n out[1] = m[1] * x;\n out[2] = m[2] * x;\n out[3] = m[3] * x;\n out[4] = m[4] * y;\n out[5] = m[5] * y;\n out[6] = m[6] * y;\n out[7] = m[7] * y;\n out[8] = m[8] * z;\n out[9] = m[9] * z;\n out[10] = m[10] * z;\n out[11] = m[11] * z;\n out[12] = m[12];\n out[13] = m[13];\n out[14] = m[14];\n out[15] = m[15];\n\n return out;\n}\n\n/** Create a translation matrix (mutable) */\nexport function mat4FromTranslationMut(out: Mat4, v: Vec3): Mat4 {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 0;\n out[5] = 1;\n out[6] = 0;\n out[7] = 0;\n out[8] = 0;\n out[9] = 0;\n out[10] = 1;\n out[11] = 0;\n out[12] = v[0];\n out[13] = v[1];\n out[14] = v[2];\n out[15] = 1;\n return out;\n}\n"],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { Vec3 } from "./vec3.mjs";
2
+ import { Mat4 } from "./mat4.mjs";
3
+
4
+ //#region src/core/math/quat.d.ts
5
+ type Quat = [number, number, number, number];
6
+ /** Create an identity quaternion */
7
+ declare function quatIdentity(): Quat;
8
+ /** Create a quaternion from components */
9
+ declare function quat(x: number, y: number, z: number, w: number): Quat;
10
+ /** Clone a quaternion */
11
+ declare function quatClone(q: Quat): Quat;
12
+ /** Create quaternion from axis and angle */
13
+ declare function quatFromAxisAngle(axis: Vec3, rad: number): Quat;
14
+ /** Create quaternion from Euler angles (XYZ order) */
15
+ declare function quatFromEuler(x: number, y: number, z: number): Quat;
16
+ /** Multiply two quaternions */
17
+ declare function quatMultiply(a: Quat, b: Quat): Quat;
18
+ /** Rotate quaternion around X axis */
19
+ declare function quatRotateX(q: Quat, rad: number): Quat;
20
+ /** Rotate quaternion around Y axis */
21
+ declare function quatRotateY(q: Quat, rad: number): Quat;
22
+ /** Rotate quaternion around Z axis */
23
+ declare function quatRotateZ(q: Quat, rad: number): Quat;
24
+ /** Normalize a quaternion */
25
+ declare function quatNormalize(q: Quat): Quat;
26
+ /** Invert (conjugate) a quaternion */
27
+ declare function quatInvert(q: Quat): Quat;
28
+ /** Spherical linear interpolation between two quaternions */
29
+ declare function quatSlerp(a: Quat, b: Quat, t: number): Quat;
30
+ /** Convert quaternion to 4x4 rotation matrix */
31
+ declare function quatToMat4(q: Quat): Mat4;
32
+ /** Rotate a vector by a quaternion */
33
+ declare function quatRotateVec3(q: Quat, v: Vec3): Vec3;
34
+ /** Get axis and angle from quaternion */
35
+ declare function quatGetAxisAngle(q: Quat): {
36
+ axis: Vec3;
37
+ angle: number;
38
+ };
39
+ /** Check if two quaternions are equal (within epsilon) */
40
+ declare function quatEquals(a: Quat, b: Quat, epsilon?: number): boolean;
41
+ /** Dot product of two quaternions */
42
+ declare function quatDot(a: Quat, b: Quat): number;
43
+ /** Length (magnitude) of a quaternion */
44
+ declare function quatLength(q: Quat): number;
45
+ /** Convert quaternion to Float32Array */
46
+ declare function quatToFloat32Array(q: Quat): Float32Array;
47
+ /** Copy quaternion (mutable) */
48
+ declare function quatCopyMut(out: Quat, q: Quat): Quat;
49
+ /** Set quaternion to identity (mutable) */
50
+ declare function quatIdentityMut(out: Quat): Quat;
51
+ /** Multiply two quaternions (mutable) */
52
+ declare function quatMultiplyMut(out: Quat, a: Quat, b: Quat): Quat;
53
+ /** Normalize a quaternion (mutable) */
54
+ declare function quatNormalizeMut(out: Quat, q: Quat): Quat;
55
+ /** Spherical linear interpolation between two quaternions (mutable) */
56
+ declare function quatSlerpMut(out: Quat, a: Quat, b: Quat, t: number): Quat;
57
+ /** Convert quaternion to 4x4 rotation matrix (mutable) */
58
+ declare function quatToMat4Mut(out: Mat4, q: Quat): Mat4;
59
+ //#endregion
60
+ export { Quat, quat, quatClone, quatCopyMut, quatDot, quatEquals, quatFromAxisAngle, quatFromEuler, quatGetAxisAngle, quatIdentity, quatIdentityMut, quatInvert, quatLength, quatMultiply, quatMultiplyMut, quatNormalize, quatNormalizeMut, quatRotateVec3, quatRotateX, quatRotateY, quatRotateZ, quatSlerp, quatSlerpMut, quatToFloat32Array, quatToMat4, quatToMat4Mut };
61
+ //# sourceMappingURL=quat.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quat.d.mts","names":[],"sources":["../../../src/core/math/quat.ts"],"mappings":";;;;KAQY,IAAA;;iBAGI,YAAA,CAAA,GAAgB,IAAA;AAAhC;AAAA,iBAKgB,IAAA,CAAK,CAAA,UAAW,CAAA,UAAW,CAAA,UAAW,CAAA,WAAY,IAAA;;iBAKlD,SAAA,CAAU,CAAA,EAAG,IAAA,GAAO,IAAA;;iBAKpB,iBAAA,CAAkB,IAAA,EAAM,IAAA,EAAM,GAAA,WAAc,IAAA;;iBAO5C,aAAA,CAAc,CAAA,UAAW,CAAA,UAAW,CAAA,WAAY,IAAA;;iBAqBhD,YAAA,CAAa,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,IAAA,GAAO,IAAA;;iBAkBhC,WAAA,CAAY,CAAA,EAAG,IAAA,EAAM,GAAA,WAAc,IAAA;;iBAcnC,WAAA,CAAY,CAAA,EAAG,IAAA,EAAM,GAAA,WAAc,IAAA;;iBAcnC,WAAA,CAAY,CAAA,EAAG,IAAA,EAAM,GAAA,WAAc,IAAA;AA/EnD;AAAA,iBA6FgB,aAAA,CAAc,CAAA,EAAG,IAAA,GAAO,IAAA;;iBAOxB,UAAA,CAAW,CAAA,EAAG,IAAA,GAAO,IAAA;;iBAQrB,SAAA,CAAU,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,CAAA,WAAY,IAAA;;iBA6CxC,UAAA,CAAW,CAAA,EAAG,IAAA,GAAO,IAAA;;iBA8BrB,cAAA,CAAe,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,IAAA,GAAO,IAAA;;iBAwBlC,gBAAA,CAAiB,CAAA,EAAG,IAAA;EAAS,IAAA,EAAM,IAAA;EAAM,KAAA;AAAA;;iBAmBzC,UAAA,CAAW,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,OAAA;;iBAU7B,OAAA,CAAQ,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,IAAA;AAhOpC;AAAA,iBAqOgB,UAAA,CAAW,CAAA,EAAG,IAAA;;iBAKd,kBAAA,CAAmB,CAAA,EAAG,IAAA,GAAO,YAAA;;iBAU7B,WAAA,CAAY,GAAA,EAAK,IAAA,EAAM,CAAA,EAAG,IAAA,GAAO,IAAA;;iBASjC,eAAA,CAAgB,GAAA,EAAK,IAAA,GAAO,IAAA;;iBAS5B,eAAA,CAAgB,GAAA,EAAK,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,IAAA,GAAO,IAAA;AAjP9D;AAAA,iBAoQgB,gBAAA,CAAiB,GAAA,EAAK,IAAA,EAAM,CAAA,EAAG,IAAA,GAAO,IAAA;;iBAiBtC,YAAA,CAAa,GAAA,EAAK,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,CAAA,WAAY,IAAA;;iBA6CtD,aAAA,CAAc,GAAA,EAAK,IAAA,EAAM,CAAA,EAAG,IAAA,GAAO,IAAA"}