@oliversalzburg/js-utils 0.0.13 → 0.0.15

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 (157) hide show
  1. package/_site/assets/navigation.js +1 -1
  2. package/_site/assets/search.js +1 -1
  3. package/_site/classes/AbstractError.html +47 -8
  4. package/_site/classes/Canvas.html +66 -26
  5. package/_site/classes/CanvasSandbox.html +76 -0
  6. package/_site/classes/Euler.html +217 -0
  7. package/_site/classes/InternalError.html +48 -9
  8. package/_site/classes/InvalidArgumentError.html +47 -8
  9. package/_site/classes/InvalidOperationError.html +47 -8
  10. package/_site/classes/Matrix3.html +167 -0
  11. package/_site/classes/NotImplementedError.html +47 -8
  12. package/_site/classes/PermissionViolationError.html +47 -8
  13. package/_site/classes/Quaternion.html +211 -0
  14. package/_site/classes/Random.html +60 -13
  15. package/_site/classes/RenderLoop.html +62 -20
  16. package/_site/classes/ResourceConflictError.html +47 -8
  17. package/_site/classes/Transformation.html +52 -0
  18. package/_site/classes/UnexpectedNilError.html +44 -5
  19. package/_site/classes/UnknownError.html +47 -8
  20. package/_site/classes/Vector2.html +80 -37
  21. package/_site/classes/Vector3.html +201 -15
  22. package/_site/classes/Vector4.html +156 -0
  23. package/_site/favicon.ico +0 -0
  24. package/_site/functions/addVector2.html +43 -4
  25. package/_site/functions/addVector3.html +44 -0
  26. package/_site/functions/blend.html +41 -2
  27. package/_site/functions/blendAdditive.html +41 -2
  28. package/_site/functions/blendSubtractive.html +41 -2
  29. package/_site/functions/clamp.html +41 -2
  30. package/_site/functions/coalesceOnRejection.html +48 -0
  31. package/_site/functions/cosDeg.html +41 -2
  32. package/_site/functions/crossVector3.html +44 -0
  33. package/_site/functions/deg2rad.html +41 -2
  34. package/_site/functions/difference.html +41 -2
  35. package/_site/functions/distance.html +41 -2
  36. package/_site/functions/dotVector3.html +44 -0
  37. package/_site/functions/errorToJSON.html +41 -2
  38. package/_site/functions/errorToRecord.html +41 -2
  39. package/_site/functions/errorToSimpleSerializable.html +41 -2
  40. package/_site/functions/filterType.html +41 -2
  41. package/_site/functions/formatString.html +41 -2
  42. package/_site/functions/formatStringTemplate.html +41 -2
  43. package/_site/functions/fromRGB.html +41 -2
  44. package/_site/functions/fromRGBA.html +41 -2
  45. package/_site/functions/getA.html +41 -2
  46. package/_site/functions/getB.html +41 -2
  47. package/_site/functions/getDocumentElementTypeById.html +41 -2
  48. package/_site/functions/getG.html +41 -2
  49. package/_site/functions/getR.html +41 -2
  50. package/_site/functions/intersect.html +41 -2
  51. package/_site/functions/is.html +41 -2
  52. package/_site/functions/isError.html +41 -2
  53. package/_site/functions/isInteger.html +41 -2
  54. package/_site/functions/isNil.html +41 -2
  55. package/_site/functions/isqrt.html +41 -2
  56. package/_site/functions/multiplyVector2.html +43 -4
  57. package/_site/functions/multiplyVector3.html +44 -0
  58. package/_site/functions/mustExist.html +41 -2
  59. package/_site/functions/nextPalette.html +42 -2
  60. package/_site/functions/prepareAsyncContext.html +46 -0
  61. package/_site/functions/putPixel32.html +47 -8
  62. package/_site/functions/putPixel32Add.html +47 -8
  63. package/_site/functions/putPixel32Sub.html +47 -8
  64. package/_site/functions/putSubPixel32.html +41 -2
  65. package/_site/functions/rad2deg.html +41 -2
  66. package/_site/functions/randomRange.html +41 -2
  67. package/_site/functions/safeRGBComponent.html +41 -2
  68. package/_site/functions/seedFromString.html +41 -2
  69. package/_site/functions/shuffleArray.html +41 -2
  70. package/_site/functions/sinDeg.html +41 -2
  71. package/_site/functions/sleep.html +41 -2
  72. package/_site/functions/somecolor.html +41 -2
  73. package/_site/functions/subtractVector2.html +43 -4
  74. package/_site/functions/subtractVector3.html +44 -0
  75. package/_site/functions/toGrayScale.html +41 -2
  76. package/_site/functions/unknownToError.html +41 -2
  77. package/_site/index.html +41 -2
  78. package/_site/interfaces/CanvasOptions.html +42 -3
  79. package/_site/interfaces/CanvasSandboxApplication.html +60 -0
  80. package/_site/interfaces/CanvasSandboxExpectedOptions.html +48 -0
  81. package/_site/interfaces/RenderLoopOptions.html +43 -4
  82. package/_site/modules.html +59 -3
  83. package/_site/types/AnyAsyncFunction.html +41 -0
  84. package/_site/types/AnyConstructor.html +41 -2
  85. package/_site/types/AnyFunction.html +41 -2
  86. package/_site/types/ConstructorOf.html +41 -2
  87. package/_site/types/FunctionReturning.html +41 -2
  88. package/_site/types/Maybe.html +41 -2
  89. package/_site/types/Mixin.html +41 -2
  90. package/_site/types/Nil.html +41 -2
  91. package/_site/types/RenderLoopCallback.html +41 -2
  92. package/_site/types/SerializedError.html +41 -2
  93. package/_site/variables/MS_PER_FRAME_60FPS.html +42 -0
  94. package/_site/variables/PALETTES.html +41 -2
  95. package/_site/variables/TWO_PI.html +41 -2
  96. package/_site/variables/random-1.html +41 -2
  97. package/docs/assets/favicon.ico +0 -0
  98. package/lib/Async.d.ts +3 -0
  99. package/lib/Async.js +17 -0
  100. package/lib/Async.js.map +1 -0
  101. package/lib/async.d.ts +24 -0
  102. package/lib/async.js +37 -0
  103. package/lib/async.js.map +1 -0
  104. package/lib/core.d.ts +4 -0
  105. package/lib/core.js.map +1 -1
  106. package/lib/graphics/canvas copy.d.ts +170 -0
  107. package/lib/graphics/canvas copy.js +300 -0
  108. package/lib/graphics/canvas copy.js.map +1 -0
  109. package/lib/graphics/canvas-sandbox.d.ts +206 -0
  110. package/lib/graphics/canvas-sandbox.js +272 -0
  111. package/lib/graphics/canvas-sandbox.js.map +1 -0
  112. package/lib/graphics/canvas-worker.d.ts +50 -0
  113. package/lib/graphics/canvas-worker.js +78 -0
  114. package/lib/graphics/canvas-worker.js.map +1 -0
  115. package/lib/graphics/canvas.d.ts +14 -9
  116. package/lib/graphics/canvas.js +53 -19
  117. package/lib/graphics/canvas.js.map +1 -1
  118. package/lib/graphics/core.d.ts +2 -1
  119. package/lib/graphics/core.js +2 -0
  120. package/lib/graphics/core.js.map +1 -1
  121. package/lib/graphics/index.d.ts +1 -0
  122. package/lib/graphics/index.js +1 -0
  123. package/lib/graphics/index.js.map +1 -1
  124. package/lib/graphics/render-loop.d.ts +6 -5
  125. package/lib/graphics/render-loop.js +18 -9
  126. package/lib/graphics/render-loop.js.map +1 -1
  127. package/lib/index.d.ts +1 -0
  128. package/lib/index.js +1 -0
  129. package/lib/index.js.map +1 -1
  130. package/lib/math/euler.d.ts +19 -0
  131. package/lib/math/euler.js +23 -0
  132. package/lib/math/euler.js.map +1 -0
  133. package/lib/math/index.d.ts +5 -1
  134. package/lib/math/index.js +5 -1
  135. package/lib/math/index.js.map +1 -1
  136. package/lib/math/matrix3.d.ts +218 -0
  137. package/lib/math/matrix3.js +509 -0
  138. package/lib/math/matrix3.js.map +1 -0
  139. package/lib/math/quaternion.d.ts +120 -0
  140. package/lib/math/quaternion.js +272 -0
  141. package/lib/math/quaternion.js.map +1 -0
  142. package/lib/math/transformation.d.ts +27 -0
  143. package/lib/math/transformation.js +32 -0
  144. package/lib/math/transformation.js.map +1 -0
  145. package/lib/math/vector2.d.ts +19 -13
  146. package/lib/math/vector2.js +12 -4
  147. package/lib/math/vector2.js.map +1 -1
  148. package/lib/math/vector3.d.ts +256 -3
  149. package/lib/math/vector3.js +440 -1
  150. package/lib/math/vector3.js.map +1 -1
  151. package/lib/math/vector4.d.ts +183 -0
  152. package/lib/math/vector4.js +303 -0
  153. package/lib/math/vector4.js.map +1 -0
  154. package/lib/random.d.ts +12 -0
  155. package/lib/random.js +16 -0
  156. package/lib/random.js.map +1 -1
  157. package/package.json +4 -3
