flo-mat 3.0.6 → 3.0.7

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 (185) hide show
  1. package/__tests__/cp-node/fs/add-distance-from.spec.ts +7 -0
  2. package/__tests__/cp-node/fs/check-jsog-eql-calc.spec.ts +30 -0
  3. package/__tests__/cp-node/fs/clone.spec.ts +7 -0
  4. package/__tests__/cp-node/fs/cp-nodes-to-boundary-beziers.spec.ts +7 -0
  5. package/__tests__/cp-node/fs/create-cp-node.spec.ts +7 -0
  6. package/__tests__/cp-node/fs/enhance-cp-node.spec.ts +7 -0
  7. package/__tests__/cp-node/fs/find-first.spec.ts +7 -0
  8. package/__tests__/cp-node/fs/get-all-between.spec.ts +7 -0
  9. package/__tests__/cp-node/fs/get-all-on-circle.spec.ts +92 -0
  10. package/__tests__/cp-node/fs/get-all-on-loop.spec.ts +7 -0
  11. package/__tests__/cp-node/fs/get-all-vertices.spec.ts +7 -0
  12. package/__tests__/cp-node/fs/get-angle-between-mat-curves.spec.ts +7 -0
  13. package/__tests__/cp-node/fs/get-avg-speed.spec.ts +7 -0
  14. package/__tests__/cp-node/fs/get-boundary-bezier-parts-to-next.spec.ts +7 -0
  15. package/__tests__/cp-node/fs/get-boundary-beziers-between.spec.ts +7 -0
  16. package/__tests__/cp-node/fs/get-boundary-beziers-to-next.spec.ts +7 -0
  17. package/__tests__/cp-node/fs/get-boundary-distance-to-next.spec.ts +7 -0
  18. package/__tests__/cp-node/fs/get-branch-beziers.spec.ts +7 -0
  19. package/__tests__/cp-node/fs/get-branch.spec.ts +7 -0
  20. package/__tests__/cp-node/fs/get-children.spec.ts +7 -0
  21. package/__tests__/cp-node/fs/get-cp-node-ordering.spec.ts +7 -0
  22. package/__tests__/cp-node/fs/get-distance-between.spec.ts +7 -0
  23. package/__tests__/cp-node/fs/get-distance-to-next.spec.ts +7 -0
  24. package/__tests__/cp-node/fs/get-edge-direction.spec.ts +7 -0
  25. package/__tests__/cp-node/fs/get-first-exit.spec.ts +7 -0
  26. package/__tests__/cp-node/fs/get-hole-closers.spec.ts +7 -0
  27. package/__tests__/cp-node/fs/get-implied-boundary-bezier-between.spec.ts +7 -0
  28. package/__tests__/cp-node/fs/get-mat-curve-between.spec.ts +7 -0
  29. package/__tests__/cp-node/fs/get-mat-curve-to-next.spec.ts +7 -0
  30. package/__tests__/cp-node/fs/get-mat-curves-between.spec.ts +7 -0
  31. package/__tests__/cp-node/fs/get-non-terminating-on-circle.spec.ts +7 -0
  32. package/__tests__/cp-node/fs/get-prong-count.spec.ts +7 -0
  33. package/__tests__/cp-node/fs/get-real-prong-count.spec.ts +7 -0
  34. package/__tests__/cp-node/fs/get-salience.spec.ts +7 -0
  35. package/__tests__/cp-node/fs/get-smoothed-speed.spec.ts +7 -0
  36. package/__tests__/cp-node/fs/get-smoothed.spec.ts +7 -0
  37. package/__tests__/cp-node/fs/get-speed.spec.ts +7 -0
  38. package/__tests__/cp-node/fs/get-terminating-on-circle.spec.ts +7 -0
  39. package/__tests__/cp-node/fs/get-vertex-forward-children.spec.ts +7 -0
  40. package/__tests__/cp-node/fs/insert-cp-node.spec.ts +7 -0
  41. package/__tests__/cp-node/fs/is-fully-terminating.spec.ts +7 -0
  42. package/__tests__/cp-node/fs/is-on-same-circle.spec.ts +7 -0
  43. package/__tests__/cp-node/fs/is-one-prong.spec.ts +7 -0
  44. package/__tests__/cp-node/fs/is-order-correct.spec.ts +7 -0
  45. package/__tests__/cp-node/fs/is-sharp.spec.ts +7 -0
  46. package/__tests__/cp-node/fs/is-single-3-prong.spec.ts +7 -0
  47. package/__tests__/cp-node/fs/is-special.spec.ts +7 -0
  48. package/__tests__/cp-node/fs/is-terminating.spec.ts +7 -0
  49. package/__tests__/cp-node/fs/is-trivial.spec.ts +7 -0
  50. package/__tests__/cp-node/fs/is-two-prong.spec.ts +7 -0
  51. package/__tests__/cp-node/fs/is-vertex-special.spec.ts +7 -0
  52. package/__tests__/cp-node/fs/is-vertex.spec.ts +7 -0
  53. package/__tests__/cp-node/fs/iterate-all-on-loop.spec.ts +7 -0
  54. package/__tests__/cp-node/fs/mat-dummys.ts +6716 -0
  55. package/__tests__/cp-node/fs/remove-cp-node.spec.ts +7 -0
  56. package/__tests__/cp-node/fs/traverse-all-forward.spec.ts +7 -0
  57. package/__tests__/cp-node/fs/traverse-cp.spec.ts +7 -0
  58. package/__tests__/cp-node/fs/traverse-edges.spec.ts +7 -0
  59. package/__tests__/cp-node/fs/traverse-vertices.spec.ts +7 -0
  60. package/__tests__/lib-load.spec.ts +9 -10
  61. package/browser/index.js +239 -158
  62. package/browser/index.min.js +1 -1
  63. package/jest.config.cjs +32 -0
  64. package/node/corner/get-interface-ccw.js +0 -1
  65. package/node/corner/get-interface-ccw.js.map +1 -1
  66. package/node/cp-node/cp-node-fs.d.ts +32 -32
  67. package/node/cp-node/cp-node-fs.js +32 -32
  68. package/node/cp-node/cp-node.d.ts +13 -21
  69. package/node/cp-node/fs/clone.d.ts +3 -3
  70. package/node/cp-node/fs/clone.js +3 -3
  71. package/node/cp-node/fs/enhance-cp-node.d.ts +1 -5
  72. package/node/cp-node/fs/enhance-cp-node.js.map +1 -1
  73. package/node/cp-node/fs/get-all-between.d.ts +3 -3
  74. package/node/cp-node/fs/get-all-between.js +3 -3
  75. package/node/cp-node/fs/get-all-between.js.map +1 -1
  76. package/node/cp-node/fs/get-all-on-circle.d.ts +7 -1
  77. package/node/cp-node/fs/get-all-on-circle.js +11 -7
  78. package/node/cp-node/fs/get-all-on-circle.js.map +1 -1
  79. package/node/cp-node/fs/get-all-on-loop.d.ts +1 -1
  80. package/node/cp-node/fs/get-all-on-loop.js.map +1 -1
  81. package/node/cp-node/fs/get-boundary-bezier-parts-to-next.d.ts +12 -3
  82. package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js +22 -7
  83. package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js.map +1 -1
  84. package/node/cp-node/fs/get-boundary-beziers-between.d.ts +1 -1
  85. package/node/cp-node/fs/get-boundary-beziers-between.js.map +1 -1
  86. package/node/cp-node/fs/get-boundary-beziers-to-next.js.map +1 -1
  87. package/node/cp-node/fs/insert-cp-node.d.ts +3 -1
  88. package/node/cp-node/fs/insert-cp-node.js +12 -2
  89. package/node/cp-node/fs/insert-cp-node.js.map +1 -1
  90. package/node/cp-node/fs/is-fully-terminating.d.ts +7 -0
  91. package/node/cp-node/fs/is-fully-terminating.js +7 -0
  92. package/node/cp-node/fs/is-fully-terminating.js.map +1 -1
  93. package/node/cp-node/fs/is-terminating.d.ts +1 -1
  94. package/node/cp-node/fs/remove-cp-node.d.ts +3 -4
  95. package/node/cp-node/fs/remove-cp-node.js +3 -1
  96. package/node/cp-node/fs/remove-cp-node.js.map +1 -1
  97. package/node/curve/curve.d.ts +18 -11
  98. package/node/find-2-prong/add-1-prong.js +1 -1
  99. package/node/find-2-prong/add-1-prong.js.map +1 -1
  100. package/node/find-2-prong/add-2-prong.js +9 -7
  101. package/node/find-2-prong/add-2-prong.js.map +1 -1
  102. package/node/find-2-prong/calc-seperation-tolerance.d.ts +8 -1
  103. package/node/find-2-prong/calc-seperation-tolerance.js +73 -59
  104. package/node/find-2-prong/calc-seperation-tolerance.js.map +1 -1
  105. package/node/find-2-prong/find-2-prong.js +2 -2
  106. package/node/find-2-prong/find-2-prong.js.map +1 -1
  107. package/node/find-2-prong/get-initial-bezier-pieces.d.ts +2 -3
  108. package/node/find-2-prong/get-initial-bezier-pieces.js +4 -1
  109. package/node/find-2-prong/get-initial-bezier-pieces.js.map +1 -1
  110. package/node/find-3-prong.ts/find-and-add-3-prong.js +1 -1
  111. package/node/find-3-prong.ts/find-and-add-3-prong.js.map +1 -1
  112. package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.d.ts +2 -2
  113. package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.js +8 -3
  114. package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.js.map +1 -1
  115. package/node/find-mat/create-initial-cp-tree.d.ts +7 -3
  116. package/node/find-mat/create-initial-cp-tree.js +7 -5
  117. package/node/find-mat/create-initial-cp-tree.js.map +1 -1
  118. package/node/find-mat/find-mat.d.ts +2 -1
  119. package/node/find-mat/find-mat.js +10 -4
  120. package/node/find-mat/find-mat.js.map +1 -1
  121. package/node/find-mat/get-meta.d.ts +5 -2
  122. package/node/find-mat/get-meta.js +15 -14
  123. package/node/find-mat/get-meta.js.map +1 -1
  124. package/node/index.d.ts +0 -1
  125. package/node/index.js +1 -1
  126. package/node/index.js.map +1 -1
  127. package/node/mat/add-to-cp-tree.d.ts +5 -6
  128. package/node/mat/add-to-cp-tree.js +5 -2
  129. package/node/mat/add-to-cp-tree.js.map +1 -1
  130. package/node/mat/get-branches.d.ts +7 -0
  131. package/node/mat/get-branches.js +7 -0
  132. package/node/mat/get-branches.js.map +1 -1
  133. package/node/mat/mat-meta.d.ts +8 -1
  134. package/node/mat/mat.d.ts +3 -3
  135. package/node/mat/simplify-mat.js +1 -1
  136. package/node/mat/simplify-mat.js.map +1 -1
  137. package/node/point-on-shape/point-on-shape.d.ts +1 -1
  138. package/node/vertex/remove-vertex.d.ts +3 -4
  139. package/node/vertex/remove-vertex.js +3 -2
  140. package/node/vertex/remove-vertex.js.map +1 -1
  141. package/package.json +9 -6
  142. package/src/corner/get-interface-ccw.ts +0 -1
  143. package/src/cp-node/cp-node-fs.ts +43 -43
  144. package/src/cp-node/cp-node.ts +27 -39
  145. package/src/cp-node/fs/clone.ts +3 -3
  146. package/src/cp-node/fs/enhance-cp-node.ts +0 -1
  147. package/src/cp-node/fs/get-all-between.ts +31 -28
  148. package/src/cp-node/fs/get-all-on-circle.ts +13 -8
  149. package/src/cp-node/fs/get-all-on-loop.ts +12 -10
  150. package/src/cp-node/fs/get-boundary-bezier-parts-to-next.ts +39 -22
  151. package/src/cp-node/fs/get-boundary-beziers-between.ts +6 -2
  152. package/src/cp-node/fs/get-boundary-beziers-to-next.ts +6 -4
  153. package/src/cp-node/fs/insert-cp-node.ts +13 -2
  154. package/src/cp-node/fs/is-fully-terminating.ts +7 -0
  155. package/src/cp-node/fs/is-terminating.ts +1 -1
  156. package/src/cp-node/fs/remove-cp-node.ts +8 -4
  157. package/src/curve/curve.ts +19 -13
  158. package/src/debug/functions/check-ordering.ts +7 -3
  159. package/src/find-2-prong/add-1-prong.ts +1 -1
  160. package/src/find-2-prong/add-2-prong.ts +79 -74
  161. package/src/find-2-prong/calc-seperation-tolerance.ts +88 -78
  162. package/src/find-2-prong/find-2-prong.ts +2 -2
  163. package/src/find-2-prong/get-initial-bezier-pieces.ts +5 -1
  164. package/src/find-3-prong.ts/add-3-prong.ts +73 -70
  165. package/src/find-3-prong.ts/find-and-add-3-prong.ts +1 -1
  166. package/src/find-3-prong.ts/find-and-add-3-prongs-on-loop.ts +9 -8
  167. package/src/find-mat/create-initial-cp-tree.ts +10 -6
  168. package/src/find-mat/find-mat.ts +12 -5
  169. package/src/find-mat/get-meta.ts +30 -20
  170. package/src/get-curve/get-curve-between.ts +2 -2
  171. package/src/index.ts +1 -1
  172. package/src/mat/add-to-cp-tree.ts +18 -9
  173. package/src/mat/get-branches.ts +35 -28
  174. package/src/mat/mat-meta.ts +6 -1
  175. package/src/mat/mat.ts +3 -3
  176. package/src/mat/simplify-mat.ts +1 -1
  177. package/src/point-on-shape/compare-poss.ts +3 -3
  178. package/src/point-on-shape/get-osculating-circle.ts +1 -1
  179. package/src/point-on-shape/point-on-shape.ts +1 -1
  180. package/src/point-on-shape/pos-to-human-string.ts +1 -1
  181. package/src/sat/to-scale-axis.ts +1 -1
  182. package/src/vertex/remove-vertex.ts +7 -5
  183. package/.mocharc.cjs +0 -17
  184. package/src/debug/functions/draw-elem/branch.ts +0 -26
  185. package/src/find-mat/create-initial-cp-graph.ts +0 -59
