@woosh/meep-engine 2.121.0 → 2.121.1

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 (46) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/core/collection/map/HashMap.d.ts.map +1 -1
  4. package/src/core/collection/map/HashMap.js +29 -2
  5. package/src/core/geom/2d/aabb/aabb2_intersects_point.d.ts +12 -0
  6. package/src/core/geom/2d/aabb/aabb2_intersects_point.d.ts.map +1 -0
  7. package/src/core/geom/2d/aabb/aabb2_intersects_point.js +17 -0
  8. package/src/core/geom/2d/quad-tree/QuadTreeNode.d.ts +17 -6
  9. package/src/core/geom/2d/quad-tree/QuadTreeNode.d.ts.map +1 -1
  10. package/src/core/geom/2d/quad-tree/QuadTreeNode.js +59 -98
  11. package/src/core/geom/2d/quad-tree/qt_collect_by_box.d.ts +14 -0
  12. package/src/core/geom/2d/quad-tree/qt_collect_by_box.d.ts.map +1 -0
  13. package/src/core/geom/2d/quad-tree/qt_collect_by_box.js +90 -0
  14. package/src/core/geom/2d/quad-tree/qt_collect_by_point.d.ts +11 -0
  15. package/src/core/geom/2d/quad-tree/qt_collect_by_point.d.ts.map +1 -0
  16. package/src/core/geom/2d/quad-tree/qt_collect_by_point.js +85 -0
  17. package/src/core/geom/3d/ray/ray3_distance_to_point.d.ts +14 -1
  18. package/src/core/geom/3d/ray/ray3_distance_to_point.d.ts.map +1 -1
  19. package/src/core/geom/3d/ray/ray3_distance_to_point.js +18 -1
  20. package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
  21. package/src/core/geom/3d/shape/UnionShape3D.js +4 -0
  22. package/src/core/geom/3d/shape/UnitCubeShape3D.d.ts.map +1 -1
  23. package/src/core/geom/3d/shape/UnitCubeShape3D.js +4 -0
  24. package/src/core/geom/ConicRay.d.ts +5 -1
  25. package/src/core/geom/ConicRay.d.ts.map +1 -1
  26. package/src/core/geom/ConicRay.js +5 -1
  27. package/src/core/geom/Vector3.d.ts.map +1 -1
  28. package/src/core/geom/Vector3.js +10 -2
  29. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts.map +1 -1
  30. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.js +3 -0
  31. package/src/core/geom/packing/max-rect/cutArea.d.ts.map +1 -1
  32. package/src/core/geom/packing/max-rect/cutArea.js +8 -1
  33. package/src/core/geom/packing/max-rect/findBestContainer.d.ts +4 -4
  34. package/src/core/geom/packing/max-rect/findBestContainer.d.ts.map +1 -1
  35. package/src/core/geom/packing/max-rect/findBestContainer.js +30 -8
  36. package/src/core/geom/packing/max-rect/packOneBox.d.ts.map +1 -1
  37. package/src/core/geom/packing/max-rect/packOneBox.js +7 -2
  38. package/src/core/geom/packing/max-rect/removeRedundantBoxesArray.d.ts.map +1 -1
  39. package/src/core/geom/packing/max-rect/removeRedundantBoxesArray.js +13 -7
  40. package/src/core/geom/packing/miniball/Miniball.d.ts.map +1 -1
  41. package/src/core/geom/packing/miniball/Miniball.js +27 -1
  42. package/src/core/geom/packing/miniball/PointSet.d.ts.map +1 -1
  43. package/src/core/geom/packing/miniball/PointSet.js +25 -4
  44. package/src/core/geom/packing/miniball/Quality.js +1 -3
  45. package/src/view/View.d.ts.map +1 -1
  46. package/src/view/View.js +14 -1