@@ -0,0 +1,509 @@
1
+ import { Vector3 } from "./vector3.js";
2
+ /**
3
+ * A matrix with 3 x 3 components.
4
+ * @group Math
5
+ */
6
+ export class Matrix3 {
7
+ /**
8
+ * The components of the matrix.
9
+ */
10
+ m = [
11
+ [0, 0, 0],
12
+ [0, 0, 0],
13
+ [0, 0, 0],
14
+ ];
15
+ /**
16
+ * Get position `0,0` of this matrix.
17
+ * @returns The position `0,0` of this matrix.
18
+ */
19
+ get m00() {
20
+ return this.m[0][0];
21
+ }
22
+ /**
23
+ * Set position `0,0` of this matrix.
24
+ */
25
+ set m00(value) {
26
+ this.m[0][0] = value;
27
+ }
28
+ /**
29
+ * Get position `1,0` of this matrix.
30
+ * @returns The position `1,0` of this matrix.
31
+ */
32
+ get m10() {
33
+ return this.m[1][0];
34
+ }
35
+ /**
36
+ * Set position `1,0` of this matrix.
37
+ */
38
+ set m10(value) {
39
+ this.m[1][0] = value;
40
+ }
41
+ /**
42
+ * Get position `2,0` of this matrix.
43
+ * @returns The position `2,0` of this matrix.
44
+ */
45
+ get m20() {
46
+ return this.m[2][0];
47
+ }
48
+ /**
49
+ * Set position `2,0` of this matrix.
50
+ */
51
+ set m20(value) {
52
+ this.m[2][0] = value;
53
+ }
54
+ /**
55
+ * Get position `0,1` of this matrix.
56
+ * @returns The position `0,1` of this matrix.
57
+ */
58
+ get m01() {
59
+ return this.m[0][1];
60
+ }
61
+ /**
62
+ * Set position `0,1` of this matrix.
63
+ */
64
+ set m01(value) {
65
+ this.m[0][1] = value;
66
+ }
67
+ /**
68
+ * Get position `1,1` of this matrix.
69
+ * @returns The position `1,1` of this matrix.
70
+ */
71
+ get m11() {
72
+ return this.m[1][1];
73
+ }
74
+ /**
75
+ * Set position `1,1` of this matrix.
76
+ */
77
+ set m11(value) {
78
+ this.m[1][1] = value;
79
+ }
80
+ /**
81
+ * Get position `2,1` of this matrix.
82
+ * @returns The position `2,1` of this matrix.
83
+ */
84
+ get m21() {
85
+ return this.m[2][1];
86
+ }
87
+ /**
88
+ * Set position `2,1` of this matrix.
89
+ */
90
+ set m21(value) {
91
+ this.m[2][1] = value;
92
+ }
93
+ /**
94
+ * Get position `0,2` of this matrix.
95
+ * @returns The position `0,2` of this matrix.
96
+ */
97
+ get m02() {
98
+ return this.m[0][2];
99
+ }
100
+ /**
101
+ * Set position `0,2` of this matrix.
102
+ */
103
+ set m02(value) {
104
+ this.m[0][2] = value;
105
+ }
106
+ /**
107
+ * Get position `1,2` of this matrix.
108
+ * @returns The position `1,2` of this matrix.
109
+ */
110
+ get m12() {
111
+ return this.m[1][2];
112
+ }
113
+ /**
114
+ * Set position `1,2` of this matrix.
115
+ */
116
+ set m12(value) {
117
+ this.m[1][2] = value;
118
+ }
119
+ /**
120
+ * Get position `2,2` of this matrix.
121
+ * @returns The position `2,2` of this matrix.
122
+ */
123
+ get m22() {
124
+ return this.m[2][2];
125
+ }
126
+ /**
127
+ * Set position `2,2` of this matrix.
128
+ */
129
+ set m22(value) {
130
+ this.m[2][2] = value;
131
+ }
132
+ /**
133
+ * Constructs a new {@linkcode Matrix3}.
134
+ * @param m00 Position `0,0` of this matrix.
135
+ * @param m10 Position `1,0` of this matrix.
136
+ * @param m20 Position `2,0` of this matrix.
137
+ * @param m01 Position `0,1` of this matrix.
138
+ * @param m11 Position `1,1` of this matrix.
139
+ * @param m21 Position `2,1` of this matrix.
140
+ * @param m02 Position `0,2` of this matrix.
141
+ * @param m12 Position `1,2` of this matrix.
142
+ * @param m22 Position `2,2` of this matrix.
143
+ */
144
+ constructor(m00 = 1, m10 = 0, m20 = 0, m01 = 0, m11 = 1, m21 = 0, m02 = 0, m12 = 0, m22 = 1) {
145
+ this.m00 = m00;
146
+ this.m10 = m10;
147
+ this.m20 = m20;
148
+ this.m01 = m01;
149
+ this.m11 = m11;
150
+ this.m21 = m21;
151
+ this.m02 = m02;
152
+ this.m12 = m12;
153
+ this.m22 = m22;
154
+ }
155
+ /**
156
+ * Creates a new {@linkcode Matrix3} from another {@linkcode Matrix3}.
157
+ * @param matrix The matrix to copy.
158
+ * @returns A new matrix.
159
+ */
160
+ static fromMatrix3(matrix) {
161
+ return new Matrix3().set(matrix);
162
+ }
163
+ /**
164
+ * Creates a new {@linkcode Matrix3} from a rotation in Euler angles.
165
+ * @param degrees The rotation in Euler angles.
166
+ * @returns A new matrix.
167
+ */
168
+ static fromEuler(degrees) {
169
+ return new Matrix3().setEuler(degrees);
170
+ }
171
+ /**
172
+ * Creates a new {@linkcode Matrix3} from a rotation around an axis.
173
+ * @param axis The axis around which to rotate.
174
+ * @param degrees The rotation in degrees.
175
+ * @returns A new matrix.
176
+ */
177
+ static fromVector3(axis, degrees) {
178
+ return new Matrix3().setVector3(axis, degrees);
179
+ }
180
+ /**
181
+ * Creates a new {@linkcode Matrix3} from a quaternion.
182
+ * @param quaternion The quaternion describes the rotation.
183
+ * @returns A new matrix.
184
+ */
185
+ static fromQuaternion(quaternion) {
186
+ return new Matrix3().setQuaternion(quaternion);
187
+ }
188
+ /**
189
+ * Sets the matrix to new values from another matrix.
190
+ * @param matrix The matrix to copy.
191
+ * @returns This instance.
192
+ */
193
+ set(matrix) {
194
+ this.setM(matrix.m00, matrix.m10, matrix.m20, matrix.m01, matrix.m11, matrix.m21, matrix.m02, matrix.m12, matrix.m22);
195
+ return this;
196
+ }
197
+ /**
198
+ * Update the matrix by individual components.
199
+ * @param m00 Position `0,0` of this matrix.
200
+ * @param m10 Position `1,0` of this matrix.
201
+ * @param m20 Position `2,0` of this matrix.
202
+ * @param m01 Position `0,1` of this matrix.
203
+ * @param m11 Position `1,1` of this matrix.
204
+ * @param m21 Position `2,1` of this matrix.
205
+ * @param m02 Position `0,2` of this matrix.
206
+ * @param m12 Position `1,2` of this matrix.
207
+ * @param m22 Position `2,2` of this matrix.
208
+ * @returns This instance.
209
+ */
210
+ setM(m00, m10, m20, m01, m11, m21, m02, m12, m22) {
211
+ this.m00 = m00;
212
+ this.m10 = m10;
213
+ this.m20 = m20;
214
+ this.m01 = m01;
215
+ this.m11 = m11;
216
+ this.m21 = m21;
217
+ this.m02 = m02;
218
+ this.m12 = m12;
219
+ this.m22 = m22;
220
+ return this;
221
+ }
222
+ /**
223
+ * Sets the matrix to a rotation in Euler angles.
224
+ * @param degrees The rotation in Euler angles.
225
+ * @returns This instance.
226
+ */
227
+ setEuler(degrees) {
228
+ const xsi = Math.sin(degrees.x);
229
+ const xco = Math.cos(degrees.x);
230
+ const ysi = Math.sin(degrees.y);
231
+ const yco = Math.cos(degrees.y);
232
+ const zsi = Math.sin(degrees.z);
233
+ const zco = Math.cos(degrees.z);
234
+ if (degrees.reverse) {
235
+ this.m00 = yco * zco;
236
+ this.m10 = yco * zsi;
237
+ this.m20 = -ysi;
238
+ this.m01 = xsi * ysi * zco - xco * zsi;
239
+ this.m11 = xsi * ysi * zsi + xco * zco;
240
+ this.m21 = xsi * yco;
241
+ this.m02 = xco * ysi * zco + xsi * zsi;
242
+ this.m12 = xco * ysi * zsi - xsi * zco;
243
+ this.m22 = xco * yco;
244
+ }
245
+ else {
246
+ this.m00 = yco * zco;
247
+ this.m10 = xco * zsi + xsi * ysi * zco;
248
+ this.m20 = xsi * zsi - xco * ysi * zco;
249
+ this.m01 = -yco * zsi;
250
+ this.m11 = xco * zco - xsi * ysi * zsi;
251
+ this.m21 = xsi * zco + xco * ysi * zsi;
252
+ this.m02 = ysi;
253
+ this.m12 = -xsi * yco;
254
+ this.m22 = xco * yco;
255
+ }
256
+ return this;
257
+ }
258
+ /**
259
+ * Sets the matrix to a rotation around an axis.
260
+ * @param axis The axis around which to rotate.
261
+ * @param degrees The rotation in degrees.
262
+ * @returns This instance.
263
+ */
264
+ setVector3(axis, degrees) {
265
+ const s = Math.sin(degrees);
266
+ const c = Math.cos(degrees);
267
+ const t = 1 - c;
268
+ const txy = t * axis.x * axis.y;
269
+ const txz = t * axis.x * axis.z;
270
+ const tyz = t * axis.y * axis.z;
271
+ const sx = s * axis.x;
272
+ const sy = s * axis.y;
273
+ const sz = s * axis.z;
274
+ this.m00 = t * axis.x * axis.x + c;
275
+ this.m10 = txy + sz;
276
+ this.m20 = txz - sy;
277
+ this.m01 = txy - sz;
278
+ this.m11 = t * axis.y * axis.y + c;
279
+ this.m21 = tyz + sx;
280
+ this.m02 = txz + sy;
281
+ this.m12 = tyz - sx;
282
+ this.m22 = t * axis.z * axis.z + c;
283
+ return this;
284
+ }
285
+ /**
286
+ * Sets the matrix to a rotation described by a quaternion.
287
+ * @param quaternion The quaternion describing the rotation.
288
+ * @returns This instance.
289
+ */
290
+ setQuaternion(quaternion) {
291
+ const x2 = quaternion.x + quaternion.x;
292
+ const y2 = quaternion.y + quaternion.y;
293
+ const z2 = quaternion.z + quaternion.z;
294
+ const xx = quaternion.x * x2;
295
+ const xy = quaternion.x * y2;
296
+ const xz = quaternion.x * z2;
297
+ const yy = quaternion.y * y2;
298
+ const yz = quaternion.y * z2;
299
+ const zz = quaternion.z * z2;
300
+ const wx = quaternion.w * x2;
301
+ const wy = quaternion.w * y2;
302
+ const wz = quaternion.w * z2;
303
+ this.m00 = 1 - (yy + zz);
304
+ this.m01 = xy - wz;
305
+ this.m02 = xz + wy;
306
+ this.m10 = xy + wz;
307
+ this.m11 = 1 - (xx + zz);
308
+ this.m12 = yz - wx;
309
+ this.m20 = xz - wy;
310
+ this.m21 = yz + wx;
311
+ this.m22 = 1 - (xx + yy);
312
+ return this;
313
+ }
314
+ /**
315
+ * Normalizes the matrix.
316
+ * @returns This instance.
317
+ */
318
+ normalize() {
319
+ const x = new Matrix3();
320
+ x.m00 = this.m00;
321
+ x.m10 = this.m01;
322
+ x.m20 = this.m02;
323
+ x.m01 = this.m10;
324
+ x.m11 = this.m11;
325
+ x.m21 = this.m12;
326
+ x.m02 = this.m20;
327
+ x.m12 = this.m21;
328
+ x.m22 = this.m22;
329
+ x.multiplyL(this);
330
+ x.m00 = (3 - x.m00) / 2;
331
+ x.m10 = -x.m10 / 2;
332
+ x.m20 = -x.m20 / 2;
333
+ x.m01 = -x.m01 / 2;
334
+ x.m11 = (3 - x.m11) / 2;
335
+ x.m21 = -x.m21 / 2;
336
+ x.m02 = -x.m02 / 2;
337
+ x.m12 = -x.m12 / 2;
338
+ x.m22 = (3 - x.m22) / 2;
339
+ this.multiplyL(x);
340
+ return this;
341
+ }
342
+ /**
343
+ * Inverts the matrix.
344
+ * @returns This instance.
345
+ */
346
+ invert() {
347
+ let buff;
348
+ buff = this.m01;
349
+ this.m01 = this.m10;
350
+ this.m10 = buff;
351
+ buff = this.m02;
352
+ this.m02 = this.m20;
353
+ this.m20 = buff;
354
+ buff = this.m12;
355
+ this.m12 = this.m21;
356
+ this.m21 = buff;
357
+ return this;
358
+ }
359
+ /**
360
+ * Multiply with another matrix from the right.
361
+ * @param matrix The matrix to multiply with.
362
+ * @returns This instance.
363
+ */
364
+ multiplyR(matrix) {
365
+ const z11 = matrix.m00 * this.m00 + matrix.m01 * this.m10 + matrix.m02 * this.m20;
366
+ const z21 = matrix.m10 * this.m00 + matrix.m11 * this.m10 + matrix.m12 * this.m20;
367
+ const z31 = matrix.m20 * this.m00 + matrix.m21 * this.m10 + matrix.m22 * this.m20;
368
+ const z12 = matrix.m00 * this.m01 + matrix.m01 * this.m11 + matrix.m02 * this.m21;
369
+ const z22 = matrix.m10 * this.m01 + matrix.m11 * this.m11 + matrix.m12 * this.m21;
370
+ const z32 = matrix.m20 * this.m01 + matrix.m21 * this.m11 + matrix.m22 * this.m21;
371
+ const z13 = matrix.m00 * this.m02 + matrix.m01 * this.m12 + matrix.m02 * this.m22;
372
+ const z23 = matrix.m10 * this.m02 + matrix.m11 * this.m12 + matrix.m12 * this.m22;
373
+ const z33 = matrix.m20 * this.m02 + matrix.m21 * this.m12 + matrix.m22 * this.m22;
374
+ this.m00 = z11;
375
+ this.m10 = z21;
376
+ this.m20 = z31;
377
+ this.m01 = z12;
378
+ this.m11 = z22;
379
+ this.m21 = z32;
380
+ this.m02 = z13;
381
+ this.m12 = z23;
382
+ this.m22 = z33;
383
+ return this;
384
+ }
385
+ /**
386
+ * Inversely multiply with another matrix from the right.
387
+ * @param matrix The matrix to multiply with.
388
+ * @returns This instance.
389
+ */
390
+ multiplyInverseR(matrix) {
391
+ const z11 = matrix.m00 * this.m00 + matrix.m10 * this.m10 + matrix.m20 * this.m20;
392
+ const z21 = matrix.m01 * this.m00 + matrix.m11 * this.m10 + matrix.m21 * this.m20;
393
+ const z31 = matrix.m02 * this.m00 + matrix.m12 * this.m10 + matrix.m22 * this.m20;
394
+ const z12 = matrix.m00 * this.m01 + matrix.m10 * this.m11 + matrix.m20 * this.m21;
395
+ const z22 = matrix.m01 * this.m01 + matrix.m11 * this.m11 + matrix.m21 * this.m21;
396
+ const z32 = matrix.m02 * this.m01 + matrix.m12 * this.m11 + matrix.m22 * this.m21;
397
+ const z13 = matrix.m00 * this.m02 + matrix.m10 * this.m12 + matrix.m20 * this.m22;
398
+ const z23 = matrix.m01 * this.m02 + matrix.m11 * this.m12 + matrix.m21 * this.m22;
399
+ const z33 = matrix.m02 * this.m02 + matrix.m12 * this.m12 + matrix.m22 * this.m22;
400
+ this.m00 = z11;
401
+ this.m10 = z21;
402
+ this.m20 = z31;
403
+ this.m01 = z12;
404
+ this.m11 = z22;
405
+ this.m21 = z32;
406
+ this.m02 = z13;
407
+ this.m12 = z23;
408
+ this.m22 = z33;
409
+ return this;
410
+ }
411
+ /**
412
+ * Multiply with another matrix from the left.
413
+ * @param matrix The matrix to multiply with.
414
+ * @returns This instance.
415
+ */
416
+ multiplyL(matrix) {
417
+ const z11 = this.m00 * matrix.m00 + this.m01 * matrix.m10 + this.m02 * matrix.m20;
418
+ const z21 = this.m10 * matrix.m00 + this.m11 * matrix.m10 + this.m12 * matrix.m20;
419
+ const z31 = this.m20 * matrix.m00 + this.m21 * matrix.m10 + this.m22 * matrix.m20;
420
+ const z12 = this.m00 * matrix.m01 + this.m01 * matrix.m11 + this.m02 * matrix.m21;
421
+ const z22 = this.m10 * matrix.m01 + this.m11 * matrix.m11 + this.m12 * matrix.m21;
422
+ const z32 = this.m20 * matrix.m01 + this.m21 * matrix.m11 + this.m22 * matrix.m21;
423
+ const z13 = this.m00 * matrix.m02 + this.m01 * matrix.m12 + this.m02 * matrix.m22;
424
+ const z23 = this.m10 * matrix.m02 + this.m11 * matrix.m12 + this.m12 * matrix.m22;
425
+ const z33 = this.m20 * matrix.m02 + this.m21 * matrix.m12 + this.m22 * matrix.m22;
426
+ this.m00 = z11;
427
+ this.m10 = z21;
428
+ this.m20 = z31;
429
+ this.m01 = z12;
430
+ this.m11 = z22;
431
+ this.m21 = z32;
432
+ this.m02 = z13;
433
+ this.m12 = z23;
434
+ this.m22 = z33;
435
+ return this;
436
+ }
437
+ /**
438
+ * Inversely multiply with another matrix from the right.
439
+ * @param matrix The matrix to multiply with.
440
+ * @returns This instance.
441
+ */
442
+ multiplyInverseL(matrix) {
443
+ const z11 = this.m00 * matrix.m00 + this.m01 * matrix.m01 + this.m02 * matrix.m02;
444
+ const z21 = this.m10 * matrix.m00 + this.m11 * matrix.m01 + this.m12 * matrix.m02;
445
+ const z31 = this.m20 * matrix.m00 + this.m21 * matrix.m01 + this.m22 * matrix.m02;
446
+ const z12 = this.m00 * matrix.m10 + this.m01 * matrix.m11 + this.m02 * matrix.m12;
447
+ const z22 = this.m10 * matrix.m10 + this.m11 * matrix.m11 + this.m12 * matrix.m12;
448
+ const z32 = this.m20 * matrix.m10 + this.m21 * matrix.m11 + this.m22 * matrix.m12;
449
+ const z13 = this.m00 * matrix.m20 + this.m01 * matrix.m21 + this.m02 * matrix.m22;
450
+ const z23 = this.m10 * matrix.m20 + this.m11 * matrix.m21 + this.m12 * matrix.m22;
451
+ const z33 = this.m20 * matrix.m20 + this.m21 * matrix.m21 + this.m22 * matrix.m22;
452
+ this.m00 = z11;
453
+ this.m10 = z21;
454
+ this.m20 = z31;
455
+ this.m01 = z12;
456
+ this.m11 = z22;
457
+ this.m21 = z32;
458
+ this.m02 = z13;
459
+ this.m12 = z23;
460
+ this.m22 = z33;
461
+ return this;
462
+ }
463
+ /**
464
+ * Sets this matrix up as a transformation matrix to look in a given direction.
465
+ * @param direction The direction to look in.
466
+ * @param upVector The vector indicating the up direction. If not provided
467
+ * a best effort is made to find a good one.
468
+ * @returns This instance.
469
+ */
470
+ lookAt(direction, upVector) {
471
+ const right = new Vector3(this.m00, this.m01, this.m02);
472
+ const up = new Vector3(this.m10, this.m11, this.m12);
473
+ const forward = new Vector3(this.m20, this.m21, this.m22);
474
+ forward.set(direction).normalize();
475
+ // Select positive y axis or positive z alternatively as up-vector
476
+ let lookUp = upVector;
477
+ if (!lookUp) {
478
+ lookUp = new Vector3();
479
+ if (Math.abs(forward.y) > 0.8) {
480
+ lookUp.setXYZ(0, 0, 1);
481
+ }
482
+ else {
483
+ lookUp.setXYZ(0, 1, 0);
484
+ }
485
+ }
486
+ right.set(forward).cross(lookUp).normalize();
487
+ up.set(right).cross(forward).normalize();
488
+ this.setM(right.x, right.y, right.z, up.x, up.y, up.z, forward.x, forward.y, forward.z);
489
+ return this;
490
+ }
491
+ /**
492
+ * Return the components of this matrix as an array.
493
+ * @returns The components of this matrix as an array.
494
+ */
495
+ asArray() {
496
+ return [
497
+ this.m00,
498
+ this.m01,
499
+ this.m02,
500
+ this.m10,
501
+ this.m11,
502
+ this.m12,
503
+ this.m20,
504
+ this.m21,
505
+ this.m22,
506
+ ];
507
+ }
508
+ }
509
+ //# sourceMappingURL=matrix3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix3.js","sourceRoot":"","sources":["../../source/math/matrix3.ts"],"names":[],"mappings":"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,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAClF,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;Q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,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAClF,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,SAA4B,EAAE,QAA4B;QAC/D,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAE1D,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;QAEnC,kEAAkE;QAClE,IAAI,MAAM,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;gBAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aACxB;iBAAM;gBACL,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aACxB;SACF;QAED,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;QAC7C,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;QAEzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAExF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,OAAO;YACL,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,GAAG;SACT,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,120 @@
1
+ import { Euler } from "./euler.js";
2
+ import { Matrix3 } from "./matrix3.js";
3
+ import { Vector3 } from "./vector3.js";
4
+ import { Vector4 } from "./vector4.js";
5
+ /**
6
+ * A quaternion.
7
+ * @group Math
8
+ */
9
+ export declare class Quaternion extends Vector4 {
10
+ /**
11
+ * Constructs a new {@linkcode Quaternion}.
12
+ * @param x The X component.
13
+ * @param y The Y component.
14
+ * @param z The Z component.
15
+ * @param w The W component.
16
+ */
17
+ constructor(x?: number, y?: number, z?: number, w?: number);
18
+ /**
19
+ * Creates a new {@linkcode Quaternion} from a rotation matrix.
20
+ * @param matrix The matrix to construct the quaternion from.
21
+ * @returns A new quaternion.
22
+ */
23
+ static fromMatrix3(matrix: Readonly<Matrix3>): Quaternion;
24
+ /**
25
+ * Creates a new {@linkcode Quaternion} from a rotation in Euler angles.
26
+ * @param degrees The rotation in Euler angles.
27
+ * @returns A new quaternion.
28
+ */
29
+ static fromEuler(degrees: Readonly<Euler>): Quaternion;
30
+ /**
31
+ * Creates a new {@linkcode Quaternion} from a rotation around an axis.
32
+ * @param axis The axis around which to rotate.
33
+ * @param degrees The rotation in degrees.
34
+ * @returns A new quaternion.
35
+ */
36
+ static fromVector3(axis: Readonly<Vector3>, degrees: number): Quaternion;
37
+ /**
38
+ * Creates a new {@linkcode Quaternion} from a {@linkcode Vector4}.
39
+ * @param vector The vector to copy the components from.
40
+ * @returns A new quaternion.
41
+ */
42
+ static fromVector4(vector: Readonly<Vector4>): Quaternion;
43
+ /**
44
+ * Creates a new {@linkcode Quaternion} from another {@linkcode Quaternion}.
45
+ * @param quaternion The quaternion to copy.
46
+ * @returns A new quaternion.
47
+ */
48
+ static fromQuaternion(quaternion: Readonly<Quaternion>): Quaternion;
49
+ /**
50
+ * Sets the quaternion to the values of another quaternion.
51
+ * @param quaternion The quaternion to copy.
52
+ * @returns This instance.
53
+ */
54
+ set(quaternion: Readonly<Quaternion>): this;
55
+ /**
56
+ * Sets all components of the quaternion to the given value.
57
+ * @param value The value to assign to the components of the quaternion.
58
+ * @returns This instance.
59
+ */
60
+ setValue(value: number): this;
61
+ /**
62
+ * Sets the components of the quaternion to the given values.
63
+ * @param x The X component for the quaternion.
64
+ * @param y The Y component for the quaternion.
65
+ * @param z The Z component for the quaternion.
66
+ * @param w The W component for the quaternion.
67
+ * @returns This instance.
68
+ */
69
+ setXYZW(x: number, y: number, z?: number, w?: number): this;
70
+ /**
71
+ * Sets the quaternion to the rotation of the given matrix.
72
+ * @param matrix The matrix describing the rotation of the quaternion.
73
+ * @returns This instance.
74
+ */
75
+ setMatrix3(matrix: Readonly<Matrix3>): this;
76
+ /**
77
+ * Sets the quaternion to a rotation in Euler angles.
78
+ * @param degrees The rotation in Euler angles.
79
+ * @returns This instance.
80
+ */
81
+ setEuler(degrees: Readonly<Euler>): this;
82
+ /**
83
+ * Sets the quaternion to a rotation around an axis.
84
+ * @param axis The axis around which to rotate.
85
+ * @param degrees The rotation in degrees.
86
+ * @returns This instance.
87
+ */
88
+ setVector3(axis: Readonly<Vector3>, degrees: number): this;
89
+ /**
90
+ * Sets the quaternion to the components of a {@linkcode Vector4}.
91
+ * @param vector The vector to copy.
92
+ * @returns This instance.
93
+ */
94
+ setVector4(vector: Readonly<Vector4>): this;
95
+ /**
96
+ * Normalize the quaternion.
97
+ * @returns This instance.
98
+ */
99
+ normalize(): this;
100
+ /**
101
+ * Invert the quaternion.
102
+ * @returns This instance.
103
+ */
104
+ invert(): this;
105
+ /**
106
+ * Multiply with another quaternion from the right.
107
+ * @param quaternion The quaternion to multiply with.
108
+ * @returns This instance.
109
+ */
110
+ multiplyR(quaternion: Readonly<Quaternion>): this;
111
+ /**
112
+ * Performs spherical linear interpolation between two rotations, and sets this
113
+ * quaternion to the resulting rotation.
114
+ * @param q1 The initial rotation.
115
+ * @param q2 The target rotation.
116
+ * @param t The location on the scale from `0` to `1`.
117
+ * @returns This instance.
118
+ */
119
+ slerp(q1: Readonly<Quaternion>, q2: Readonly<Quaternion>, t: number): this;
120
+ }