@@ -1 +1 @@
1
- {"version":3,"file":"get-all-on-loop.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-all-on-loop.ts"],"names":[],"mappings":"AAGA,SAAS,YAAY,CAAC,MAAc;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,OAAO,GAAa,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAE1B,OAAO,OAAO,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"get-all-on-loop.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-all-on-loop.ts"],"names":[],"mappings":"AAGA,SAAS,YAAY,CACnB,MAAc;IAEZ,MAAM,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,OAAO,GAAa,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAE1B,OAAO,OAAO,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -1,4 +1,13 @@
1
- import { BezierPiece } from 'flo-bezier3';
2
- import { CpNode } from '../cp-node.js';
3
- declare function getBoundaryBezierPartsToNext(cpNode: CpNode): BezierPiece[];
1
+ import type { BezierPiece } from 'flo-bezier3';
2
+ import type { CpNode } from '../cp-node.js';
3
+ /**
4
+ * Returns the boundary beziers pieces between this `CpNode` and the next
5
+ * one.
6
+ *
7
+ * * returns `undefined` if the next `CpNode` is on a different loop,
8
+ * as this is a hole-closer and there are no boundary beziers between them.
9
+ *
10
+ * @param cpNode
11
+ */
12
+ declare function getBoundaryBezierPartsToNext(cpNode: CpNode): BezierPiece[] | undefined;
4
13
  export { getBoundaryBezierPartsToNext };
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Returns the boundary beziers pieces between this `CpNode` and the next
3
+ * one.
4
+ *
5
+ * * returns `undefined` if the next `CpNode` is on a different loop,
6
+ * as this is a hole-closer and there are no boundary beziers between them.
7
+ *
8
+ * @param cpNode
9
+ */
1
10
  function getBoundaryBezierPartsToNext(cpNode) {
2
11
  const cpThis = cpNode;
3
12
  const cpNext = cpNode.next;
@@ -10,28 +19,34 @@ function getBoundaryBezierPartsToNext(cpNode) {
10
19
  // CpNode.
11
20
  return undefined;
12
21
  }
13
- const bezierParts = [];
22
+ const bezierPieces = [];
14
23
  if (curveNext === curveThis) {
15
- bezierParts.push({ ps: posThis.curve.ps, ts: [posThis.t, posNext.t] });
24
+ bezierPieces.push({
25
+ ps: posThis.curve.ps,
26
+ ts: [posThis.t, posNext.t]
27
+ });
16
28
  }
17
29
  else {
18
- bezierParts.push({ ps: posThis.curve.ps, ts: [posThis.t, 1] });
19
- addSkippedBeziers(bezierParts, posThis.curve, posNext.curve, posNext.t);
30
+ bezierPieces.push({
31
+ ps: posThis.curve.ps,
32
+ ts: [posThis.t, 1]
33
+ });
34
+ addSkippedBeziers(bezierPieces, posThis.curve, posNext.curve, posNext.t);
20
35
  }
21
- return bezierParts;
36
+ return bezierPieces;
22
37
  }