@@ -0,0 +1,85 @@
1
+ import { assert } from "../../../assert.js";
2
+ import { aabb2_intersects_point } from "../aabb/aabb2_intersects_point.js";
3
+
4
+ /**
5
+ *
6
+ * @type {QuadTreeNode[]}
7
+ */
8
+ const node_stack = [];
9
+
10
+ /**
11
+ * @template T
12
+ * @param {Array<QuadTreeDatum<T>>} result
13
+ * @param {number} result_offset
14
+ * @param {QuadTreeNode<T>} tree
15
+ * @param {number} x
16
+ * @param {number} y
17
+ * @returns {number}
18
+ */
19
+ export function qt_collect_by_point(
20
+ result, result_offset,
21
+ tree,
22
+ x, y
23
+ ) {
24
+ assert.isArray(result, 'result');
25
+ assert.isNonNegativeInteger(result_offset, 'result_offset');
26
+ assert.defined(tree, 'tree');
27
+ assert.notNull(tree, 'tree');
28
+ assert.equal(tree.isQuadTreeNode, true, 'tree.isQuadTreeNode !== true');
29
+ assert.isNumber(x, 'x');
30
+ assert.isNumber(y, 'y');
31
+
32
+ let result_cursor = result_offset;
33
+
34
+ let stack_pointer = 1;
35
+
36
+ node_stack[0] = tree;
37
+
38
+ while (stack_pointer-- > 0) {
39
+
40
+ const node = node_stack[stack_pointer];
41
+
42
+ if (!aabb2_intersects_point(node.x0, node.y0, node.x1, node.y1, x, y)) {
43
+ // not a match
44
+ continue;
45
+ }
46
+
47
+ const data = node.data;
48
+ const data_count = data.length;
49
+
50
+ for (let i = 0; i < data_count; i++) {
51
+ const datum = data[i];
52
+
53
+ if (aabb2_intersects_point(datum.x0, datum.y0, datum.x1, datum.y1, x, y)) {
54
+ result[result_cursor++] = datum;
55
+ }
56
+ }
57
+
58
+ if (node.isSplit()) {
59
+ const hx = (node.x0 + node.x1) * 0.5;
60
+ const hy = (node.y0 + node.y1) * 0.5;
61
+
62
+ if (hx >= x) {
63
+ if (hy >= y) {
64
+ node_stack[stack_pointer++] = node.topLeft;
65
+ }
66
+ if (hy <= y) {
67
+ node_stack[stack_pointer++] = node.bottomLeft;
68
+ }
69
+ }
70
+
71
+ if (hx <= x) {
72
+ if (hy >= y) {
73
+ node_stack[stack_pointer++] = node.topRight;
74
+ }
75
+ if (hy <= y) {
76
+ node_stack[stack_pointer++] = node.bottomRight;
77
+ }
78
+ }
79
+
80
+
81
+ }
82
+ }
83
+
84
+ return result_cursor - result_offset;
85
+ }
@@ -1,2 +1,15 @@
1
- export function ray3_distance_to_point(origin_x: any, origin_y: any, origin_z: any, direction_x: any, direction_y: any, direction_z: any, ref_x: any, ref_y: any, ref_z: any): number;
1
+ /**
2
+ *
3
+ * @param {number} origin_x
4
+ * @param {number} origin_y
5
+ * @param {number} origin_z
6
+ * @param {number} direction_x
7
+ * @param {number} direction_y
8
+ * @param {number} direction_z
9
+ * @param {number} ref_x
10
+ * @param {number} ref_y
11
+ * @param {number} ref_z
12
+ * @return {number}
13
+ */
14
+ export function ray3_distance_to_point(origin_x: number, origin_y: number, origin_z: number, direction_x: number, direction_y: number, direction_z: number, ref_x: number, ref_y: number, ref_z: number): number;
2
15
  //# sourceMappingURL=ray3_distance_to_point.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ray3_distance_to_point.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/ray/ray3_distance_to_point.js"],"names":[],"mappings":"AAEA,sLAWC"}
1
+ {"version":3,"file":"ray3_distance_to_point.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/ray/ray3_distance_to_point.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,iDAXW,MAAM,YACN,MAAM,YACN,MAAM,eACN,MAAM,eACN,MAAM,eACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,GACL,MAAM,CAiBjB"}
@@ -1,6 +1,23 @@
1
1
  import { v3_dot } from "../../vec3/v3_dot.js";
2
2
 
3
- export function ray3_distance_to_point(origin_x, origin_y, origin_z, direction_x, direction_y, direction_z, ref_x, ref_y, ref_z){
3
+ /**
4
+ *
5
+ * @param {number} origin_x
6
+ * @param {number} origin_y
7
+ * @param {number} origin_z
8
+ * @param {number} direction_x
9
+ * @param {number} direction_y
10
+ * @param {number} direction_z
11
+ * @param {number} ref_x
12
+ * @param {number} ref_y
13
+ * @param {number} ref_z
14
+ * @return {number}
15
+ */
16
+ export function ray3_distance_to_point(
17
+ origin_x, origin_y, origin_z,
18
+ direction_x, direction_y, direction_z,
19
+ ref_x, ref_y, ref_z
20
+ ) {
4
21
  // find the closest point
5
22
  const sp0_x = ref_x - origin_x;
6
23
  const sp0_y = ref_y - origin_y;
@@ -1 +1 @@
1
- {"version":3,"file":"UnionShape3D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/shape/UnionShape3D.js"],"names":[],"mappings":"AA0BA;IAqII;;;;OAIG;IACH,sBAHW,eAAe,EAAE,GACf,YAAY,CAUxB;IA9IG;;;OAGG;IACH,UAFU,eAAe,EAAE,CAET;IAElB;;;;;OAKG;IACH,kCAAmC;IAEnC,qBAAsB;IACtB,qBAAuB;IACvB,uBAAyB;IAG7B,wCAgCC;IAED;;;OAGG;IACH,mCAkBC;IAED;;;OAGG;IACH,2CA8CC;IAiBD,qBAuBC;IAED,2BAYC;IAED,mEAEC;IAED,6CAaC;IAED,oCAYC;IAED,kFAoDC;IAED,qGAyBC;IAED;;;;OAIG;IACH,cAHW,YAAY,GACV,OAAO,CAKnB;IAED,eAWC;CACJ;gCArV+B,sBAAsB"}
1
+ {"version":3,"file":"UnionShape3D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/shape/UnionShape3D.js"],"names":[],"mappings":"AA2BA;IAqII;;;;OAIG;IACH,sBAHW,eAAe,EAAE,GACf,YAAY,CAYxB;IAhJG;;;OAGG;IACH,UAFU,eAAe,EAAE,CAET;IAElB;;;;;OAKG;IACH,kCAAmC;IAEnC,qBAAsB;IACtB,qBAAuB;IACvB,uBAAyB;IAG7B,wCAgCC;IAED;;;OAGG;IACH,mCAkBC;IAED;;;OAGG;IACH,2CA8CC;IAmBD,qBAuBC;IAED,2BAaC;IAED,mEAEC;IAED,6CAaC;IAED,oCAYC;IAED,kFAoDC;IAED,qGAyBC;IAED;;;;OAIG;IACH,cAHW,YAAY,GACV,OAAO,CAKnB;IAED,eAWC;CACJ;gCAxV+B,sBAAsB"}
@@ -1,3 +1,4 @@
1
+ import { assert } from "../../../assert.js";
1
2
  import { array_copy } from "../../../collection/array/array_copy.js";
