@woosh/meep-engine 2.126.35 → 2.126.36

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/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Pure JavaScript game engine. Fully featured and production ready.",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.126.35",
8
+ "version": "2.126.36",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -1,11 +1,16 @@
1
1
  /**
2
- * Rotation representation in 3d space
2
+ * Implementation of a quaternion.
3
+ * Represents rotation in 3d space
4
+ *
5
+ * Iterating through a Quaternion instance will yield its components `(x, y, z, w)` in the corresponding order.
6
+ *
3
7
  * @see https://en.wikipedia.org/wiki/Quaternion
8
+ * @implements Iterable<number>
4
9
  *
5
10
  * @author Alex Goldring
6
11
  * @copyright Company Named Limited (c) 2025
7
12
  */
8
- export class Quaternion {
13
+ export class Quaternion implements Iterable<number> {
9
14
  /**
10
15
  *
11
16
  * @param {Vector3} axis
@@ -154,24 +159,27 @@ export class Quaternion {
154
159
  */
155
160
  angleTo(other: Quaternion): number;
156
161
  /**
157
- *
162
+ * Set quaternion from axis + angle definition
158
163
  * @param {Vector3} axis
159
164
  * @param {number} angle
160
165
  */
161
166
  fromAxisAngle(axis: Vector3, angle: number): void;
162
167
  /**
163
168
  *
164
- * @param {number} ax
165
- * @param {number} ay
166
- * @param {number} az
169
+ * @param {number} axis_x
170
+ * @param {number} axis_y
171
+ * @param {number} axis_z
167
172
  * @param {number} angle
168
173
  */
169
- _fromAxisAngle(ax: number, ay: number, az: number, angle: number): void;
174
+ _fromAxisAngle(axis_x: number, axis_y: number, axis_z: number, angle: number): void;
170
175
  /**
171
- * @see https://stackoverflow.com/questions/3684269/component-of-a-quaternion-rotation-around-an-axis
176
+ * Given a direction axis, compute rotation quaternions from current rotation to that axis as swing and twist. Swing moves to a given orientation while without "twisting",
177
+ * `twist` just the twist around the given axis, no change in orientation.
172
178
  * @param {Vector3} axis
173
- * @param {Quaternion} swing
174
- * @param {Quaternion} twist
179
+ * @param {Quaternion} swing Swing quaternion will be written here
180
+ * @param {Quaternion} twist Twist quaternion will be written here
181
+ * @returns {void}
182
+ * @see slerp
175
183
  */
176
184
  computeSwingAndTwist(axis: Vector3, swing: Quaternion, twist: Quaternion): void;
177
185
  /**
@@ -251,7 +259,7 @@ export class Quaternion {
251
259
  * @param {number} x
252
260
  * @param {number} y
253
261
  * @param {number} z
254
- * @param {String} [order] a combination of capital letters X,Y,Z. Examples: XYZ, YXZ
262
+ * @param {String} [order='XYZ'] a combination of capital letters X,Y,Z. Examples: XYZ, YXZ
255
263
  * @returns {Quaternion}
256
264
  */
257
265
  __setFromEuler(x: number, y: number, z: number, order?: string): Quaternion;
@@ -477,9 +485,10 @@ export class Quaternion {
477
485
  */
478
486
  writeToArray(array?: number[], offset?: number): number[];
479
487
  /**
480
- *
488
+ * Strict equality check
481
489
  * @param {Quaternion} other
482
490
  * @returns {boolean}
491
+ * @see roughlyEquals
483
492
  */
484
493
  equals(other: Quaternion): boolean;
485
494
  /**
@@ -500,7 +509,7 @@ export class Quaternion {
500
509
  * @param {number} y
501
510
  * @param {number} z
502
511
  * @param {number} w
503
- * @param {number} [tolerance]
512
+ * @param {number} [tolerance] acceptable difference value per coordinate
504
513
  * @return {boolean}
505
514
  */
506
515
  _roughlyEquals(x: number, y: number, z: number, w: number, tolerance?: number): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { clamp01 } from "../math/clamp01.js";
5
5
  import { EPSILON } from "../math/EPSILON.js";
6
6
  import { epsilonEquals } from "../math/epsilonEquals.js";
7
7
  import { lerp } from "../math/lerp.js";
8
+ import { PI2 } from "../math/PI2.js";
8
9
  import { computeHashFloat } from "../primitives/numbers/computeHashFloat.js";
9
10
  import { v3_dot } from "./vec3/v3_dot.js";
10
11
  import { v4_length } from "./vec4/v4_length.js";
@@ -18,8 +19,13 @@ const sin = Math.sin;
18
19
  const cos = Math.cos;
19
20
 
20
21
  /**
21
- * Rotation representation in 3d space
22
+ * Implementation of a quaternion.
23
+ * Represents rotation in 3d space
24
+ *
25
+ * Iterating through a Quaternion instance will yield its components `(x, y, z, w)` in the corresponding order.
26
+ *
22
27
  * @see https://en.wikipedia.org/wiki/Quaternion
28
+ * @implements Iterable<number>
23
29
  *
24
30
  * @author Alex Goldring
25
31
  * @copyright Company Named Limited (c) 2025
@@ -207,7 +213,7 @@ export class Quaternion {
207
213
  const m12 = scratch_v3_a.y;
208
214
  const m22 = scratch_v3_a.z;
209
215
 
210
- return this.__setFromRotationMatrix(
216
+ return this.__setFromRotationMatrix(
211
217
  m00, m01, m02,
212
218
  m10, m11, m12,
213
219
  m20, m21, m22
@@ -318,7 +324,7 @@ export class Quaternion {
318
324
  }
319
325
 
320
326
  /**
321
- *
327
+ * Set quaternion from axis + angle definition
322
328
  * @param {Vector3} axis
323
329
  * @param {number} angle
324
330
  */
@@ -330,25 +336,30 @@ export class Quaternion {
330
336
 
331
337
  /**
332
338
  *
333
- * @param {number} ax
334
- * @param {number} ay
335
- * @param {number} az
339
+ * @param {number} axis_x
340
+ * @param {number} axis_y
341
+ * @param {number} axis_z
336
342
  * @param {number} angle
337
343
  */
338
- _fromAxisAngle(ax, ay, az, angle) {
339
- assert.isNumber(ax, 'ax');
340
- assert.isNumber(ay, 'ay');
341
- assert.isNumber(az, 'az');
344
+ _fromAxisAngle(axis_x, axis_y, axis_z, angle) {
345
+ assert.isNumber(axis_x, 'axis_x');
346
+ assert.isNumber(axis_y, 'axis_y');
347
+ assert.isNumber(axis_z, 'axis_z');
342
348
  assert.isNumber(angle, 'angle');
343
349
 
350
+ assert.notNaN(axis_x, 'axis_x');
351
+ assert.notNaN(axis_y, 'axis_y');
352
+ assert.notNaN(axis_z, 'axis_z');
353
+ assert.notNaN(angle, 'angle');
354
+
344
355
  const halfAngle = angle * 0.5;
345
356
 
346
357
  const sinA2 = sin(halfAngle);
347
358
  const cosA2 = cos(halfAngle);
348
359
 
349
- const qx = ax * sinA2;
350
- const qy = ay * sinA2;
351
- const qz = az * sinA2;
360
+ const qx = axis_x * sinA2;
361
+ const qy = axis_y * sinA2;
362
+ const qz = axis_z * sinA2;
352
363
  const qw = cosA2;
353
364
 
354
365
  //normalize
@@ -365,12 +376,21 @@ export class Quaternion {
365
376
  }
366
377
 
367
378
  /**
368
- * @see https://stackoverflow.com/questions/3684269/component-of-a-quaternion-rotation-around-an-axis
379
+ * Given a direction axis, compute rotation quaternions from current rotation to that axis as swing and twist. Swing moves to a given orientation while without "twisting",
380
+ * `twist` just the twist around the given axis, no change in orientation.
369
381
  * @param {Vector3} axis
370
- * @param {Quaternion} swing
371
- * @param {Quaternion} twist
382
+ * @param {Quaternion} swing Swing quaternion will be written here
383
+ * @param {Quaternion} twist Twist quaternion will be written here
384
+ * @returns {void}
385
+ * @see slerp
372
386
  */
373
387
  computeSwingAndTwist(axis, swing, twist) {
388
+ assert.defined(axis, 'axis');
389
+ assert.defined(swing, 'swing');
390
+ assert.defined(twist, 'twist');
391
+
392
+ // see https://stackoverflow.com/questions/3684269/component-of-a-quaternion-rotation-around-an-axis
393
+
374
394
  const x = this.x;
375
395
  const y = this.y;
376
396
  const z = this.z;
@@ -388,16 +408,19 @@ export class Quaternion {
388
408
  const pz = axis.z * m;
389
409
 
390
410
  if (d < 0) {
411
+
391
412
  // axis points in the opposite direction from calculated twist, invert all components
392
413
  twist.set(-px, -py, -pz, -w);
414
+
393
415
  } else {
416
+
394
417
  twist.set(px, py, pz, w);
395
418
 
396
419
  }
397
420
 
398
421
  twist.normalize();
399
422
 
400
- // rotation * twist.conjugated()
423
+ // rotation * twist.conjugated(), basically undo the twist
401
424
  swing._multiplyQuaternions(x, y, z, w, -twist.x, -twist.y, -twist.z, twist.w);
402
425
  }
403
426
 
@@ -414,7 +437,7 @@ export class Quaternion {
414
437
 
415
438
  this.computeSwingAndTwist(axis, swing, twist);
416
439
 
417
- // extract twist angle from quaternion, see {@link #toAxisAngle}
440
+ // Extract the twist angle from quaternion, see {@link #toAxisAngle}
418
441
  return Math.acos(twist.w) * 2;
419
442
  }
420
443
 
@@ -583,7 +606,7 @@ export class Quaternion {
583
606
  * @param {number} x
584
607
  * @param {number} y
585
608
  * @param {number} z
586
- * @param {String} [order] a combination of capital letters X,Y,Z. Examples: XYZ, YXZ
609
+ * @param {String} [order='XYZ'] a combination of capital letters X,Y,Z. Examples: XYZ, YXZ
587
610
  * @returns {Quaternion}
588
611
  */
589
612
  __setFromEuler(
@@ -1163,6 +1186,7 @@ export class Quaternion {
1163
1186
 
1164
1187
  // calculate coefficients
1165
1188
  if ((1.0 - cos_angle) > EPSILON) {
1189
+
1166
1190
  // standard case (slerp)
1167
1191
  const angle = Math.acos(cos_angle);
1168
1192
 
@@ -1172,10 +1196,12 @@ export class Quaternion {
1172
1196
  scale1 = sin(t * angle) * recip_sin_angle;
1173
1197
 
1174
1198
  } else {
1199
+
1175
1200
  // "from" and "to" quaternions are very close
1176
1201
  // ... so we can do a linear interpolation
1177
1202
  scale0 = 1.0 - t;
1178
1203
  scale1 = t;
1204
+
1179
1205
  }
1180
1206
 
1181
1207
  // calculate final values
@@ -1380,9 +1406,10 @@ export class Quaternion {
1380
1406
  }
1381
1407
 
1382
1408
  /**
1383
- *
1409
+ * Strict equality check
1384
1410
  * @param {Quaternion} other
1385
1411
  * @returns {boolean}
1412
+ * @see roughlyEquals
1386
1413
  */
1387
1414
  equals(other) {
1388
1415
  return this.x === other.x
@@ -1411,7 +1438,10 @@ export class Quaternion {
1411
1438
  * @return {boolean}
1412
1439
  */
1413
1440
  roughlyEquals(other, tolerance) {
1414
- return this._roughlyEquals(other.x, other.y, other.z, other.w, tolerance);
1441
+ return this._roughlyEquals(
1442
+ other.x, other.y, other.z, other.w,
1443
+ tolerance
1444
+ );
1415
1445
  }
1416
1446
 
1417
1447
  /**
@@ -1420,10 +1450,12 @@ export class Quaternion {
1420
1450
  * @param {number} y
1421
1451
  * @param {number} z
1422
1452
  * @param {number} w
1423
- * @param {number} [tolerance]
1453
+ * @param {number} [tolerance] acceptable difference value per coordinate
1424
1454
  * @return {boolean}
1425
1455
  */
1426
1456
  _roughlyEquals(x, y, z, w, tolerance = EPSILON) {
1457
+ assert.isNumber(tolerance, 'tolerance');
1458
+
1427
1459
  return epsilonEquals(this.x, x, tolerance)
1428
1460
  && epsilonEquals(this.y, y, tolerance)
1429
1461
  && epsilonEquals(this.z, z, tolerance)
@@ -1446,8 +1478,6 @@ export class Quaternion {
1446
1478
  const sqrt1u1 = Math.sqrt(1 - u1);
1447
1479
  const sqrtu1 = Math.sqrt(u1);
1448
1480
 
1449
- const PI2 = 2 * Math.PI;
1450
-
1451
1481
  const u2 = PI2 * random();
1452
1482
 
1453
1483
  const u3 = PI2 * random();
@@ -1,4 +1,6 @@
1
1
  /**
2
+ * Wrapper around a scalar value, `Vector1` is used for consistence with {@link Vector2} and {@link Vector3}
3
+ *
2
4
  * @author Alex Goldring
3
5
  * @copyright Company Named Limited (c) 2025
4
6
  */
@@ -19,7 +21,11 @@ export class Vector1 extends Number {
19
21
  */
20
22
  constructor(x?: number);
21
23
  x: number;
22
- onChanged: Signal<any, any, any, any, any, any, any, any>;
24
+ /**
25
+ *
26
+ * @type {Signal<number,number>}
27
+ */
28
+ onChanged: Signal<number, number>;
23
29
  /**
24
30
  *
25
31
  * @returns {string}
@@ -1 +1 @@
1
- {"version":3,"file":"Vector1.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector1.js"],"names":[],"mappings":"AAKA;;;GAGG;AACH;IA4QI;;;;;OAKG;IACH,kBAJW,OAAO,KACP,OAAO,GACN,MAAM,CAIjB;IAnRD;;;;;;OAMG;IACH,gBALW,MAAM,EAchB;IAHG,UAAU;IAEV,0DAA6B;IAWjC;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,iBAHW,OAAO,GACL,MAAM,CAIlB;IAED;;;;OAIG;IACH,OAHW,MAAM,GACJ,OAAO,CAgBnB;IAED;;;OAGG;IACH,aAFW,MAAM,QAOhB;IAED;;;OAGG;IACH,UAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,kBAEC;IAED;;;OAGG;IACH,kBAEC;IAED;;;;OAIG;IACH,iBAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,WAFW,OAAO,GAAC,OAAO,GAAC,OAAO,GAAC,OAAO,WAKzC;IAED;;;;OAIG;IACH,iBAFY,OAAO,CAIlB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,OAAO,GACL,OAAO,CAInB;IAED;;;OAGG;IACH,kBAFW,MAAM,QAIhB;IAED;;;;;OAKG;IACH,WAJW,MAAM,QACN,MAAM,GACJ,OAAO,CAInB;IAED;;;OAGG;IACH,eAEC;IAED;;;OAGG;IACH,YAFW,OAAO,GAAC,OAAO,GAAC,OAAO,GAAC,OAAO,QAIzC;IAED;;;OAGG;IACH,SAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,cAHW,OAAO,GACL,OAAO,CAInB;IAED;;OAEG;IACH,QAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,4BAGC;IAED,iBAEC;IAED,yBAEC;IAED;;;;OAIG;IACH,qBAHW,MAAM,EAAE,WACR,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,EAAE,WACR,MAAM,QAIhB;IAED,oBAEC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAItB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAMtB;IAkBD,iBAEC;IAND,gBAEC;IAaL;;;OAGG;IACH,oBAFU,OAAO,CAEU;IAXvB,sDAIC;CACJ;;kBAUS,MAAM;cAON,OAAO;aAOP,OAAO;;;mBArUE,4BAA4B"}
1
+ {"version":3,"file":"Vector1.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector1.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH;IAgRI;;;;;OAKG;IACH,kBAJW,OAAO,KACP,OAAO,GACN,MAAM,CAIjB;IAvRD;;;;;;OAMG;IACH,gBALW,MAAM,EAkBhB;IAPG,UAAU;IAEV;;;OAGG;IACH,WAFU,MAAM,CAAC,MAAM,EAAC,MAAM,CAAC,CAEF;IAWjC;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,iBAHW,OAAO,GACL,MAAM,CAIlB;IAED;;;;OAIG;IACH,OAHW,MAAM,GACJ,OAAO,CAgBnB;IAED;;;OAGG;IACH,aAFW,MAAM,QAOhB;IAED;;;OAGG;IACH,UAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,kBAEC;IAED;;;OAGG;IACH,kBAEC;IAED;;;;OAIG;IACH,iBAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,WAFW,OAAO,GAAC,OAAO,GAAC,OAAO,GAAC,OAAO,WAKzC;IAED;;;;OAIG;IACH,iBAFY,OAAO,CAIlB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,OAAO,GACL,OAAO,CAInB;IAED;;;OAGG;IACH,kBAFW,MAAM,QAIhB;IAED;;;;;OAKG;IACH,WAJW,MAAM,QACN,MAAM,GACJ,OAAO,CAInB;IAED;;;OAGG;IACH,eAEC;IAED;;;OAGG;IACH,YAFW,OAAO,GAAC,OAAO,GAAC,OAAO,GAAC,OAAO,QAIzC;IAED;;;OAGG;IACH,SAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,cAHW,OAAO,GACL,OAAO,CAInB;IAED;;OAEG;IACH,QAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,4BAGC;IAED,iBAEC;IAED,yBAEC;IAED;;;;OAIG;IACH,qBAHW,MAAM,EAAE,WACR,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAHW,MAAM,EAAE,WACR,MAAM,QAIhB;IAED,oBAEC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAItB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAMtB;IAkBD,iBAEC;IAND,gBAEC;IAaL;;;OAGG;IACH,oBAFU,OAAO,CAEU;IAXvB,sDAIC;CACJ;;kBAUS,MAAM;cAON,OAAO;aAOP,OAAO;;;mBA3UE,4BAA4B"}
@@ -4,6 +4,8 @@ import { clamp } from "../math/clamp.js";
4
4
  import { computeHashFloat } from "../primitives/numbers/computeHashFloat.js";
5
5
 
6
6
  /**
7
+ * Wrapper around a scalar value, `Vector1` is used for consistence with {@link Vector2} and {@link Vector3}
8
+ *
7
9
  * @author Alex Goldring
8
10
  * @copyright Company Named Limited (c) 2025
9
11
  */
@@ -23,6 +25,10 @@ export class Vector1 extends Number {
23
25
 
24
26
  this.x = x;
25
27
 
28
+ /**
29
+ *
30
+ * @type {Signal<number,number>}
31
+ */
26
32
  this.onChanged = new Signal();
27
33
  }
28
34
 
@@ -1,9 +1,19 @@
1
1
  /**
2
+ * Class representing a 2D vector. A 2D vector is an ordered pair of numbers (labeled x and y), which can be used to represent a number of things, such as:
3
+ *
4
+ * A point in 2D space (i.e. a position on a plane).
5
+ * A direction and length across a plane. The length will always be the Euclidean distance (straight-line distance) from `(0, 0)` to `(x, y)` and the direction is also measured from `(0, 0)` towards `(x, y)`.
6
+ * Any arbitrary ordered pair of numbers.
7
+ * There are other things a 2D vector can be used to represent, such as momentum vectors, complex numbers and so on, however these are the most common uses.
8
+ *
9
+ * Iterating through a Vector2 instance will yield its components `(x, y)` in the corresponding order.
10
+ *
11
+ * @implements Iterable<number>
2
12
  *
3
13
  * @author Alex Goldring
4
14
  * @copyright Company Named Limited (c) 2025
5
15
  */
6
- export class Vector2 {
16
+ export class Vector2 implements Iterable<number> {
7
17
  /**
8
18
  *
9
19
  * @param {number} [x=0]
@@ -1 +1 @@
1
- {"version":3,"file":"Vector2.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector2.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Vector2.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector2.js"],"names":[],"mappings":"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"}
@@ -13,6 +13,16 @@ import { v2_length } from "./vec2/v2_length.js";
13
13
  import { v2_length_sqr } from "./vec2/v2_length_sqr.js";
14
14
 
15
15
  /**
16
+ * Class representing a 2D vector. A 2D vector is an ordered pair of numbers (labeled x and y), which can be used to represent a number of things, such as:
17
+ *
18
+ * A point in 2D space (i.e. a position on a plane).
19
+ * A direction and length across a plane. The length will always be the Euclidean distance (straight-line distance) from `(0, 0)` to `(x, y)` and the direction is also measured from `(0, 0)` towards `(x, y)`.
20
+ * Any arbitrary ordered pair of numbers.
21
+ * There are other things a 2D vector can be used to represent, such as momentum vectors, complex numbers and so on, however these are the most common uses.
22
+ *
23
+ * Iterating through a Vector2 instance will yield its components `(x, y)` in the corresponding order.
24
+ *
25
+ * @implements Iterable<number>
16
26
  *
17
27
  * @author Alex Goldring
18
28
  * @copyright Company Named Limited (c) 2025
@@ -1,9 +1,19 @@
1
1
  /**
2
+ * Class representing a 3D vector. A 3D vector is an ordered triplet of numbers (labeled x, y, and z), which can be used to represent a number of things, such as:
3
+ *
4
+ * A point in 3D space.
5
+ * A direction and length in 3D space. The length will always be the Euclidean distance (straight-line distance) from `(0, 0, 0)` to `(x, y, z)` and the direction is also measured from `(0, 0, 0)` towards `(x, y, z)`.
6
+ * Any arbitrary ordered triplet of numbers.
7
+ * There are other things a 3D vector can be used to represent, such as momentum vectors and so on, however these are the most common uses.
8
+ *
9
+ * Iterating through a Vector3 instance will yield its components `(x, y, z)` in the corresponding order.
10
+ *
11
+ * @implements Iterable<number>
2
12
  *
3
13
  * @author Alex Goldring
4
14
  * @copyright Company Named Limited (c) 2025
5
15
  */
6
- export class Vector3 {
16
+ export class Vector3 implements Iterable<number> {
7
17
  /**
8
18
  * Dot product
9
19
  * @param {Vector3|Vector4} a
@@ -36,7 +46,6 @@ export class Vector3 {
36
46
  * @param {number} [x=0]
37
47
  * @param {number} [y=0]
38
48
  * @param {number} [z=0]
39
- * @constructor
40
49
  */
41
50
  constructor(x?: number, y?: number, z?: number);
42
51
  /**
@@ -58,6 +67,7 @@ export class Vector3 {
58
67
  */
59
68
  readonly z: number;
60
69
  /**
70
+ * Dispatches ( x, y, z, old_x, old_y, old_z )
61
71
  * @readonly
62
72
  * @type {Signal<number,number,number,number,number,number>}
63
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":"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"}
@@ -14,6 +14,16 @@ import { v3_slerp } from "./vec3/v3_slerp.js";
14
14
 
15
15
 
16
16
  /**
17
+ * Class representing a 3D vector. A 3D vector is an ordered triplet of numbers (labeled x, y, and z), which can be used to represent a number of things, such as:
18
+ *
19
+ * A point in 3D space.
20
+ * A direction and length in 3D space. The length will always be the Euclidean distance (straight-line distance) from `(0, 0, 0)` to `(x, y, z)` and the direction is also measured from `(0, 0, 0)` towards `(x, y, z)`.
21
+ * Any arbitrary ordered triplet of numbers.
22
+ * There are other things a 3D vector can be used to represent, such as momentum vectors and so on, however these are the most common uses.
23
+ *
24
+ * Iterating through a Vector3 instance will yield its components `(x, y, z)` in the corresponding order.
25
+ *
26
+ * @implements Iterable<number>
17
27
  *
18
28
  * @author Alex Goldring
19
29
  * @copyright Company Named Limited (c) 2025
@@ -24,7 +34,6 @@ export class Vector3 {
24
34
  * @param {number} [x=0]
25
35
  * @param {number} [y=0]
26
36
  * @param {number} [z=0]
27
- * @constructor
28
37
  */
29
38
  constructor(x = 0, y = 0, z = 0) {
30
39
  assert.isNumber(x, 'x');
@@ -58,6 +67,7 @@ export class Vector3 {
58
67
  this.z = z;
59
68
 
60
69
  /**
70
+ * Dispatches ( x, y, z, old_x, old_y, old_z )
61
71
  * @readonly
62
72
  * @type {Signal<number,number,number,number,number,number>}
63
73
  */
@@ -1,4 +1,16 @@
1
- export class Vector4 {
1
+ /**
2
+ * Class representing a 4D vector. A 4D vector is an ordered quadruplet of numbers (labeled x, y, z, and w), which can be used to represent a number of things, such as:
3
+ *
4
+ * A point in 4D space.
5
+ * A direction and length in 4D space. The length will always be the Euclidean distance (straight-line distance) from `(0, 0, 0, 0)` to `(x, y, z, w)` and the direction is also measured from `(0, 0, 0, 0)` towards `(x, y, z, w)`.
6
+ * Any arbitrary ordered quadruplet of numbers.
7
+ * There are other things a 4D vector can be used to represent, however these are the most common uses.
8
+ *
9
+ * Iterating through a Vector4 instance will yield its components (x, y, z, w) in the corresponding order.
10
+ *
11
+ * @implements Iterable<number>
12
+ */
13
+ export class Vector4 implements Iterable<number> {
2
14
  /**
3
15
  *
4
16
  * @param {Vector4} v0
@@ -149,11 +161,17 @@ export class Vector4 {
149
161
  */
150
162
  add3(v3: Vector3 | Vector4): Vector4;
151
163
  /**
152
- *
164
+ * @deprecated use {@link applyMatrix4} directly instead
153
165
  * @param {Matrix4} m
154
166
  * @returns {Vector4} this
155
167
  */
156
168
  threeApplyMatrix4(m: Matrix4): Vector4;
169
+ /**
170
+ *
171
+ * @param {number[]|Float32Array} m 4x4 transformation matrix
172
+ * @return {Vector4}
173
+ */
174
+ applyMatrix4(m: number[] | Float32Array): Vector4;
157
175
  /**
158
176
  *
159
177
  * @param {Vector4} vec4
@@ -1 +1 @@
1
- {"version":3,"file":"Vector4.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector4.js"],"names":[],"mappings":"AAMA;IAsbI;;;;;;OAMG;IACH,gBALW,OAAO,MACP,OAAO,qBAEP,OAAO,QASjB;IAncD;;;;;;;;OAQG;IACH,gBAPW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,EAsChB;IA3BG;;;OAGG;IACH,GAFU,MAAM,CAEN;IACV;;;OAGG;IACH,GAFU,MAAM,CAEN;IACV;;;OAGG;IACH,GAFU,MAAM,CAEN;IACV;;;OAGG;IACH,GAFU,MAAM,CAEN;IAEV;;;;OAIG;IACH,oBAFU,MAAM,CAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,CAAC,CAE5C;IAWjC;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAdD;;;OAGG;IACH,SAFa,MAAM,CAIlB;IAkBD;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAdD;;;OAGG;IACH,SAFa,MAAM,CAIlB;IAkBD;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAdD;;;OAGG;IACH,SAFa,MAAM,CAIlB;IAkBD;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAdD;;;OAGG;IACH,SAFa,MAAM,CAIlB;IAUD;;;;OAIG;IACH,qBAHW,MAAM,EAAE,WACR,MAAM,QAShB;IAED;;;;OAIG;IACH,oBAHW,MAAM,EAAE,WACR,MAAM,QAOhB;IAED;;;;;;;OAOG;IACH,iDAFa,OAAO,CAkCnB;IAED;;;OAGG;IACH,oBAFW,OAAO,QAQjB;IAED;;;;OAIG;IACH,+BAFa,OAAO,CAOnB;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,kBAlBW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAoBnB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,MAAM,CAIlB;IAED;;;;OAIG;IACH,SAHW,OAAO,GAAC,OAAO,GACb,OAAO,CASnB;IAED;;;;OAIG;IACH,qBAHW,OAAO,GACL,OAAO,CAUnB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,OAAO,CAInB;IAED;;;OAGG;IACH,SAFa,OAAO,CAQnB;IAED;;;OAGG;IACH,mBAFW,UAAU,QAyBpB;IAED;;;;OAIG;IACH,aAHW,OAAO,GACL,OAAO,CAInB;IAED;;;OAGG;IACH,QAFY,MAAM,CASjB;IAED;;;;OAIG;IACH,gBAJW,OAAO,MACP,OAAO,mBAKjB;IAuGL,kBAnGe,MAAM,EAAE,UAmGE;IA1FrB;;OAEG;IACH,WAFa,MAAM,EAAE,CAQpB;IAED;;;;OAIG;IACH,mBAHW,MAAM,EAAE,UACR,MAAM,QAIhB;IAED;;;;;MAOC;IAED,0BAEC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAOtB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAStB;IA4BL;;;OAGG;IACH,oBAFU,OAAO,CAEU;IAE3B,mBA7Ve,MAAM,EAAE,WACR,MAAM,UA4VM;IAhCvB,sDAOC;CAiBJ;;kBAaS,MAAM"}
1
+ {"version":3,"file":"Vector4.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector4.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AACH,gCAFe,QAAQ,CAAC,MAAM;IAgc1B;;;;;;OAMG;IACH,gBALW,OAAO,MACP,OAAO,qBAEP,OAAO,QASjB;IA3cD;;;;;;;;OAQG;IACH,gBAPW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,EAsChB;IA3BG;;;OAGG;IACH,GAFU,MAAM,CAEN;IACV;;;OAGG;IACH,GAFU,MAAM,CAEN;IACV;;;OAGG;IACH,GAFU,MAAM,CAEN;IACV;;;OAGG;IACH,GAFU,MAAM,CAEN;IAEV;;;;OAIG;IACH,oBAFU,MAAM,CAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,CAAC,CAE5C;IAWjC;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAdD;;;OAGG;IACH,SAFa,MAAM,CAIlB;IAkBD;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAdD;;;OAGG;IACH,SAFa,MAAM,CAIlB;IAkBD;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAdD;;;OAGG;IACH,SAFa,MAAM,CAIlB;IAkBD;;;OAGG;IACH,SAFW,MAAM,EAIhB;IAdD;;;OAGG;IACH,SAFa,MAAM,CAIlB;IAUD;;;;OAIG;IACH,qBAHW,MAAM,EAAE,WACR,MAAM,QAShB;IAED;;;;OAIG;IACH,oBAHW,MAAM,EAAE,WACR,MAAM,QAOhB;IAED;;;;;;;OAOG;IACH,iDAFa,OAAO,CAkCnB;IAED;;;OAGG;IACH,oBAFW,OAAO,QAQjB;IAED;;;;OAIG;IACH,+BAFa,OAAO,CAOnB;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,kBAlBW,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,GACJ,OAAO,CAoBnB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,MAAM,CAIlB;IAED;;;;OAIG;IACH,SAHW,OAAO,GAAC,OAAO,GACb,OAAO,CASnB;IAED;;;;OAIG;IACH,qBAHW,OAAO,GACL,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,MAAM,EAAE,GAAC,YAAY,GACpB,OAAO,CASlB;IAED;;;;OAIG;IACH,WAHW,OAAO,GACL,OAAO,CAInB;IAED;;;OAGG;IACH,SAFa,OAAO,CAQnB;IAED;;;OAGG;IACH,mBAFW,UAAU,QAyBpB;IAED;;;;OAIG;IACH,aAHW,OAAO,GACL,OAAO,CAInB;IAED;;;OAGG;IACH,QAFY,MAAM,CASjB;IAED;;;;OAIG;IACH,gBAJW,OAAO,MACP,OAAO,mBAKjB;IAuGL,kBAnGe,MAAM,EAAE,UAmGE;IA1FrB;;OAEG;IACH,WAFa,MAAM,EAAE,CAQpB;IAED;;;;OAIG;IACH,mBAHW,MAAM,EAAE,UACR,MAAM,QAIhB;IAED;;;;;MAOC;IAED,0BAEC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAOtB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAStB;IA4BL;;;OAGG;IACH,oBAFU,OAAO,CAEU;IAE3B,mBArWe,MAAM,EAAE,WACR,MAAM,UAoWM;IAhCvB,sDAOC;CAiBJ;;kBAaS,MAAM"}
@@ -4,6 +4,18 @@ import { Signal } from "../events/signal/Signal.js";
4
4
  import { lerp } from "../math/lerp.js";
5
5
  import { computeHashFloat } from "../primitives/numbers/computeHashFloat.js";
6
6
 
7
+ /**
8
+ * Class representing a 4D vector. A 4D vector is an ordered quadruplet of numbers (labeled x, y, z, and w), which can be used to represent a number of things, such as:
9
+ *
10
+ * A point in 4D space.
11
+ * A direction and length in 4D space. The length will always be the Euclidean distance (straight-line distance) from `(0, 0, 0, 0)` to `(x, y, z, w)` and the direction is also measured from `(0, 0, 0, 0)` towards `(x, y, z, w)`.
12
+ * Any arbitrary ordered quadruplet of numbers.
13
+ * There are other things a 4D vector can be used to represent, however these are the most common uses.
14
+ *
15
+ * Iterating through a Vector4 instance will yield its components (x, y, z, w) in the corresponding order.
16
+ *
17
+ * @implements Iterable<number>
18
+ */
7
19
  export class Vector4 {
8
20
  /**
9
21
  *
@@ -270,17 +282,25 @@ export class Vector4 {
270
282
  }
271
283
 
272
284
  /**
273
- *
285
+ * @deprecated use {@link applyMatrix4} directly instead
274
286
  * @param {Matrix4} m
275
287
  * @returns {Vector4} this
276
288
  */
277
289
  threeApplyMatrix4(m) {
278
- const e = m.elements;
290
+ return this.applyMatrix4(m.elements);
291
+ }
292
+
293
+ /**
294
+ *
295
+ * @param {number[]|Float32Array} m 4x4 transformation matrix
296
+ * @return {Vector4}
297
+ */
298
+ applyMatrix4(m) {
279
299
  return this._applyMatrix4(
280
- e[0], e[1], e[2], e[3],
281
- e[4], e[5], e[6], e[7],
282
- e[8], e[9], e[10], e[11],
283
- e[12], e[13], e[14], e[15]
300
+ m[0], m[1], m[2], m[3],
301
+ m[4], m[5], m[6], m[7],
302
+ m[8], m[9], m[10], m[11],
303
+ m[12], m[13], m[14], m[15]
284
304
  );
285
305
  }
286
306