23
38
  /**
24
39
  * @internal
25
40
  * Adds pieces of skipped beziers.
26
41
  */
27
- function addSkippedBeziers(bezierParts, curveStart, curveEnd, t1) {
42
+ function addSkippedBeziers(bezierPieces, curveStart, curveEnd, t1) {
28
43
  let curveThis = curveStart;
29
44
  do {
30
45
  curveThis = curveThis.next;
31
46
  const bezierPart = curveThis === curveEnd
32
47
  ? { ps: curveThis.ps, ts: [0, t1] }
33
48
  : { ps: curveThis.ps, ts: [0, 1] };
34
- bezierParts.push(bezierPart);
49
+ bezierPieces.push(bezierPart);
35
50
  } while (curveThis !== curveEnd);
36
51
  }
37
52
  export { getBoundaryBezierPartsToNext };
@@ -1 +1 @@
1
- {"version":3,"file":"get-boundary-bezier-parts-to-next.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-boundary-bezier-parts-to-next.ts"],"names":[],"mappings":"AAKA,SAAS,4BAA4B,CAAC,MAAc;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;QACpC,wEAAwE;QACxE,UAAU;QACV,OAAO,SAAU,CAAC;IACtB,CAAC;IAED,MAAM,WAAW,GAAkB,EAAE,CAAC;IAEtC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,WAAW,CAAC,IAAI,CACZ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CACvD,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,WAAW,CAAC,IAAI,CACZ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAC/C,CAAC;QAEF,iBAAiB,CACT,WAAW,EACX,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CAChB,CAAC;IACN,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,WAA+C,EAC/C,UAAkB,EAClB,QAAkB,EAClB,EAAmB;IAEvB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG,CAAC;QACA,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ;YACrC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACnC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;QAEtC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACrC,CAAC;AAGD,OAAO,EAAE,4BAA4B,EAAE,CAAA"}
1
+ {"version":3,"file":"get-boundary-bezier-parts-to-next.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-boundary-bezier-parts-to-next.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,SAAS,4BAA4B,CAC7B,MAAc;IAElB,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;QACpC,wEAAwE;QACxE,UAAU;QACV,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,YAAY,CAAC,IAAI,CACb;YACI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;YACpB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;SAC7B,CACJ,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,YAAY,CAAC,IAAI,CACb;YACI,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;YACpB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;SACrB,CACJ,CAAC;QAEF,iBAAiB,CACb,YAAY,EACZ,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CACZ,CAAC;IACN,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,YAA2B,EAC3B,UAAiB,EACjB,QAAe,EACf,EAAU;IAEd,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG,CAAC;QACA,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ;YACrC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACnC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;QAEtC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACrC,CAAC;AAGD,OAAO,EAAE,4BAA4B,EAAE,CAAA"}
@@ -1,4 +1,4 @@
1
- import { CpNode } from "../cp-node.js";
1
+ import type { CpNode } from "../cp-node.js";
2
2
  /**
3
3
  * Returns all `CpNode`s between the two given ones (inclusive).
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"get-boundary-beziers-between.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-boundary-beziers-between.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD;;;;;;;;;;GAUG;AACH,SAAS,yBAAyB,CAC1B,OAAe,EACf,OAAe,EACf,cAAc,GAAG,IAAI;IAEzB,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAC,OAAO,EAAC,cAAc,CAAC,CAAC;IAEjE,OAAO;QACH,GAAG,EAAE,wBAAwB,CAAC,UAAU,CAAC,OAAO,CAAC;QACjD,aAAa,EAAE,UAAU,CAAC,aAAa;KAC1C,CAAA;AACL,CAAC;AAGD,OAAO,EAAE,yBAAyB,EAAE,CAAA"}
1
+ {"version":3,"file":"get-boundary-beziers-between.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-boundary-beziers-between.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD;;;;;;;;;;GAUG;AACH,SAAS,yBAAyB,CAC1B,OAAe,EACf,OAAe,EACf,cAAc,GAAG,IAAI;IAKzB,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,EAAC,OAAO,EAAC,cAAc,CAAC,CAAC;IAEjE,OAAO;QACH,GAAG,EAAE,wBAAwB,CAAC,UAAU,CAAC,OAAO,CAAC;QACjD,aAAa,EAAE,UAAU,CAAC,aAAa;KAC1C,CAAA;AACL,CAAC;AAGD,OAAO,EAAE,yBAAyB,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-boundary-beziers-to-next.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-boundary-beziers-to-next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKrC,SAAS,wBAAwB,CAAC,MAAc;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;QACpC,wEAAwE;QACxE,UAAU;QACV,qBAAqB;QACrB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CACjD,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CACzC,CAAC;QAEF,iBAAiB,CACT,OAAO,EACP,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CAChB,CAAC;IACN,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,OAAyB,EACzB,UAAkB,EAClB,QAAkB,EAClB,EAAmB;IAEvB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG,CAAC;QACA,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI;QACR,oCAAoC;QACpC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAChC,CAAC;IACN,CAAC,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACrC,CAAC;AAGD,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
1
+ {"version":3,"file":"get-boundary-beziers-to-next.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-boundary-beziers-to-next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKrC,SAAS,wBAAwB,CACzB,MAAc;IAElB,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;QACpC,wEAAwE;QACxE,UAAU;QACV,qBAAqB;QACrB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CACjD,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CACzC,CAAC;QAEF,iBAAiB,CACT,OAAO,EACP,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CAChB,CAAC;IACN,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,OAAyB,EACzB,UAAkB,EAClB,QAAkB,EAClB,EAAmB;IAEvB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG,CAAC;QACA,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI;QACR,oCAAoC;QACpC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAChC,CAAC;IACN,CAAC,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACrC,CAAC;AAGD,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
@@ -1,5 +1,7 @@
1
1
  import { LlRbTree } from "flo-ll-rb-tree";
2
2
  import { ContactPoint } from "../../contact-point/contact-point.js";
3
3
  import { CpNode } from "../cp-node.js";
4
- declare function insertCpNode(insertIfOrderWrong: boolean, isHoleClosing: boolean, isIntersection: boolean, cpTree: LlRbTree<CpNode>, cp: ContactPoint, _prev: CpNode | undefined): CpNode | undefined;
4
+ declare function insertCpNode(insertIfOrderWrong: boolean, isHoleClosing: boolean, isIntersection: boolean, cpTree: LlRbTree<CpNode>, cp: ContactPoint, _prev: CpNode | undefined, lastInsertId: {
5
+ id: number;
6
+ }): CpNode | undefined;
5
7
  export { insertCpNode };
@@ -1,5 +1,5 @@
1
1
  import { isOrderCorrect } from "./is-order-correct.js";
2
- function insertCpNode(insertIfOrderWrong, isHoleClosing, isIntersection, cpTree, cp, _prev) {
2
+ function insertCpNode(insertIfOrderWrong, isHoleClosing, isIntersection, cpTree, cp, _prev, lastInsertId) {
3
3
  if (_prev !== undefined &&
4
4
  !isOrderCorrect(cpTree, cp, _prev.next)) {
5
5
  // console.log(compareCps(cp,_prev!.next.cp))
@@ -7,7 +7,17 @@ function insertCpNode(insertIfOrderWrong, isHoleClosing, isIntersection, cpTree,
7
7
  return undefined;
8
8
  }
9
9
  }
10
- const cpNode = { cp, isHoleClosing, isIntersection };
10
+ const cpNode = {
11
+ cp,
12
+ isHoleClosing,
13
+ isIntersection,
14
+ id: lastInsertId.id,
15
+ next: undefined,
16
+ prev: undefined,
17
+ nextOnCircle: undefined,
18
+ prevOnCircle: undefined
19
+ };
20
+ lastInsertId.id++;
11
21
  const prev = _prev === undefined ? cpNode : _prev;
12
22
  const next = _prev === undefined ? cpNode : prev.next;
13
23
  next.prev = cpNode;
@@ -1 +1 @@
1
- {"version":3,"file":"insert-cp-node.js","sourceRoot":"","sources":["../../../src/cp-node/fs/insert-cp-node.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,SAAS,YAAY,CACb,kBAA2B,EAC3B,aAAsB,EACtB,cAAuB,EACvB,MAAwB,EACxB,EAAgB,EAChB,KAAyB;IAE7B,IAAI,KAAK,KAAK,SAAS;QACnB,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAE1C,6CAA6C;QAC7C,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,aAAa,EAAE,cAAc,EAAY,CAAC;IAE/D,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAEtD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACnB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IAEnB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEtB,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"insert-cp-node.js","sourceRoot":"","sources":["../../../src/cp-node/fs/insert-cp-node.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,SAAS,YAAY,CACb,kBAA2B,EAC3B,aAAsB,EACtB,cAAuB,EACvB,MAAwB,EACxB,EAAgB,EAChB,KAAyB,EACzB,YAA4B;IAEhC,IAAI,KAAK,KAAK,SAAS;QACnB,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAE1C,6CAA6C;QAC7C,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAW;QACnB,EAAE;QACF,aAAa;QACb,cAAc;QACd,EAAE,EAAE,YAAY,CAAC,EAAE;QACnB,IAAI,EAAE,SAAU;QAChB,IAAI,EAAE,SAAU;QAChB,YAAY,EAAE,SAAU;QACxB,YAAY,EAAE,SAAU;KAC3B,CAAC;IACF,YAAY,CAAC,EAAE,EAAE,CAAC;IAElB,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAEtD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACnB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IAEnB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEtB,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -1,3 +1,10 @@
1
1
  import { CpNode } from "../cp-node.js";
2
+ /**
3
+ * Returns `true` if this `CpNode` is fully terminating, meaning that all
4
+ * `CpNode`s (except `CpNode.prevOnCircle`) on the same circle are terminating,
5
+ * `false` otherwise.
6
+ *
7
+ * @param cpNode
8
+ */
2
9
  declare function isFullyTerminating(cpNode: CpNode): boolean;