2
3
  import { binarySearchHighIndex } from "../../../collection/array/binarySearchHighIndex.js";
3
4
  import { isArrayEqual } from "../../../collection/array/isArrayEqual.js";
@@ -163,6 +164,8 @@ export class UnionShape3D extends AbstractShape3D {
163
164
  * @returns {UnionShape3D}
164
165
  */
165
166
  static from(children) {
167
+ assert.isArray(children, 'children');
168
+
166
169
  const r = new UnionShape3D();
167
170
 
168
171
  r.children = children;
@@ -205,6 +208,7 @@ export class UnionShape3D extends AbstractShape3D {
205
208
  for (let i = 0; i < child_count; i++) {
206
209
  const child = children[i];
207
210
 
211
+ // TODO this is incorrect math
208
212
  r += child.surface_area;
209
213
  }
210
214
 
@@ -1 +1 @@
1
- {"version":3,"file":"UnitCubeShape3D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/shape/UnitCubeShape3D.js"],"names":[],"mappings":"AAUA;IAkFI,iCAAwC;IAhFxC,qBAEC;IAED,wCAQC;IAED,4DAYC;IAED,qGAIC;IAED,mEAEC;IAED,6CAqBC;IAED,oCASC;IAED,kFAEC;IAED,eAEC;CAGJ;gCAtF+B,sBAAsB"}
1
+ {"version":3,"file":"UnitCubeShape3D.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/shape/UnitCubeShape3D.js"],"names":[],"mappings":"AAUA;IAsFI,iCAAwC;IApFxC,qBAEC;IAED,2BAEC;IAED,wCAQC;IAED,4DAYC;IAED,qGAIC;IAED,mEAEC;IAED,6CAqBC;IAED,oCASC;IAED,kFAEC;IAED,eAEC;CAGJ;gCA1F+B,sBAAsB"}
@@ -14,6 +14,10 @@ export class UnitCubeShape3D extends AbstractShape3D {
14
14
  return 1;
15
15
  }
16
16
 
17
+ get surface_area() {
18
+ return 6;
19
+ }
20
+
17
21
  compute_bounding_box(result) {
18
22
  result[0] = -0.5;
19
23
  result[1] = -0.5;
@@ -49,10 +49,14 @@ export class ConicRay {
49
49
  /**
50
50
  *
51
51
  * @param {ConicRay} other
52
- * @param {number} tolerance
52
+ * @param {number} [tolerance]
53
53
  * @returns {boolean}
54
54
  */
55
55
  roughlyEquals(other: ConicRay, tolerance?: number): boolean;
56
+ /**
57
+ *
58
+ * @return {number}
59
+ */
56
60
  hash(): number;
57
61
  /**
58
62
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ConicRay.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/ConicRay.js"],"names":[],"mappings":"AAQA;;;;GAIG;AACH;IA8KI;;;;;;;OAOG;IACH,sBANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,MAAM,GACJ,QAAQ,CAkBpB;IApMD;;;;OAIG;IACH,oBAFU,OAAO,CAEgB;IAEjC;;;;OAIG;IACH,OAFU,MAAM,CAEN;IAEV;;;MAKC;IAED,0BAGC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAKtB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAQtB;IAED;;;;OAIG;IACH,cAHW,QAAQ,GACN,OAAO,CAMnB;IAED;;;;;OAKG;IACH,qBAJW,QAAQ,cACR,MAAM,GACJ,OAAO,CAKnB;IAED,eAKC;IAED;;;OAGG;IACH,YAFW,QAAQ,QAKlB;IAED;;;;OAIG;IACH,4BAHW,OAAO,GACL,OAAO,CAMnB;IAED;;;;;OAKG;IACH,gDAFW,OAAO,QAsEjB;CA2BJ;oBA/MmB,cAAc"}
1
+ {"version":3,"file":"ConicRay.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/ConicRay.js"],"names":[],"mappings":"AAQA;;;;GAIG;AACH;IAkLI;;;;;;;OAOG;IACH,sBANW,MAAM,KACN,MAAM,KACN,MAAM,cACN,MAAM,GACJ,QAAQ,CAkBpB;IAxMD;;;;OAIG;IACH,oBAFU,OAAO,CAEgB;IAEjC;;;;OAIG;IACH,OAFU,MAAM,CAEN;IAEV;;;MAKC;IAED,0BAGC;IAED;;;OAGG;IACH,uBAFW,YAAY,QAKtB;IAED;;;OAGG;IACH,yBAFW,YAAY,QAQtB;IAED;;;;OAIG;IACH,cAHW,QAAQ,GACN,OAAO,CAMnB;IAED;;;;;OAKG;IACH,qBAJW,QAAQ,cACR,MAAM,GACJ,OAAO,CAKnB;IAED;;;OAGG;IACH,QAFY,MAAM,CAOjB;IAED;;;OAGG;IACH,YAFW,QAAQ,QAKlB;IAED;;;;OAIG;IACH,4BAHW,OAAO,GACL,OAAO,CAMnB;IAED;;;;;OAKG;IACH,gDAFW,OAAO,QAsEjB;CA2BJ;oBAnNmB,cAAc"}
@@ -74,7 +74,7 @@ export class ConicRay {
74
74
  /**
75
75
  *
76
76
  * @param {ConicRay} other
77
- * @param {number} tolerance
77
+ * @param {number} [tolerance]
78
78
  * @returns {boolean}
79
79
  */
80
80
  roughlyEquals(other, tolerance = EPSILON) {
@@ -82,6 +82,10 @@ export class ConicRay {
82
82
  && this.direction.roughlyEquals(other.direction, tolerance);
83
83
  }
84
84
 
85
+ /**
86
+ *
87
+ * @return {number}
88
+ */
85
89
  hash() {
86
90
  return combine_hash(
87
91
  computeHashFloat(this.angle),
@@ -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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"}
@@ -414,7 +414,11 @@ class Vector3 {
414
414
  * @returns {Vector3}
415
415
  */
416
416
  abs() {
417
- return this.set(Math.abs(this.x), Math.abs(this.y), Math.abs(this.z));
417
+ return this.set(
418
+ Math.abs(this.x),
419
+ Math.abs(this.y),
420
+ Math.abs(this.z)
421
+ );
418
422
  }
419
423
 
420
424
  /**
@@ -569,7 +573,11 @@ class Vector3 {
569
573
  * @returns {Vector3}
570
574
  */
571
575
  sign() {
572
- return this.set(sign(this.x), sign(this.y), sign(this.z));
576
+ return this.set(
577
+ sign(this.x),
578
+ sign(this.y),
579
+ sign(this.z)
580
+ );
573
581
  }
574
582
 
575
583
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MaxRectanglesPacker.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/max-rect/MaxRectanglesPacker.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH;IACI;;;;OAIG;IACH,mBAHW,MAAM,UACN,MAAM,EAmBhB;IAhBG,cAAsC;IAEtC;;;OAGG;IACH,wBAAiD;IAKjD;;;OAGG;IACH,OAFU,KAAK,EAAE,CAEF;IAGnB;;;;OAIG;IACH,YAHW,KAAK,GACH,OAAO,CAoBnB;IAED;;;;OAIG;IACH,kBAHW,KAAK,EAAE,GACL,MAAM,CAgBlB;IAED;;;;OAIG;IACH,SAHW,KAAK,GACH,OAAO,CAanB;IAED;;;;;;OAMG;IACH,UAJW,MAAM,KACN,MAAM,GACL,OAAO,CAIlB;IAED;;;;OAIG;IACH,eAHW,KAAK,EAAE,GACL,OAAO,CA8CnB;IAED;;;OAGG;IACH,UAFa,OAAO,CAWnB;IAED;;OAEG;IACH,cAKC;IAED;;;;;OAKG;IACH,cAJW,MAAM,UACN,MAAM,GACJ,OAAO,CA2BnB;IAED,oBAsBC;CACJ;oBAnPmB,kBAAkB;6BADT,oCAAoC;kBAF/C,wBAAwB"}
1
+ {"version":3,"file":"MaxRectanglesPacker.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/max-rect/MaxRectanglesPacker.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH;IACI;;;;OAIG;IACH,mBAHW,MAAM,UACN,MAAM,EAmBhB;IAhBG,cAAsC;IAEtC;;;OAGG;IACH,wBAAiD;IAKjD;;;OAGG;IACH,OAFU,KAAK,EAAE,CAEF;IAGnB;;;;OAIG;IACH,YAHW,KAAK,GACH,OAAO,CAoBnB;IAED;;;;OAIG;IACH,kBAHW,KAAK,EAAE,GACL,MAAM,CAgBlB;IAED;;;;OAIG;IACH,SAHW,KAAK,GACH,OAAO,CAanB;IAED;;;;;;OAMG;IACH,UAJW,MAAM,KACN,MAAM,GACL,OAAO,CAIlB;IAED;;;;OAIG;IACH,eAHW,KAAK,EAAE,GACL,OAAO,CAiDnB;IAED;;;OAGG;IACH,UAFa,OAAO,CAWnB;IAED;;OAEG;IACH,cAKC;IAED;;;;;OAKG;IACH,cAJW,MAAM,UACN,MAAM,GACJ,OAAO,CA2BnB;IAED,oBAsBC;CACJ;oBAtPmB,kBAAkB;6BADT,oCAAoC;kBAF/C,wBAAwB"}
@@ -120,6 +120,9 @@ export class MaxRectanglesPacker {
120
120
  * @returns {boolean}
121
121
  */
122
122
  addMany(boxes) {
123
+ assert.defined(boxes,'boxes');
124
+ assert.isArray(boxes,'boxes');
125
+
123
126
  // assert.ok(this.validate());
124
127
 
125
128
  const numBoxes = boxes.length;
@@ -1 +1 @@
1
- {"version":3,"file":"cutArea.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/max-rect/cutArea.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,iCAHW,KAAK,SACL,YAAY,QAsEtB"}
1
+ {"version":3,"file":"cutArea.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/max-rect/cutArea.js"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,iCAHW,KAAK,SACL,YAAY,QA4EtB"}
@@ -1,3 +1,4 @@
1
+ import { assert } from "../../../assert.js";
1
2
  import { max2 } from "../../../math/max2.js";
2
3
  import { min2 } from "../../../math/min2.js";
3
4
  import { QuadTreeDatum } from "../../2d/quad-tree/QuadTreeDatum.js";
@@ -8,7 +9,13 @@ import { removeRedundantBoxesArray } from "./removeRedundantBoxesArray.js";
8
9
  * @param {AABB2} scissor area to be cut out
9
10
  * @param {QuadTreeNode} boxes
10
11
  */
11
- export function cutArea(scissor, boxes) {
12
+ export function cutArea(
13
+ scissor,
14
+ boxes
15
+ ) {
16
+
17
+ assert.defined(scissor, 'scissor');
18
+ assert.defined(boxes, 'boxes');
12
19
 
13
20
  /**
14
21
  *
@@ -1,10 +1,10 @@
1
1
  /**
2
- *
2
+ * @template T
3
3
  * @param {number} width
4
4
  * @param {number} height
5
- * @param {QuadTreeNode} boxes
5
+ * @param {QuadTreeNode<T>} boxes
6
6
  * @param {function(containerWidth:number, containerHeight:number, childWidth:number, childHeight:number):number} costFunction
7
- * @returns {QuadTreeDatum} suitable container box
7
+ * @returns {QuadTreeDatum<T>} suitable container box
8
8
  */
9
- export function findBestContainer(width: number, height: number, boxes: QuadTreeNode, costFunction: any): QuadTreeDatum;
9
+ export function findBestContainer<T>(width: number, height: number, boxes: QuadTreeNode<T>, costFunction: any): QuadTreeDatum<T>;
10
10
  //# sourceMappingURL=findBestContainer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"findBestContainer.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/max-rect/findBestContainer.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,yCANW,MAAM,UACN,MAAM,SACN,YAAY,sBAEV,aAAa,CAmDzB"}
1
+ {"version":3,"file":"findBestContainer.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/max-rect/findBestContainer.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,kCAPa,CAAC,SACH,MAAM,UACN,MAAM,SACN,YAAY,CAAC,CAAC,CAAC,sBAEb,aAAa,CAAC,CAAC,CAAC,CAuE5B"}
@@ -1,16 +1,34 @@
1
+ import { assert } from "../../../assert.js";
2
+
1
3
  /**
2
- *
4
+ * @template T
3
5
  * @param {number} width
4
6
  * @param {number} height
5
- * @param {QuadTreeNode} boxes
7
+ * @param {QuadTreeNode<T>} boxes
6
8
  * @param {function(containerWidth:number, containerHeight:number, childWidth:number, childHeight:number):number} costFunction
7
- * @returns {QuadTreeDatum} suitable container box
9
+ * @returns {QuadTreeDatum<T>} suitable container box
8
10
  */
9
- export function findBestContainer(width, height, boxes, costFunction) {
11
+ export function findBestContainer(
12
+ width,
13
+ height,
14
+ boxes,
15
+ costFunction
16
+ ) {
17
+
18
+ assert.isNumber(width,'width');
19
+ assert.isNumber(height,'height');
20
+ assert.defined(boxes,'boxes');
21
+ assert.isFunction(costFunction,'costFunction');
22
+
10
23
  let best = null;
11
24
  let bestScore = Number.POSITIVE_INFINITY;
12
25
 
13
- const visitor = (node) => {
26
+ /**
27
+ *
28
+ * @param {QuadTreeNode} node
29
+ * @return {boolean}
30
+ */
31
+ function visitor(node){
14
32
 
15
33
  if (node.getWidth() < width) {
16
34
  //too small, don't traverse deeper
@@ -23,9 +41,9 @@ export function findBestContainer(width, height, boxes, costFunction) {
23
41
  }
24
42
 
25
43
  const data = node.data;
26
- const numBoxes = data.length;
44
+ const box_count = data.length;
27
45
 
28
- for (let i = 0; i < numBoxes; i++) {
46
+ for (let i = 0; i < box_count; i++) {
29
47
  const box = data[i];
30
48
 
31
49
  const bW = box.getWidth();
@@ -43,6 +61,10 @@ export function findBestContainer(width, height, boxes, costFunction) {
43
61
  }
44
62
 
45
63
  const cost = costFunction(bW, bH, width, height);
64
+
65
+ assert.isNumber(cost,'cost');
66
+ assert.notNaN(cost,'cost');
67
+
46
68
  if (cost < bestScore) {
47
69
  bestScore = cost;
48
70
  best = box;
@@ -50,7 +72,7 @@ export function findBestContainer(width, height, boxes, costFunction) {
50
72
  }
51
73
 
52
74
  return true;
53
- };
75
+ }
54
76
 
55
77
  boxes.traversePreOrder(visitor);
56
78
 
@@ -1 +1 @@
1
- {"version":3,"file":"packOneBox.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/max-rect/packOneBox.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,gCAJW,KAAK,QACL,YAAY,GACV,OAAO,CAuCnB"}
1
+ {"version":3,"file":"packOneBox.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/max-rect/packOneBox.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,gCAJW,KAAK,QACL,YAAY,GACV,OAAO,CA4CnB"}
@@ -1,7 +1,7 @@
1
- import { findBestContainer } from "./findBestContainer.js";
1
+ import { QuadTreeDatum } from "../../2d/quad-tree/QuadTreeDatum.js";
2
2
  import { costByRemainingArea } from "./cost/costByRemainingArea.js";
3
3
  import { cutArea } from "./cutArea.js";
4
- import { QuadTreeDatum } from "../../2d/quad-tree/QuadTreeDatum.js";
4
+ import { findBestContainer } from "./findBestContainer.js";
5
5
 
6
6
  /**
7
7
  *
@@ -34,14 +34,19 @@ export function packOneBox(box, free) {
34
34
 
35
35
  //split remaining space
36
36
  if (box.y1 !== container.y1) {
37
+
37
38
  const splitA = new QuadTreeDatum(container.x0, box.y1, container.x1, container.y1);
38
39
 
39
40
  free.insertDatum(splitA);
41
+
40
42
  }
41
43
 
42
44
  if (box.x1 !== container.x1) {
45
+
43
46
  const splitB = new QuadTreeDatum(box.x1, container.y0, container.x1, container.y1);
47
+
44
48
  free.insertDatum(splitB);
49
+
45
50
  }
46
51
 
47
52
 
@@ -1 +1 @@
1
- {"version":3,"file":"removeRedundantBoxesArray.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/max-rect/removeRedundantBoxesArray.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,iDAFW,KAAK,EAAE,QAqCjB"}
1
+ {"version":3,"file":"removeRedundantBoxesArray.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/max-rect/removeRedundantBoxesArray.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,iDAFW,KAAK,EAAE,QA2CjB"}
@@ -4,9 +4,9 @@
4
4
  */
5
5
  export function removeRedundantBoxesArray(boxes) {
6
6
  let i, j;
7
- let numBoxes = boxes.length;
7
+ let box_count = boxes.length;
8
8
 
9
- loop_a: for (i = 0; i < numBoxes; i++) {
9
+ loop_a: for (i = 0; i < box_count; i++) {
10
10
  const a = boxes[i];
11
11
 
12
12
  const ax0 = a.x0;
@@ -14,7 +14,7 @@ export function removeRedundantBoxesArray(boxes) {
14
14
  const ax1 = a.x1;
15
15
  const ay1 = a.y1;
16
16
 
17
- for (j = i + 1; j < numBoxes; j++) {
17
+ for (j = i + 1; j < box_count; j++) {
18
18
  const b = boxes[j];
19
19
 
20
20
  const bx0 = b.x0;
@@ -24,16 +24,22 @@ export function removeRedundantBoxesArray(boxes) {
24
24
 
25
25
  //question is now whether it is containment
26
26
  if (ax0 >= bx0 && ax1 <= bx1 && ay0 >= by0 && ay1 <= by1) {
27
- //b contains a
27
+
28
+ // B contains A
29
+
28
30
  boxes.splice(i, 1);
29
31
  i--;
30
- numBoxes--;
32
+ box_count--;
31
33
  continue loop_a;
34
+
32
35
  } else if (bx0 >= ax0 && bx1 <= ax1 && by0 >= ay0 && by1 <= ay1) {
33
- //a contains b
36
+
37
+ // A contains B
38
+
34
39
  boxes.splice(j, 1);
35
40
  j--;
36
- numBoxes--;
41
+ box_count--;
42
+
37
43
  }
38
44
  }
39
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Miniball.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/miniball/Miniball.js"],"names":[],"mappings":"AAwBA;;;GAGG;AACH;IACI;;;;;OAKG;IACH,oBAFW,QAAQ,EA0ElB;IArEG,kBAAkB;IAClB,kBAAkB;IAClB,wBAAwB;IACxB;;;;;;;;;;OAUG;IACH,wBAAwB;IACxB,iBAAiB;IACjB,gBAAgB;IAEhB;;OAEG;IACH,GAFU,QAAQ,CAEH;IAEf,YAA2B;IAI3B;;;OAGG;IACH,YAA0B;IAM1B;;;;OAIG;IACH,iBAA4D;IAE5D;;;OAGG;IACH,aAFU,MAAM,EAAE,GAAC,YAAY,CAEkD;IAEjF;;;OAGG;IACH,eAFU,MAAM,EAAE,GAAC,YAAY,CAEwD;IAEvF;;;OAGG;IACH,SAFU,MAAM,EAAE,GAAC,YAAY,CAEsD;IAErF;;;;OAIG;IACH,kBAAgC;IAIpC;;;;;;;OAOG;IACH,WAFY,OAAO,CAIlB;IAED;;;;;;OAMG;IACH,UAFY,MAAM,CAIjB;IAED;;;;;;OAMG;IACH,UAFY,MAAM,EAAE,CAInB;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;;;;OAMG;IACH,QAJY,MAAM,CAMjB;IAED;;;;;;;;OAQG;IACH,iBAkCC;IAED;;OAEG;IACH,yBAGC;IAED;;OAEG;IACH,qBAcC;IAED;;;;;;;;;;OAUG;IACH,gBA4CC;IAED;;;;;;;;OAQG;IACH,kBAFY,OAAO,CA4BlB;IAED;;;;;;;;OAQG;IACH,yBAyDC;IAGD;;;OAGG;IACH,YAFY,MAAM,CAkBjB;CACJ;wBAxZuB,cAAc"}
1
+ {"version":3,"file":"Miniball.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/miniball/Miniball.js"],"names":[],"mappings":"AAwBA;;;GAGG;AACH;IACI;;;;;OAKG;IACH,oBAFW,QAAQ,EAoGlB;IA/FG;;;OAGG;IACH,WAFU,MAAM,CAEE;IAClB;;;OAGG;IACH,WAFU,MAAM,CAEE;IAClB;;;OAGG;IACH,iBAFU,MAAM,CAEQ;IACxB;;;;;;;;;;OAUG;IACH,wBAAwB;IACxB;;;;OAIG;IACH,iBAAiB;IACjB;;;OAGG;IACH,SAFU,MAAM,CAEA;IAEhB;;OAEG;IACH,GAFU,QAAQ,CAEH;IAEf;;;;OAIG;IACH,eAA2B;IAI3B;;;OAGG;IACH,KAFU,MAAM,CAEU;IAM1B;;;;OAIG;IACH,iBAA4D;IAE5D;;;OAGG;IACH,aAFU,MAAM,EAAE,GAAC,YAAY,CAEkD;IAEjF;;;OAGG;IACH,eAFU,MAAM,EAAE,GAAC,YAAY,CAEwD;IAEvF;;;OAGG;IACH,SAFU,MAAM,EAAE,GAAC,YAAY,CAEsD;IAErF;;;;OAIG;IACH,kBAAgC;IAIpC;;;;;;;OAOG;IACH,WAFY,OAAO,CAIlB;IAED;;;;;;OAMG;IACH,UAFY,MAAM,CAIjB;IAED;;;;;;OAMG;IACH,UAFY,MAAM,EAAE,CAInB;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;;;;OAMG;IACH,QAJY,MAAM,CAMjB;IAED;;;;;;;;OAQG;IACH,iBAkCC;IAED;;OAEG;IACH,yBAGC;IAED;;OAEG;IACH,qBAcC;IAED;;;;;;;;;;OAUG;IACH,gBA4CC;IAED;;;;;;;;OAQG;IACH,kBAFY,OAAO,CA4BlB;IAED;;;;;;;;OAQG;IACH,yBAyDC;IAGD;;;OAGG;IACH,YAFY,MAAM,CAkBjB;CACJ;wBAlbuB,cAAc"}
@@ -36,8 +36,20 @@ export class Miniball {
36
36
  constructor(points) {
37
37
  assert.defined(points, 'points');
38
38
 
39
+ /**
40
+ *
41
+ * @type {number}
42
+ */
39
43
  this.iteration = 0;
44
+ /**
45
+ *
46
+ * @type {number}
47
+ */
40
48
  this.distToAff = 0;
49
+ /**
50
+ *
51
+ * @type {number}
52
+ */
41
53
  this.distToAffSquare = 0;
42
54
  /**
43
55
  *
@@ -51,7 +63,16 @@ export class Miniball {
51
63
  * @private
52
64
  */
53
65
  this.__squaredRadius = 0;
66
+ /**
67
+ *
68
+ * @type {number}
69
+ * @private
70
+ */
54
71
  this.__radius = 0;
72
+ /**
73
+ *
74
+ * @type {number}
75
+ */
55
76
  this.stopper = 0;
56
77
 
57
78
  /**
@@ -59,13 +80,18 @@ export class Miniball {
59
80
  */
60
81
  this.S = points;
61
82
 
83
+ /**
84
+ *
85
+ * @type {number}
86
+ * @private
87
+ */
62
88
  this.__size = this.S.size();
63
89
 
64
90
  const dimension_count = this.S.dimension();
65
91
 
66
92
  /**
67
93
  * Number of dimensions (2 for 2d, 3 for 3d etc.)
68
- * @type {Number}
94
+ * @type {number}
69
95
  */
70
96
  this.dim = dimension_count;
71
97
 
@@ -1 +1 @@
1
- {"version":3,"file":"PointSet.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/miniball/PointSet.js"],"names":[],"mappings":"AAAA;IACI;;;;;;OAMG;IACH,kBALW,MAAM,cACN,MAAM,QACN,QAAM,YAAY,GAAC,YAAY,EAOzC;IAHG,8EAAkB;IAClB,eAAkB;IAClB,qBAA8B;IAGlC;;;OAGG;IACH,QAFa,GAAG,CAIf;IAED;;;OAGG;IACH,aAFa,GAAG,CAIf;IAED;;;;;OAKG;IACH,SAJW,GAAG,KACH,GAAG,GACD,MAAM,CAIlB;CACJ"}
1
+ {"version":3,"file":"PointSet.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/packing/miniball/PointSet.js"],"names":[],"mappings":"AAEA;IACI;;;;;;OAMG;IACH,kBALW,MAAM,cACN,MAAM,QACN,QAAM,YAAY,GAAC,YAAY,EA0BzC;IAlBG;;;;OAIG;IACH,eAAkB;IAClB;;;;OAIG;IACH,eAAkB;IAClB;;;;OAIG;IACH,qBAA8B;IAGlC;;;OAGG;IACH,QAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,aAFa,MAAM,CAIlB;IAED;;;;;OAKG;IACH,SAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAIlB;CACJ"}
@@ -1,3 +1,5 @@
1
+ import { assert } from "../../../assert.js";
2
+
1
3
  export class PointSet {
2
4
  /**
3
5
  *
@@ -7,14 +9,33 @@ export class PointSet {
7
9
  * @constructor
8
10
  */
9
11
  constructor(size, dimensions, data) {
12
+ assert.isNonNegativeInteger(size, 'size');
13
+ assert.isNonNegativeInteger(dimensions, 'dimensions');
14
+ assert.isArrayLike(data, 'data');
15
+
16
+ /**
17
+ *
18
+ * @type {Array|Float32Array|Float64Array}
19
+ * @private
20
+ */
10
21
  this.__data = data;
22
+ /**
23
+ *
24
+ * @type {number}
25
+ * @private
26
+ */
11
27
  this.__size = size;
28
+ /**
29
+ *
30
+ * @type {number}
31
+ * @private
32
+ */
12
33
  this.__dimensions = dimensions;
13
34
  }
14
35
 
15
36
  /**
16
37
  * Number of points in the set
17
- * @returns {int}
38
+ * @returns {number}
18
39
  */
19
40
  size() {
20
41
  return this.__size;
@@ -22,7 +43,7 @@ export class PointSet {
22
43
 
23
44
  /**
24
45
  * Number of dimensions for each point
25
- * @returns {int}
46
+ * @returns {number}
26
47
  */
27
48
  dimension() {
28
49
  return this.__dimensions;
@@ -30,8 +51,8 @@ export class PointSet {
30
51
 
31
52
  /**
32
53
  * get coordinate for a point
33
- * @param {int} i point index
34
- * @param {int} j dimension
54
+ * @param {number} i point index
55
+ * @param {number} j dimension
35
56
  * @returns {number}
36
57
  */
37
58
  coord(i, j) {
@@ -9,7 +9,7 @@
9
9
  * Information about the quality of the computed ball.
10
10
  * @class
11
11
  */
12
- class Quality {
12
+ export class Quality {
13
13
  /**
14
14
  *
15
15
  * @param {number} qrInconsistency
@@ -112,5 +112,3 @@ class Quality {
112
112
  return "Quality [qrInconsistency=" + this.qrInconsistency + ", minConvexCoefficient=" + this.minConvexCoefficient + ", maxOverlength=" + this.maxOverlength + ", maxUnderlength=" + this.maxUnderlength + ", iterations=" + this.iterations + ", supportSize=" + this.supportSize + "]";
113
113
  }
114
114
  }
115
-
116
- export { Quality };