3
10
  export { isFullyTerminating };
@@ -1,5 +1,12 @@
1
1
  import { getAllOnCircle } from "./get-all-on-circle.js";
2
2
  import { isTerminating } from "./is-terminating.js";
3
+ /**
4
+ * Returns `true` if this `CpNode` is fully terminating, meaning that all
5
+ * `CpNode`s (except `CpNode.prevOnCircle`) on the same circle are terminating,
6
+ * `false` otherwise.
7
+ *
8
+ * @param cpNode
9
+ */
3
10
  function isFullyTerminating(cpNode) {
4
11
  const otherOnCircle = getAllOnCircle(cpNode.prevOnCircle, true);
5
12
  return otherOnCircle.every(isTerminating);
@@ -1 +1 @@
1
- {"version":3,"file":"is-fully-terminating.js","sourceRoot":"","sources":["../../../src/cp-node/fs/is-fully-terminating.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,SAAS,kBAAkB,CAAC,MAAc;IACzC,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEhE,OAAO,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC;AAGD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"is-fully-terminating.js","sourceRoot":"","sources":["../../../src/cp-node/fs/is-fully-terminating.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,MAAc;IACzC,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEhE,OAAO,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC;AAGD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -1,3 +1,3 @@
1
- import { CpNode } from "../cp-node.js";
1
+ import type { CpNode } from "../cp-node.js";
2
2
  declare function isTerminating(cpNode: CpNode): boolean;
3
3
  export { isTerminating };
@@ -1,5 +1,4 @@
1
- import { Loop } from 'flo-boolean';
2
- import { LlRbTree } from 'flo-ll-rb-tree';
3
- import { CpNode } from "../cp-node.js";
4
- declare function removeCpNode(cpNode: CpNode, cpTrees: Map<Loop, LlRbTree<CpNode>>): void;
1
+ import type { CpNode } from "../cp-node.js";
2
+ import type { MatMeta } from '../../mat/mat-meta.js';
3
+ declare function removeCpNode(cpNode: CpNode, meta: MatMeta): void;
5
4
  export { removeCpNode };
@@ -1,4 +1,6 @@
1
- function removeCpNode(cpNode, cpTrees) {
1
+ function removeCpNode(cpNode, meta) {
2
+ // cpTrees: Map<Loop, LlRbTree<CpNode>>): void {
3
+ const { cpTrees } = meta;
2
4
  const prev = cpNode.prev;
3
5
  const next = cpNode.next;
4
6
  prev.next = next;
@@ -1 +1 @@
1
- {"version":3,"file":"remove-cp-node.js","sourceRoot":"","sources":["../../../src/cp-node/fs/remove-cp-node.ts"],"names":[],"mappings":"AAKA,SAAS,YAAY,CACb,MAAc,EACd,OAAoC;IAExC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAEjB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;IAC/D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"remove-cp-node.js","sourceRoot":"","sources":["../../../src/cp-node/fs/remove-cp-node.ts"],"names":[],"mappings":"AAMA,SAAS,YAAY,CACb,MAAc,EACd,IAAa;IACb,gDAAgD;IAEpD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAEjB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;IAC/D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -4,23 +4,30 @@ import { Loop } from 'flo-boolean';
4
4
  */
5
5
  interface Curve {
6
6
  /**
7
- * Primarily for internal use.
8
- * @param loop The closed loop of bezier curves representing the shape
7
+ * The closed loop of bezier curves representing the shape
9
8
  * boundary this curve belongs to.
10
- * @param ps The bezier control points.
11
- * @param prev The previous curve (when going in a negative direction around
12
- * the shape boundary, i.e. clockwise for the outer shape and anti-clockwise
13
- * for the holes (if any)).
14
- * @param next The next curve (when going in a positive direction around
15
- * the shape boundary, i.e. anti-clockwise for the outer shape and clockwise
16
- * for the holes (if any)).
17
- * @param idx The curve's ordered index in the loop. This imposes a cycling
18
- * ordering of the curves in the loop.
19
9
  */
20
10
  loop: Loop;
11
+ /**
12
+ * The bezier control points.
13
+ */
21
14
  ps: number[][];
15
+ /**
16
+ * The previous curve (when going in a negative direction around
17
+ * the shape boundary, i.e. clockwise for the outer shape and anti-clockwise
18
+ * for the holes (if any))
19
+ */
22
20
  prev: Curve;
21
+ /**
22
+ * The next curve (when going in a positive direction around
23
+ * the shape boundary, i.e. anti-clockwise for the outer shape and clockwise
24
+ * for the holes (if any))
25
+ */
23
26
  next: Curve;
27
+ /**
28
+ * The curve's ordered index in the loop. This imposes a cycling
29
+ * ordering of the curves in the loop
30
+ */
24
31
  idx: number;
25
32
  }
26
33
  export { Curve };
@@ -33,7 +33,7 @@ function add1Prong(meta, radius, center, pos) {
33
33
  if (getCloseByCpIfExist(meta, pos, circle, order, 0, 1)) {
34
34
  return;
35
35
  }
36
- const { anyFailed, cpNodes } = addToCpTree(false, false, circle, [-0.5, +0.5], meta.cpTrees, [pos, pos]);
36
+ const { anyFailed, cpNodes } = addToCpTree(false, false, circle, [-0.5, +0.5], meta, [pos, pos]);
37
37
  // if (typeof _debug_ !== 'undefined') {
38
38
  // _debug_.generated.elems.oneProng.push(cpNodes);
39
39
  // }
@@ -1 +1 @@
1
- {"version":3,"file":"add-1-prong.js","sourceRoot":"","sources":["../../src/find-2-prong/add-1-prong.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE;;;;;GAKG;AACH,SAAS,SAAS,CAChB,IAAa,EACb,MAAc,EACR,MAAgB,EAChB,GAAiB;IAErB,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACrD,sCAAsC;QAEtC,kBAAkB;QAClB,gEAAgE;QAChE,wEAAwE;QACxE,mEAAmE;QACnE,mEAAmE;QACnE,qEAAqE;QAC/D,kEAAkE;QAClE,oEAAoE;QAE1E,kCAAkC;QAElC,yCAAyC;QAC/B,0DAA0D;QAC9D,IAAI;QAEV,OAAO;IACR,CAAC;IAEE,MAAM,MAAM,GAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAE7C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,uEAAuE;IACvE,mCAAmC;IACnC,IAAI,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO;IACR,CAAC;IAEE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAE5G,yCAAyC;IACtC,sDAAsD;IACtD,IAAI;AACR,CAAC;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"add-1-prong.js","sourceRoot":"","sources":["../../src/find-2-prong/add-1-prong.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE;;;;;GAKG;AACH,SAAS,SAAS,CAChB,IAAa,EACb,MAAc,EACR,MAAgB,EAChB,GAAiB;IAErB,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACrD,sCAAsC;QAEtC,kBAAkB;QAClB,gEAAgE;QAChE,wEAAwE;QACxE,mEAAmE;QACnE,mEAAmE;QACnE,qEAAqE;QAC/D,kEAAkE;QAClE,oEAAoE;QAE1E,kCAAkC;QAElC,yCAAyC;QAC/B,0DAA0D;QAC9D,IAAI;QAEV,OAAO;IACR,CAAC;IAEE,MAAM,MAAM,GAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAE7C,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,uEAAuE;IACvE,mCAAmC;IACnC,IAAI,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO;IACR,CAAC;IAEE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAEpG,yCAAyC;IACtC,sDAAsD;IACtD,IAAI;AACR,CAAC;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -17,7 +17,6 @@ import { removeCpNode } from '../cp-node/fs/remove-cp-node.js';
17
17
  * tolerances.
18
18
  */
19
19
  function add2Prong(meta, circle, poss, isHoleClosing) {
20
- const { cpTrees } = meta;
21
20
  poss[0] = poss[0].t === 0
22
21
  ? createPos(poss[0].curve.prev, 1, true)
23
22
  : poss[0];
@@ -29,11 +28,11 @@ function add2Prong(meta, circle, poss, isHoleClosing) {
29
28
  return undefined;
30
29
  }
31
30
  }
32
- const { anyFailed, cpNodes } = addToCpTree(isHoleClosing, isHoleClosing, circle, orders, cpTrees, poss);
31
+ const { anyFailed, cpNodes } = addToCpTree(isHoleClosing, isHoleClosing, circle, orders, meta, poss);
33
32
  if (anyFailed) {
34
33
  cpNodes.forEach(cpNode => {
35
34
  if (cpNode !== undefined) {
36
- removeCpNode(cpNode, cpTrees);
35
+ removeCpNode(cpNode, meta);
37
36
  }
38
37
  });
39
38
  return undefined;
@@ -41,17 +40,20 @@ function add2Prong(meta, circle, poss, isHoleClosing) {
41
40
  // Get points ordered according to their angle with the x-axis
42
41
  // joinSpokes(circle, cpNodes);
43
42
  if (isHoleClosing) {
44
- closeHole(cpTrees, cpNodes);
43
+ closeHole(meta, cpNodes);
45
44
  }
46
45
  return cpNodes[0]; // return the source `CpNode`
47
46
  }
48
- function closeHole(cpTrees, cpNodes) {
47
+ function closeHole(meta,
48
+ // cpTrees: Map<Loop, LlRbTree<CpNode>>,
49
+ cpNodes) {
50
+ const { cpTrees } = meta;
49
51
  const [cpNodeA, cpNodeB] = cpNodes;
50
52
  // Duplicate ContactPoints
51
53
  // const antipodeCpNode = cpNodeB[0];
52
54
  const cpAntipode = cpNodeB.cp;
53
- const cpNodeB2 = insertCpNode(true, true, false, cpTrees.get(cpAntipode.pointOnShape.curve.loop), { ...cpAntipode, order2: +1 }, cpNodeB);
54
- const cpNodeB1 = insertCpNode(true, true, false, cpTrees.get(cpNodeA.cp.pointOnShape.curve.loop), { ...cpNodeA.cp, order2: -1 }, cpNodeA.prev);
55
+ const cpNodeB2 = insertCpNode(true, true, false, cpTrees.get(cpAntipode.pointOnShape.curve.loop), { ...cpAntipode, order2: +1 }, cpNodeB, meta.lastInsertId);
56
+ const cpNodeB1 = insertCpNode(true, true, false, cpTrees.get(cpNodeA.cp.pointOnShape.curve.loop), { ...cpNodeA.cp, order2: -1 }, cpNodeA.prev, meta.lastInsertId);
55
57
  // Connect graph
56
58
  cpNodeB1.prevOnCircle = cpNodeB2;
57
59
  cpNodeB1.nextOnCircle = cpNodeB2;
@@ -1 +1 @@
1
- {"version":3,"file":"add-2-prong.js","sourceRoot":"","sources":["../../src/find-2-prong/add-2-prong.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add-2-prong.js","sourceRoot":"","sources":["../../src/find-2-prong/add-2-prong.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,9 @@
1
- export { calcSeperationTolerance };
1
+ /**
2
+ * Calculates and returns an appropriate seperation tolerance between `CpNode`s.
3
+ *
4
+ * @param R radius of the circle implied by the curvature at the boundary
5
+ * @param r radius of the MAT circle
6
+ * @param θ angle between point...
7
+ */
2
8
  declare function calcSeperationTolerance(R: number, r: number, δ: number): number;
9
+ export { calcSeperationTolerance };
@@ -14,73 +14,87 @@ const { asin, acos, cos, sqrt, PI: π } = Math;
14
14
  * @param r radius of the MAT circle
15
15
  * @param θ angle between point...
16
16
  */
17
- function calcSeperationTolerance2(R, r, δ) {
18
- const a = r + δ;
19
- if (a >= R) {
20
- return Number.POSITIVE_INFINITY;
21
- }
22
- const b = R - r; //?
23
- const c = R; //?
24
- const N = c * c - a * a - b * b; //?
25
- const N_ = qdq(qdq(tp(c, c), tp(a, a)), tp(b, b));
26
- const D = 2 * a * b; //?
27
- const D_ = tp(-2 * a, b);
28
- const Q = ddDivDd(N_, D_)[1]; //?
29
- const cosC = -N / D; //?
30
- const C = acos(cosC);
31
- const CC = acos(Q);
32
- const θ = π - CC; //?
33
- return θ;
34
- // return r*θ; // approximate arc with line
35
- }
36
- export { calcSeperationTolerance };
37
- function degToRad(degrees) {
38
- return degrees / 360 * 2 * Math.PI;
39
- }
40
- function radToDeg(rad) {
41
- return rad * 360 / 2 / Math.PI;
42
- }
43
- const R = 699;
44
- const r = 698;
45
- const δ = 1000 * 2 ** -46; //?
46
- calcSeperationTolerance(R, r, δ); //?
47
- calcSeperationTolerance2(R, r, δ); //?
48
- calcSeperationTolerance3(R, r, δ); //?
49
17
  function calcSeperationTolerance(R, r, δ) {
50
18
  const a = r + δ;
51
19
  if (a >= R) {
52
20
  return Number.POSITIVE_INFINITY;
53
21
  }
54
- const R_r_ = twoDiff(R, r); //?
55
- const A_ = qmd(r, R_r_); //?
56
- const N_ = qdq(qdq(A_, tp(r, δ)), tp(δ, δ / 2)); //?
57
- const D_ = qaq(A_, qmd(δ, R_r_)); //?
58
- const R_r = R - r; //?
59
- const A = r * R_r; //?
60
- const N = A - r * δ - (δ * δ) / 2; //?
61
- const D = A + R_r * δ; //?
62
- const cosC = N / D; //?
63
- const Q = ddDivDd(N_, D_)[1]; //?
64
- // const Q = N_[1]/D_[1];//?
22
+ const R_r_ = twoDiff(R, r);
23
+ const A_ = qmd(r, R_r_);
24
+ const N_ = qdq(qdq(A_, tp(r, δ)), tp(δ, δ / 2));
25
+ const D_ = qaq(A_, qmd(δ, R_r_));
26
+ const R_r = R - r;
27
+ const A = r * R_r;
28
+ const N = A - r * δ - (δ * δ) / 2;
29
+ const D = A + R_r * δ;
30
+ const cosC = N / D;
31
+ const Q = ddDivDd(N_, D_)[1];
32
+ // const Q = N_[1]/D_[1];
65
33
  const C = acos(cosC);
66
34
  const CC = acos(Q);
67
- const θ = CC; //?
35
+ const θ = CC;
68
36
  // return r*θ;
69
37
  return r * θ;
70
38
  }
71
- // * see https://en.wikipedia.org/wiki/Law_of_cosines, Version suited to small angles
72
- function calcSeperationTolerance3(R, r, δ) {
73
- const a = r + δ; //?
74
- const c = R - r; //?
75
- const b = R; //?
76
- // = (a - b)² + 4ab*sin²(θ/2) OR
77
- // (c² - (a - b)²)/4ab = sin²(θ/2)
78
- const cc = c * c; //?
79
- const abc = a * a + b * b - 2 * a * b; //?
80
- const A = cc - abc; //?
81
- const B = sqrt(A / (4 * a * b)); //?
82
- const θ = 2 * asin(B); //?
83
- return θ;
84
- // return r*θ; // approximate arc with line
85
- }
39
+ export { calcSeperationTolerance };
40
+ // Quokka tests
41
+ // /**
42
+ // * Calculates and returns an appropriate seperation tolerance between `CpNode`s.
43
+ // *
44
+ // * @param R radius of the circle implied by the curvature at the boundary
45
+ // * @param r radius of the MAT circle
46
+ // * @param θ angle between point...
47
+ // */
48
+ // function calcSeperationTolerance2(
49
+ // R: number,
50
+ // r: number,
51
+ // δ: number) {
52
+ // const a = r + δ;
53
+ // if (a >= R) {
54
+ // return Number.POSITIVE_INFINITY;
55
+ // }
56
+ // const b = R - r;
57
+ // const c = R;
58
+ // const N = c*c - a*a - b*b;
59
+ // const N_ = qdq(qdq(tp(c,c), tp(a,a)), tp(b,b));
60
+ // const D = 2*a*b;
61
+ // const D_ = tp(-2*a,b);
62
+ // const Q = ddDivDd(N_,D_)[1];
63
+ // const cosC = -N/D;
64
+ // const C = acos(cosC);
65
+ // const CC = acos(Q);
66
+ // const θ = π - CC;
67
+ // return θ;
68
+ // // return r*θ; // approximate arc with line
69
+ // }
70
+ // function degToRad(degrees: number) {
71
+ // return degrees/360*2*Math.PI;
72
+ // }
73
+ // function radToDeg(rad: number) {
74
+ // return rad*360/2/Math.PI;
75
+ // }
76
+ // const R = 699;
77
+ // const r = 698;
78
+ // const δ = 1000*2**-46;
79
+ // calcSeperationTolerance(R,r,δ);
80
+ // calcSeperationTolerance2(R,r,δ);
81
+ // calcSeperationTolerance3(R,r,δ);
82
+ // // * see https://en.wikipedia.org/wiki/Law_of_cosines, Version suited to small angles
83
+ // function calcSeperationTolerance3(
84
+ // R: number,
85
+ // r: number,
86
+ // δ: number) {
87
+ // const a = r + δ;
88
+ // const c = R - r;
89
+ // const b = R;
90
+ // // c² = (a - b)² + 4ab*sin²(θ/2) OR
91
+ // // (c² - (a - b)²)/4ab = sin²(θ/2)
92
+ // const cc = c*c;
93
+ // const abc = a*a + b*b - 2*a*b;
94
+ // const A = cc - abc;
95
+ // const B = sqrt(A/(4*a*b));
96
+ // const θ = 2*asin(B);
97
+ // return θ;
98
+ // // return r*θ; // approximate arc with line
99
+ // }
86
100
  //# sourceMappingURL=calc-seperation-tolerance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calc-seperation-tolerance.js","sourceRoot":"","sources":["../../src/find-2-prong/calc-seperation-tolerance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEjH,MAAM,EAAE,GAAG,MAAM,CAAC;AAClB,MAAM,EAAE,GAAG,UAAU,CAAC;AACtB,MAAM,EAAE,GAAG,OAAO,CAAC;AACnB,MAAM,GAAG,GAAG,OAAO,CAAC;AACpB,MAAM,GAAG,GAAG,QAAQ,CAAC;AACrB,MAAM,GAAG,GAAG,QAAQ,CAAC;AACrB,MAAM,GAAG,GAAG,aAAa,CAAC;AAE1B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;AAG9C;;;;;;GAMG;AACH,SAAS,wBAAwB,CACzB,CAAS,EACT,CAAS,EACT,CAAS;IAEb,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACT,OAAO,MAAM,CAAC,iBAAiB,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG;IACrB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,GAAG;IAErB,MAAM,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,CAAC,CAAE,GAAG;IAC/B,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,CAAY,GAAG;IAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG;IACjC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAE,GAAG;IACvB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAE,GAAG;IAEtB,OAAO,CAAC,CAAC;IACT,4CAA4C;AAChD,CAAC;AAGD,OAAO,EAAE,uBAAuB,EAAE,CAAA;AAElC,SAAS,QAAQ,CAAC,OAAe;IAC7B,OAAO,OAAO,GAAC,GAAG,GAAC,CAAC,GAAC,IAAI,CAAC,EAAE,CAAC;AACjC,CAAC;AACD,SAAS,QAAQ,CAAC,GAAW;IACzB,OAAO,GAAG,GAAC,GAAG,GAAC,CAAC,GAAC,IAAI,CAAC,EAAE,CAAC;AAC7B,CAAC;AAGD,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,MAAM,CAAC,GAAG,GAAG,CAAC;AACd,MAAM,CAAC,GAAG,IAAI,GAAC,CAAC,IAAE,CAAC,EAAE,CAAC,CAAC,GAAG;AAC1B,uBAAuB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAG,GAAG;AACrC,wBAAwB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAE,GAAG;AACrC,wBAAwB,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAE,GAAG;AAErC,SAAS,uBAAuB,CACxB,CAAS,EACT,CAAS,EACT,CAAS;IAEb,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACT,OAAO,MAAM,CAAC,iBAAiB,CAAC;IACpC,CAAC;IAGD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAE,GAAG;IAC/B,MAAM,EAAE,GAAI,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAI,GAAG;IAC/B,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG;IACjD,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,EAAC,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG;IAEpC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;IACtB,MAAM,CAAC,GAAG,CAAC,GAAC,GAAG,CAAC,CAAG,GAAG;IACtB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAE,GAAG;IACjC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,CAAC,CAAM,GAAG;IAC7B,MAAM,IAAI,GAAG,CAAC,GAAC,CAAC,CAAC,CAAM,GAAG;IAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,GAAG;IAC/B,4BAA4B;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IAElB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAE,GAAG;IAElB,cAAc;IACd,OAAO,CAAC,GAAC,CAAC,CAAC;AACf,CAAC;AAGD,qFAAqF;AACrF,SAAS,wBAAwB,CACzB,CAAS,EACT,CAAS,EACT,CAAS;IAEb,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG;IACrB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG;IACrB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,GAAG;IAErB,mCAAmC;IACnC,kCAAkC;IAClC,MAAM,EAAE,GAAG,CAAC,GAAC,CAAC,CAAC,CAAE,IAAI;IACrB,MAAM,GAAG,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,CAAE,GAAG;IACnC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAE,GAAG;IACxB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAC,CAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG;IAE/B,MAAM,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG;IAEzB,OAAO,CAAC,CAAC;IACT,4CAA4C;AAChD,CAAC"}
1
+ {"version":3,"file":"calc-seperation-tolerance.js","sourceRoot":"","sources":["../../src/find-2-prong/calc-seperation-tolerance.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@ const { ceil, log2, max, sqrt, abs, sin, cos } = Math;
34
34
  * @param loopIdx The loop array index
35
35
  */
36
36
  function find2Prong(meta, isHoleClosing, for1Prong, angle, y) {
37
- const { loops, maxCoordinate, squaredDiagonalLength, cpTrees } = meta;
37
+ const { loops, maxCoordinate, squaredDiagonalLength } = meta;
38
38
  const loop = y.curve.loop;
39
39
  const MAX_ITERATIONS = 25;
40
40
  const minSquaredSeperationTolerance = ((2 ** -21) * maxCoordinate) ** 2;
@@ -47,7 +47,7 @@ function find2Prong(meta, isHoleClosing, for1Prong, angle, y) {
47
47
  const p = y.p;
48
48
  // The boundary piece that should contain the other point of
49
49
  // the 2-prong circle. (Defined by start and end points).
50
- let bezierPieces = getInitialBezierPieces(angle, isHoleClosing, loop, loops, cpTrees, y, { center: xO, radius: rO });
50
+ let bezierPieces = getInitialBezierPieces(angle, isHoleClosing, loop, loops, meta, y, { center: xO, radius: rO });
51
51
  // console.log(bezierPieces.length);
52
52
  /** The center of the two-prong (successively refined) */
53
53
  let x = xO;
@@ -1 +1 @@
1
- {"version":3,"file":"find-2-prong.js","sourceRoot":"","sources":["../../src/find-2-prong/find-2-prong.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-2-prong.js","sourceRoot":"","sources":["../../src/find-2-prong/find-2-prong.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AACnH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAGtD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAS,UAAU,CACjB,IAAa,EACb,aAAsB,EACtB,SAAkB,EAClB,KAAa,EACP,CAAe;IAEtB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;IAE7D,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAE1B,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,6BAA6B,GAAG,CAAC,CAAC,CAAC,IAAE,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC,IAAE,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,CAAC,CAAC,IAAE,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC;IAC9C,iDAAiD;IACjD,MAAM,yBAAyB,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,CAAC,GAAC,yBAAyB,CAAC;IACjD,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAE,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC;IAEjD,MAAM,CAAC,EAAE,EAAC,EAAE,CAAC,GAAG,IAAI,CACnB,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,YAAY,EAAE,CAAC,CAChE,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEd,6DAA6D;IAC7D,yDAAyD;IACzD,IAAI,YAAY,GAAG,sBAAsB,CACxC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CACtE,CAAC;IACF,oCAAoC;IAEpC,yDAAyD;IACzD,IAAI,CAAC,GAAG,EAAE,CAAC;IAEX,sCAAsC;IACtC,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAClE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACb,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,2DAA2D;IAC3D,IAAI,EAAE,GAAmB,SAAU,CAAC;IACpC,IAAI,CAAC,GAAiB,SAAU,CAAC;IAEjC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,cAAc,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,YAAY,GAAG,iBAAiB,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAAC,CAAC;QACrE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,EAAC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,sBAAsB;QAC5E,oBAAoB;QACpB,MAAM,GAAG,GAAG,+BAA+B,CAC1C,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAClC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAC,YAAY,EAC5C,KAAK,CACL,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpD,IAAI,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACpC,IAAI,MAAM,GAAiB,SAAU,CAAC;QACtC,EAAE,GAAG,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAClC,MAAM,GAAG,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;gBAChB,IAAI,GAAG,GAAG,CAAC;gBACX,MAAM,GAAG,CAAC,CAAC;YACZ,CAAC;YACD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACf,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC;QACF,CAAC;QACD,aAAa;QACb,MAAM,EAAE,GAAG,IAAI,CAAC;QAChB,CAAC,GAAG,MAAM,CAAC;QAEX,IAAI,CAAC,KAAK,SAAS,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACjC,gCAAgC;YAChC,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5C,kBAAkB;QAClB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACb,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC,GAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3C,yBAAyB;gBACzB,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC3B,OAAO,SAAS,CAAC;YAClB,CAAC;QACF,CAAC;QAED,wGAAwG;QAGxG,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,MAAM,0BAA0B,GAAG,GAAG,CAAC,uBAAuB,CAC7D,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAE,CAAC,GAAC,cAAc,CACjC,EAAE,6BAA6B,CAAC,CAAC;YAClC,IAAI,EAAE,IAAI,0BAA0B,EAAE,CAAC;gBACtC,qGAAqG;gBACrG,OAAO,SAAS,CAAC;YAClB,CAAC;QACF,CAAC;QAED,2DAA2D;QAC3D,qDAAqD;QACrD,MAAM,KAAK,GAAG,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,qCAAqC;QAErC,CAAC,GAAG,KAAK,CAAC;QAEV,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;YAC5B,MAAM;QACP,CAAC;QAED,CAAC,EAAE,CAAC;QAEJ,IAAI,CAAC,KAAK,cAAc,EAAE,CAAC;YAC1B,4BAA4B;YAC5B,gGAAgG;YAChG,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9D,sHAAsH;IAEtH,yBAAyB;IACzB,uCAAuC;IACvC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5B,CAAC;AAGD,SAAS,IAAI,CACX,KAAa,EACb,aAAsB,EACtB,yBAAiC,EACjC,YAAoB,EACpB,CAAe;IAEhB,IAAI,EAAY,CAAC,CAAE,mCAAmC;IACtD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,EAAU,CAAC;IACf,IAAI,aAAa,EAAE,CAAC;QACnB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC;QAC9C,EAAE,GAAG,yBAAyB,CAAC;IAChC,CAAC;SAAM,CAAC;QACP,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACjB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACP,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IAED,OAAO,CAAC,EAAE,EAAC,EAAE,CAAsB,CAAC;AACrC,CAAC;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -1,9 +1,8 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
2
1
  import { Loop } from 'flo-boolean';
3
2
  import { CurvePiece } from '../mat/curve-piece.js';
4
- import { CpNode } from '../cp-node/cp-node.js';
5
3
  import { PointOnShape } from '../point-on-shape/point-on-shape.js';
6
4
  import { Circle } from '../geometry/circle.js';
5
+ import { MatMeta } from '../index.js';
7
6
  /** @internal */
8
- declare function getInitialBezierPieces(angle: number, isHoleClosing: boolean, loop: Loop, loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>, y: PointOnShape, circle: Circle): CurvePiece[];
7
+ declare function getInitialBezierPieces(angle: number, isHoleClosing: boolean, loop: Loop, loops: Loop[], meta: MatMeta, y: PointOnShape, circle: Circle): CurvePiece[];
9
8
  export { getInitialBezierPieces };
@@ -4,7 +4,10 @@ import { calcPosOrder } from '../point-on-shape/calc-pos-order.js';
4
4
  import { isPosCorner } from '../point-on-shape/is-pos-corner.js';
5
5
  import { getPosCorner } from '../point-on-shape/get-pos-corner.js';
6
6
  /** @internal */
7
- function getInitialBezierPieces(angle, isHoleClosing, loop, loops, cpTrees, y, circle) {
7
+ function getInitialBezierPieces(angle, isHoleClosing, loop, loops,
8
+ // cpTrees: Map<Loop,LlRbTree<CpNode>>,
9
+ meta, y, circle) {
10
+ const { cpTrees } = meta;
8
11
  if (isHoleClosing) {
9
12
  return loops
10
13
  .filter(_loop => _loop !== loop)
@@ -1 +1 @@
1
- {"version":3,"file":"get-initial-bezier-pieces.js","sourceRoot":"","sources":["../../src/find-2-prong/get-initial-bezier-pieces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAI/E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,gBAAgB;AAChB,SAAS,sBAAsB,CACvB,KAAa,EACb,aAAsB,EACtB,IAAU,EACV,KAAa,EACb,OAAmC,EACnC,CAAe,EACf,MAAc;IAElB,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,KAAK;aACX,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;aAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;aACvB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM;QAClD,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;YACtB,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACX,CAAC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC,CAAC;IAER,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM;QACP,8DAA8D;QAC9D,kEAAkE;QAClE,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/B,CAAC;QACC,OAAO,IAAI,CAAC,MAAM;aACjB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,uBAAuB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACrD,CAAC;AAGD,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
1
+ {"version":3,"file":"get-initial-bezier-pieces.js","sourceRoot":"","sources":["../../src/find-2-prong/get-initial-bezier-pieces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAI/E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAInE,gBAAgB;AAChB,SAAS,sBAAsB,CACvB,KAAa,EACb,aAAsB,EACtB,IAAU,EACV,KAAa;AACb,uCAAuC;AACvC,IAAa,EACb,CAAe,EACf,MAAc;IAElB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEzB,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,KAAK;aACX,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;aAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;aACvB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM;QAClD,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;YACtB,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACX,CAAC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC,CAAC;IAER,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM;QACP,8DAA8D;QAC9D,kEAAkE;QAClE,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/B,CAAC;QACC,OAAO,IAAI,CAAC,MAAM;aACjB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,uBAAuB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACrD,CAAC;AAGD,OAAO,EAAE,sBAAsB,EAAE,CAAA"}