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
@@ -35,7 +35,7 @@ function findAndAdd3Prong(meta, visitedCps) {
35
35
  }
36
36
  }
37
37
  const cpNodes = closeBysFor3Prong.length === 0
38
- ? addToCpTree(true, false, circle, orders, meta.cpTrees, poss, δ3s.map(v => v[0])).cpNodes
38
+ ? addToCpTree(true, false, circle, orders, meta, poss, δ3s.map(v => v[0])).cpNodes
39
39
  : [];
40
40
  return { closeBysFor3Prong, cpNodes: cpNodes };
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"find-and-add-3-prong.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/find-and-add-3-prong.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,IAAa,EACb,UAAoB;IAErB,MAAM,EAAE,GAAuB,EAAE,CAAC;IAClC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAE1D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC;IAE7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC/C,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAC7C,CAAC,CAAC,WAAW,CACZ,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnE,CAAC,OAAO;QACT,CAAC,CAAC,EAAE,CAAC;IAEN,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAmB,EAAE,CAAC;AAC5D,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"find-and-add-3-prong.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/find-and-add-3-prong.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjE;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,IAAa,EACb,UAAoB;IAErB,MAAM,EAAE,GAAuB,EAAE,CAAC;IAClC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAE1D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC;IAE7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC/C,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAC7C,CAAC,CAAC,WAAW,CACZ,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3D,CAAC,OAAO;QACT,CAAC,CAAC,EAAE,CAAC;IAEN,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAmB,EAAE,CAAC;AAC5D,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -1,5 +1,5 @@
1
- import { CpNode } from '../cp-node/cp-node.js';
2
- import { MatMeta } from '../mat/mat-meta.js';
1
+ import type { CpNode } from '../cp-node/cp-node.js';
2
+ import type { MatMeta } from '../mat/mat-meta.js';
3
3
  /**
4
4
  * @internal
5
5
  * Finds and adds all 3-prongs on a loop.
@@ -1,6 +1,9 @@
1
1
  import { findAndAdd3Prongs } from './find-and-add-3-prongs.js';
2
2
  import { getAllOnLoop } from '../cp-node/fs/get-all-on-loop.js';
3
3
  import { removeVertex } from '../vertex/remove-vertex.js';
4
+ // import { LlRbTree } from 'flo-ll-rb-tree';
5
+ // import { Loop } from 'flo-boolean';
6
+ // import { drawFs } from 'flo-draw';
4
7
  import { getAllOnCircle } from '../cp-node/fs/get-all-on-circle.js';
5
8
  /**
6
9
  * @internal
@@ -28,7 +31,7 @@ function findAndAdd3ProngsOnLoop(meta, cpStart) {
28
31
  }
29
32
  else {
30
33
  reLoop = true;
31
- replaceCloseBys(meta.cpTrees, closeBysFor3Prong, cpNodeSet, cpNodeGoodSet);
34
+ replaceCloseBys(meta, closeBysFor3Prong, cpNodeSet, cpNodeGoodSet);
32
35
  }
33
36
  addedCpNodes.forEach(cpNodes => cpNodes.forEach(cpNode => cpNodeGoodSet.add(cpNode)));
34
37
  }
@@ -50,13 +53,15 @@ function getLastItemOfSet(set) {
50
53
  for (item of set) { }
51
54
  return item;
52
55
  }
53
- function replaceCloseBys(cpTrees, closeBysFor3Prong, cpNodeSet, cpNodeGoodSet) {
56
+ function replaceCloseBys(
57
+ // cpTrees: Map<Loop,LlRbTree<CpNode>>,
58
+ meta, closeBysFor3Prong, cpNodeSet, cpNodeGoodSet) {
54
59
  for (const closeBy of [closeBysFor3Prong[0]]) {
55
60
  getAllOnCircle(closeBy).forEach(v => {
56
61
  cpNodeSet.delete(v);
57
62
  cpNodeGoodSet.delete(v);
58
63
  });
59
- removeVertex(closeBy, cpTrees);
64
+ removeVertex(closeBy, meta);
60
65
  }
61
66
  }
62
67
  export { findAndAdd3ProngsOnLoop };
@@ -1 +1 @@
1
- {"version":3,"file":"find-and-add-3-prongs-on-loop.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/find-and-add-3-prongs-on-loop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE;;;;;;IAMI;AACJ,SAAS,uBAAuB,CACxB,IAAa,EACb,OAA2B;IAE/B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAAC,OAAO,SAAU,CAAC;IAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,OAAO,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,KAAK,CAAC;QACf,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;YAE7B,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,GACrC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEpC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC;YAE/C,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAClC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC;gBACd,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YAC/E,CAAC;YAED,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,GAAG,iBAAiB,CAAC,aAAa,CAAE,CAAC;IAChD,CAAC;IAED,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC;AAGD,oDAAoD;AACpD,SAAS,iBAAiB,CAAI,GAAW;IACrC,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACjB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAGD,qEAAqE;AACrE,2CAA2C;AAC3C,SAAS,gBAAgB,CAAI,GAAW;IACpC,IAAI,IAAI,CAAC;IACT,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA,CAAC;IAEpB,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,SAAS,eAAe,CAChB,OAAmC,EACnC,iBAA2B,EAC3B,SAAsB,EACtB,aAA0B;IAE9B,KAAK,MAAM,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAChC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;AACL,CAAC;AAGD,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
1
+ {"version":3,"file":"find-and-add-3-prongs-on-loop.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/find-and-add-3-prongs-on-loop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,6CAA6C;AAC7C,sCAAsC;AACtC,qCAAqC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE;;;;;;IAMI;AACJ,SAAS,uBAAuB,CACxB,IAAa,EACb,OAA2B;IAE/B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAAC,OAAO,SAAU,CAAC;IAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,OAAO,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,KAAK,CAAC;QACf,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;YAE7B,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,GACrC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEpC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC;YAE/C,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAClC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC;gBACd,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YACvE,CAAC;YAED,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,GAAG,iBAAiB,CAAC,aAAa,CAAE,CAAC;IAChD,CAAC;IAED,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC5C,CAAC;AAGD,oDAAoD;AACpD,SAAS,iBAAiB,CAAI,GAAW;IACrC,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACjB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAGD,qEAAqE;AACrE,2CAA2C;AAC3C,SAAS,gBAAgB,CAAI,GAAW;IACpC,IAAI,IAAI,CAAC;IACT,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA,CAAC;IAEpB,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,SAAS,eAAe;AAChB,uCAAuC;AACvC,IAAa,EACb,iBAA2B,EAC3B,SAAsB,EACtB,aAA0B;IAE9B,KAAK,MAAM,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAChC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;AACL,CAAC;AAGD,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
@@ -6,10 +6,14 @@ import { PointOnShape } from '../point-on-shape/point-on-shape.js';
6
6
  * @internal
7
7
  * Creates the initial ContactPoint loops from the given sharp corners.
8
8
  *
9
- * * modifies `cpTrees`
9
+ * * modifies `cpTrees` and `lastInsertId` of `meta`
10
10
  *
11
- * @param shape
11
+ * @param loops
12
+ * @param cpTrees
12
13
  * @param sharpCornerss
14
+ * @param lastInsertId
13
15
  */
14
- declare function createInitialCpTree(loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>, sharpCornerss: PointOnShape[][]): CpNode | undefined;
16
+ declare function createInitialCpTree(loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>, sharpCornerss: PointOnShape[][], lastInsertId: {
17
+ id: number;
18
+ }): CpNode | undefined;
15
19
  export { createInitialCpTree };
@@ -6,12 +6,14 @@ const { cpNodeComparator } = CpNodeFs;
6
6
  * @internal
7
7
  * Creates the initial ContactPoint loops from the given sharp corners.
8
8
  *
9
- * * modifies `cpTrees`
9
+ * * modifies `cpTrees` and `lastInsertId` of `meta`
10
10
  *
11
- * @param shape
11
+ * @param loops
12
+ * @param cpTrees
12
13
  * @param sharpCornerss
14
+ * @param lastInsertId
13
15
  */
14
- function createInitialCpTree(loops, cpTrees, sharpCornerss) {
16
+ function createInitialCpTree(loops, cpTrees, sharpCornerss, lastInsertId) {
15
17
  let cpNode;
16
18
  for (let k = 0; k < sharpCornerss.length; k++) {
17
19
  const sharpCorners = sharpCornerss[k];
@@ -22,8 +24,8 @@ function createInitialCpTree(loops, cpTrees, sharpCornerss) {
22
24
  const circle = { center: pos.p, radius: 0 };
23
25
  const cp1 = { pointOnShape: pos, circle, order: -1, order2: 0 };
24
26
  const cp2 = { pointOnShape: pos, circle, order: +1, order2: 0 };
25
- cpNode1 = insertCpNode(true, false, false, cpTree, cp1, cpNode2);
26
- cpNode2 = insertCpNode(true, false, false, cpTree, cp2, cpNode1);
27
+ cpNode1 = insertCpNode(true, false, false, cpTree, cp1, cpNode2, lastInsertId);
28
+ cpNode2 = insertCpNode(true, false, false, cpTree, cp2, cpNode1, lastInsertId);
27
29
  cpNode1.prevOnCircle = cpNode2;
28
30
  cpNode2.prevOnCircle = cpNode1;
29
31
  cpNode1.nextOnCircle = cpNode2;
@@ -1 +1 @@
1
- {"version":3,"file":"create-initial-cp-tree.js","sourceRoot":"","sources":["../../src/find-mat/create-initial-cp-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,MAAM,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC;AAGtC;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CACpB,KAAa,EACb,OAAoC,EACpC,aAA+B;IAEnC,IAAI,MAAM,CAAC;IACX,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,OAAO,GAAuB,SAAS,CAAC;QAC5C,IAAI,OAAO,GAAuB,SAAS,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAE5C,MAAM,GAAG,GAAiB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC9E,MAAM,GAAG,GAAiB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAE9E,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;YAClE,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;YAElE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,MAAM,GAAG,OAAO,CAAC;QAAC,CAAC;QAElC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
1
+ {"version":3,"file":"create-initial-cp-tree.js","sourceRoot":"","sources":["../../src/find-mat/create-initial-cp-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,MAAM,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC;AAGtC;;;;;;;;;;GAUG;AACH,SAAS,mBAAmB,CACpB,KAAa,EACb,OAAoC,EACpC,aAA+B,EAC/B,YAA4B;IAEhC,IAAI,MAA0B,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,OAAO,GAAuB,SAAS,CAAC;QAC5C,IAAI,OAAO,GAAuB,SAAS,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAE5C,MAAM,GAAG,GAAiB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC9E,MAAM,GAAG,GAAiB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAE9E,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,CAAE,CAAC;YAChF,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,CAAE,CAAC;YAEhF,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;YAC/B,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,MAAM,GAAG,OAAO,CAAC;QAAC,CAAC;QAElC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { CpNode } from '../cp-node/cp-node.js';
2
2
  import { Loop } from 'flo-boolean';
3
3
  import { MatOptions } from './mat-options.js';
4
+ import { MatMeta } from '../mat/mat-meta.js';
4
5
  /**
5
6
  * @internal
6
7
  * Find the MAT of the given loops.
@@ -9,7 +10,7 @@ import { MatOptions } from './mat-options.js';
9
10
  */
10
11
  declare function findMat(loops: Loop[], maxCoordinate: number, options: Required<MatOptions>): {
11
12
  cpNode: CpNode;
12
- meta: import("../index.js").MatMeta;
13
+ meta: MatMeta;
13
14
  };
14
15
  export { findMat };
15
16
  /** Curvilinear Shape Features (CSFs) */
@@ -1,6 +1,6 @@
1
1
  import { findAndAdd3ProngsOnLoop } from '../find-3-prong.ts/find-and-add-3-prongs-on-loop.js';
2
2
  import { createInitialCpTree } from './create-initial-cp-tree.js';
3
- import { getMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 } from './get-meta.js';
3
+ import { getPointToCpNode, getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 } from './get-meta.js';
4
4
  import { getSharpCornersOnLoop } from './get-sharp-corners.js';
5
5
  import { getDullCornersOnLoop } from './get-dull-corners-on-loop.js';
6
6
  import { findAndAdd2ProngsOnAllLoops } from '../find-2-prong/find-and-add-2-prongs-on-all-loops.js';
@@ -21,12 +21,18 @@ function findMat(loops, maxCoordinate, options) {
21
21
  const getFor2ProngsOnLoop_ = getFor2ProngsOnLoop(minBezLength, maxCurviness, maxLength);
22
22
  const getFor1ProngsOnLoop_ = getFor1ProngsOnLoop(minBezLength);
23
23
  const sharpCornersPerLoop = loops.map(getSharpCornersOnLoop_);
24
- const cpTrees = new Map();
25
- createInitialCpTree(loops, cpTrees, sharpCornersPerLoop);
26
24
  const bounds = getShapeBounds(loops);
27
25
  const squaredDiagonalLength = (bounds.maxX.p[0] - bounds.minX.p[0]) ** 2 +
28
26
  (bounds.maxY.p[1] - bounds.minY.p[1]) ** 2;
29
- const meta = getMeta(maxCoordinate, squaredDiagonalLength, loops, cpTrees);
27
+ const cpTrees = new Map();
28
+ const lastInsertId = { id: 0 };
29
+ createInitialCpTree(loops, cpTrees, sharpCornersPerLoop, lastInsertId);
30
+ const _meta = getPartialMeta(loops);
31
+ const pointToCpNode = getPointToCpNode(loops, cpTrees);
32
+ const meta = {
33
+ maxCoordinate, squaredDiagonalLength, loops, cpTrees, pointToCpNode,
34
+ lastInsertId, ..._meta
35
+ };
30
36
  let cpNode;
31
37
  cpNode = findAndAddHoleClosing2Prongs(meta);
32
38
  if (typeof _debug_ !== 'undefined') {
@@ -1 +1 @@
1
- {"version":3,"file":"find-mat.js","sourceRoot":"","sources":["../../src/find-mat/find-mat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-mat.js","sourceRoot":"","sources":["../../src/find-mat/find-mat.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import { Loop } from 'flo-boolean';
2
2
  import { LlRbTree } from 'flo-ll-rb-tree';
3
3
  import { CpNode } from '../cp-node/cp-node.js';
4
+ import { TriMap } from '../utils/tri-map.js';
4
5
  import { MatMeta } from '../mat/mat-meta.js';
5
6
  /** @internal */
6
- declare function getMeta(maxCoordinate: number, squaredDiagonalLength: number, loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>): MatMeta;
7
+ declare function getPointToCpNode(loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>): TriMap<Loop, number, number, CpNode>;
8
+ /** @internal */
9
+ declare function getPartialMeta(loops: Loop[]): Omit<MatMeta, 'cpTrees' | 'pointToCpNode' | 'loops' | 'maxCoordinate' | 'squaredDiagonalLength' | 'lastInsertId'>;
7
10
  /** @internal */
8
11
  declare function addDebugInfo2(): void;
9
12
  declare function addDebugInfo3(): void;
10
13
  declare function addDebugInfo4(): void;
11
- export { getMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 };
14
+ export { getPointToCpNode, getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 };
@@ -4,14 +4,9 @@ import { TriMapFs } from '../utils/tri-map.js';
4
4
  import { getCorner } from '../corner/get-corner.js';
5
5
  let timingStart;
6
6
  /** @internal */
7
- function getMeta(maxCoordinate, squaredDiagonalLength, loops, cpTrees) {
7
+ function getPointToCpNode(loops, cpTrees) {
8
8
  timingStart = performance.now();
9
9
  const pointToCpNode = new Map();
10
- const looseBoundingBoxes = [];
11
- const tightBoundingBoxes = [];
12
- const boundingHulls = [];
13
- const sharpCorners = [];
14
- const dullCorners = [];
15
10
  for (const loop of loops) {
16
11
  // Populate `posMap`
17
12
  const cpTree = cpTrees.get(loop);
@@ -20,7 +15,18 @@ function getMeta(maxCoordinate, squaredDiagonalLength, loops, cpTrees) {
20
15
  const { p, t } = cpNode.cp.pointOnShape;
21
16
  TriMapFs.set(pointToCpNode, loop, p[0], p[1], cpNode);
22
17
  }
23
- for (let curve of loop.curves) {
18
+ }
19
+ return pointToCpNode;
20
+ }
21
+ /** @internal */
22
+ function getPartialMeta(loops) {
23
+ const looseBoundingBoxes = [];
24
+ const tightBoundingBoxes = [];
25
+ const boundingHulls = [];
26
+ const sharpCorners = [];
27
+ const dullCorners = [];
28
+ for (const loop of loops) {
29
+ for (const curve of loop.curves) {
24
30
  const ps = curve.ps;
25
31
  const hull = getBoundingHull(ps, true);
26
32
  boundingHulls.push(hull);
@@ -38,16 +44,11 @@ function getMeta(maxCoordinate, squaredDiagonalLength, loops, cpTrees) {
38
44
  }
39
45
  }
40
46
  return {
41
- maxCoordinate,
42
- squaredDiagonalLength,
43
47
  looseBoundingBoxes,
44
48
  tightBoundingBoxes,
45
49
  boundingHulls,
46
50
  sharpCorners,
47
- dullCorners,
48
- loops,
49
- cpTrees,
50
- pointToCpNode
51
+ dullCorners
51
52
  };
52
53
  }
53
54
  /** @internal */
@@ -78,5 +79,5 @@ function addDebugInfo4() {
78
79
  const timing = generated.timing;
79
80
  timing.threeProngs += performance.now() - timingStart;
80
81
  }
81
- export { getMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 };
82
+ export { getPointToCpNode, getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 };
82
83
  //# sourceMappingURL=get-meta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-meta.js","sourceRoot":"","sources":["../../src/find-mat/get-meta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-meta.js","sourceRoot":"","sources":["../../src/find-mat/get-meta.ts"],"names":[],"mappings":"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"}
package/node/index.d.ts CHANGED
@@ -46,5 +46,4 @@ export { getSharpCornersOnLoop } from './find-mat/get-sharp-corners.js';
46
46
  export { getFor2ProngsOnLoop } from './find-mat/get-for-2-prongs-on-loop.js';
47
47
  export { getPotentialClosestPointsOnCurveCertified } from './closest-boundary-point/get-potential-closest-points-on-curve-certified.js';
48
48
  export { getCloseBoundaryPointsCertified } from './closest-boundary-point/get-close-boundary-points-certified.js';
49
- export { getMeta } from './find-mat/get-meta.js';
50
49
  export { findAndAddHoleClosing2Prongs } from './find-2-prong/find-and-add-hole-closing-2-prongs.js';
package/node/index.js CHANGED
@@ -30,6 +30,6 @@ export { getSharpCornersOnLoop } from './find-mat/get-sharp-corners.js';
30
30
  export { getFor2ProngsOnLoop } from './find-mat/get-for-2-prongs-on-loop.js';
31
31
  export { getPotentialClosestPointsOnCurveCertified } from './closest-boundary-point/get-potential-closest-points-on-curve-certified.js';
32
32
  export { getCloseBoundaryPointsCertified } from './closest-boundary-point/get-close-boundary-points-certified.js';
33
- export { getMeta } from './find-mat/get-meta.js';
33
+ // export { getMeta } from './find-mat/get-meta.js';
34
34
  export { findAndAddHoleClosing2Prongs } from './find-2-prong/find-and-add-hole-closing-2-prongs.js';
35
35
  //# sourceMappingURL=index.js.map
package/node/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmBpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,yCAAyC,EAAE,MAAM,6EAA6E,CAAC;AACxI,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sDAAsD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmBpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,yCAAyC,EAAE,MAAM,6EAA6E,CAAC;AACxI,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,oDAAoD;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sDAAsD,CAAC"}
@@ -1,8 +1,7 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
2
- import { Loop } from 'flo-boolean';
3
- import { Circle } from '../geometry/circle.js';
4
- import { PointOnShape } from '../point-on-shape/point-on-shape.js';
5
- import { CpNode } from '../cp-node/cp-node.js';
1
+ import type { Circle } from '../geometry/circle.js';
2
+ import type { PointOnShape } from '../point-on-shape/point-on-shape.js';
3
+ import type { CpNode } from '../cp-node/cp-node.js';
4
+ import type { MatMeta } from '../index.js';
6
5
  /**
7
6
  * @param circle
8
7
  * @param orders
@@ -12,7 +11,7 @@ import { CpNode } from '../cp-node/cp-node.js';
12
11
  *
13
12
  * @internal
14
13
  */
15
- declare function addToCpTree(insertIfOrderIsWrong: boolean, isHoleClosing: boolean, circle: Circle, orders: number[], cpTrees: Map<Loop, LlRbTree<CpNode>>, poss: PointOnShape[], neighbors?: CpNode[]): {
14
+ declare function addToCpTree(insertIfOrderIsWrong: boolean, isHoleClosing: boolean, circle: Circle, orders: number[], meta: MatMeta, poss: PointOnShape[], neighbors?: CpNode[]): {
16
15
  anyFailed: boolean;
17
16
  cpNodes: (CpNode | undefined)[];
18
17
  };
@@ -10,7 +10,10 @@ import { joinSpokes } from '../add-n-prong.ts/join-spokes.js';
10
10
  *
11
11
  * @internal
12
12
  */
13
- function addToCpTree(insertIfOrderIsWrong, isHoleClosing, circle, orders, cpTrees, poss, neighbors) {
13
+ function addToCpTree(insertIfOrderIsWrong, isHoleClosing, circle, orders,
14
+ // cpTrees: Map<Loop,LlRbTree<CpNode>>,
15
+ meta, poss, neighbors) {
16
+ const { cpTrees } = meta;
14
17
  let anyFailed = false;
15
18
  const cpNodes = poss.map((pos, i) => {
16
19
  const order = orders[i];
@@ -19,7 +22,7 @@ function addToCpTree(insertIfOrderIsWrong, isHoleClosing, circle, orders, cpTree
19
22
  const pred = neighbors === undefined
20
23
  ? getCpNodeToLeftOrSame(cpTree, pos, order, 0)
21
24
  : neighbors[i];
22
- const cpNode = insertCpNode(insertIfOrderIsWrong, isHoleClosing, false, cpTree, cp, pred);
25
+ const cpNode = insertCpNode(insertIfOrderIsWrong, isHoleClosing, false, cpTree, cp, pred, meta.lastInsertId);
23
26
  if (cpNode === undefined) {
24
27
  anyFailed = true;
25
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"add-to-cp-tree.js","sourceRoot":"","sources":["../../src/mat/add-to-cp-tree.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAG9D;;;;;;;;GAQG;AACH,SAAS,WAAW,CACZ,oBAA6B,EAC7B,aAAsB,EACtB,MAAc,EACd,MAAgB,EAChB,OAAmC,EACnC,IAAoB,EACpB,SAAqB;IAEzB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC,CAAC,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QAC5C,MAAM,EAAE,GAAiB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEzE,MAAM,IAAI,GAAG,SAAS,KAAK,SAAS;YAChC,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEnB,MAAM,MAAM,GAAG,YAAY,CAAC,oBAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1F,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;QAE/C,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,UAAU,CAAC,MAAM,EAAE,OAAmB,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"add-to-cp-tree.js","sourceRoot":"","sources":["../../src/mat/add-to-cp-tree.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAG9D;;;;;;;;GAQG;AACH,SAAS,WAAW,CACZ,oBAA6B,EAC7B,aAAsB,EACtB,MAAc,EACd,MAAgB;AAChB,uCAAuC;AACvC,IAAa,EACb,IAAoB,EACpB,SAAqB;IAEzB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEzB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC,CAAC,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QAC5C,MAAM,EAAE,GAAiB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEzE,MAAM,IAAI,GAAG,SAAS,KAAK,SAAS;YAChC,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEnB,MAAM,MAAM,GAAG,YAAY,CACvB,oBAAoB,EACpB,aAAa,EACb,KAAK,EACL,MAAM,EACN,EAAE,EACF,IAAI,EACJ,IAAI,CAAC,YAAY,CACpB,CAAC;QAEF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC;QAAC,CAAC;QAE/C,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,UAAU,CAAC,MAAM,EAAE,OAAmB,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAClC,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -1,3 +1,10 @@
1
1
  import { CpNode } from '../cp-node/cp-node.js';
2
+ /**
3
+ * Returns all branches associated with the give cpNode.
4
+ *
5
+ * * the final `CpNode` of each branch is not returned to improve symmetry
6
+ *
7
+ * @param cpNode `CpNode` representing the start vertex.
8
+ */
2
9
  declare function getBranches(cpNode: CpNode): CpNode[][];
3
10
  export { getBranches };
@@ -1,5 +1,12 @@
1
1
  import { getBranch } from '../cp-node/fs/get-branch.js';
2
2
  import { getNonTerminatingOnCircle } from '../cp-node/fs/get-non-terminating-on-circle.js';
3
+ /**
4
+ * Returns all branches associated with the give cpNode.
5
+ *
6
+ * * the final `CpNode` of each branch is not returned to improve symmetry
7
+ *
8
+ * @param cpNode `CpNode` representing the start vertex.
9
+ */
3
10
  function getBranches(cpNode) {
4
11
  const branches = [];
5
12
  const cpNodeStack = [cpNode];
@@ -1 +1 @@
1
- {"version":3,"file":"get-branches.js","sourceRoot":"","sources":["../../src/mat/get-branches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAG3F,SAAS,WAAW,CAClB,MAAc;IAEf,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,MAAM,WAAW,GAAa,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,aAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC7C,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAG,CAAC;QAClC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS;QACV,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE1D,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAExE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC/B,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC/B,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"get-branches.js","sourceRoot":"","sources":["../../src/mat/get-branches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAG3F;;;;;;GAMG;AACH,SAAS,WAAW,CACZ,MAAc;IAElB,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,MAAM,WAAW,GAAa,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,aAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC7C,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAG,CAAC;QAClC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,SAAS;QACb,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE1D,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAExE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -14,11 +14,18 @@ interface MatMeta {
14
14
  readonly loops: Loop[];
15
15
  /**
16
16
  * Primarily for internal use. A tree structure storing the
17
- * [[CpNode]]s of the MAT by their compare order, i.e. their cyclic order
17
+ * `CpNode`s of the MAT by their compare order, i.e. their cyclic order
18
18
  * around the shape boundary.
19
19
  */
20
20
  readonly cpTrees: Map<Loop, LlRbTree<CpNode>>;
21
21
  /** A map from a bezier and t value to a `PointOnShape` */
22
22
  readonly pointToCpNode: TriMap<Loop, number, number, CpNode>;
23
+ /**
24
+ * Stores the last insert id so each `CpNode` can have a unique id for
25
+ * debugging purposes
26
+ */
27
+ readonly lastInsertId: {
28
+ id: number;
29
+ };
23
30
  }
24
31
  export { MatMeta };
package/node/mat/mat.d.ts CHANGED
@@ -3,13 +3,13 @@ import { MatMeta } from './mat-meta.js';
3
3
  /**
4
4
  * Represents a complete Medial Axis Transform (MAT).
5
5
  *
6
- * The MAT is fully described through its [[CpNode]] property. The [[cpTrees]]
6
+ * The MAT is fully described through its `CpNode` property. The [[cpTrees]]
7
7
  * property is only added to facilitate extension of the MAT, e.g. by adding
8
- * extra maximal disks and is typically not used. See [[CpNode]] for more
8
+ * extra maximal disks and is typically not used. See `CpNode` for more
9
9
  * details.
10
10
  */
11
11
  interface Mat {
12
- /** A complete representation of the MAT. See [[CpNode]]. */
12
+ /** A complete representation of the MAT. See `CpNode`. */
13
13
  cpNode: CpNode;
14
14
  /**
15
15
  * Stores additional info about the shape that could be useful for various
@@ -58,7 +58,7 @@ function simplifyMat(mat, hausdorffTolerance = 2 ** -3, maxIterations = 50) {
58
58
  for (const cpNode of canDeletes) {
59
59
  if (!isVertex(cpNode => (getProngCount(cpNode) !== 2) &&
60
60
  !cpNode.isHoleClosing)(cpNode)) {
61
- removeVertex(cpNode, mat.meta.cpTrees);
61
+ removeVertex(cpNode, mat.meta);
62
62
  }
63
63
  }
64
64
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"simplify-mat.js","sourceRoot":"","sources":["../../src/mat/simplify-mat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simplify-mat.js","sourceRoot":"","sources":["../../src/mat/simplify-mat.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Curve } from '../curve/curve.js';
2
2
  interface PointOnShape {
3
- /** The [[ICurve]] on the shape boundary this points belong to. */
3
+ /** The `Curve` on the shape boundary this points belong to. */
4
4
  curve: Curve;
5
5
  /** The bezier parameter value on the curve identifying the point coordinates. */
6
6
  t: number;
@@ -1,5 +1,4 @@
1
- import { Loop } from 'flo-boolean';
2
- import { LlRbTree } from 'flo-ll-rb-tree';
3
- import { CpNode } from "../cp-node/cp-node.js";
4
- declare function removeVertex(cpNode: CpNode, cpTrees: Map<Loop, LlRbTree<CpNode>>): void;
1
+ import type { CpNode } from "../cp-node/cp-node.js";
2
+ import type { MatMeta } from '../mat/mat-meta.js';
3
+ declare function removeVertex(cpNode: CpNode, meta: MatMeta): void;
5
4
  export { removeVertex };
@@ -1,12 +1,13 @@
1
1
  import { getAllOnCircle } from '../cp-node/fs/get-all-on-circle.js';
2
2
  import { getProngCount } from '../cp-node/fs/get-prong-count.js';
3
3
  import { removeCpNode } from '../cp-node/fs/remove-cp-node.js';
4
- function removeVertex(cpNode, cpTrees) {
4
+ function removeVertex(cpNode, meta) {
5
+ // cpTrees: Map<Loop, LlRbTree<CpNode>>): void {
5
6
  const prongCount = getProngCount(cpNode);
6
7
  if (prongCount !== 2) {
7
8
  throw new Error(`Cannot delete \`CpNode\` on ${prongCount}-prong`);
8
9
  }
9
- getAllOnCircle(cpNode).forEach(cpNode => removeCpNode(cpNode, cpTrees));
10
+ getAllOnCircle(cpNode).forEach(cpNode => removeCpNode(cpNode, meta));
10
11
  }
11
12
  export { removeVertex };
12
13
  //# sourceMappingURL=remove-vertex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove-vertex.js","sourceRoot":"","sources":["../../src/vertex/remove-vertex.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,SAAS,YAAY,CACb,MAAc,EACd,OAAoC;IAExC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,QAAQ,CAAC,CAAA;IACtE,CAAC;IAED,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5E,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"remove-vertex.js","sourceRoot":"","sources":["../../src/vertex/remove-vertex.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,SAAS,YAAY,CACb,MAAc,EACd,IAAa;IACb,gDAAgD;IAEpD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,QAAQ,CAAC,CAAA;IACtE,CAAC;IAED,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "flo-mat",
3
3
  "sideEffects": false,
4
4
  "description": "Medial / Scale Axis Transform (MAT/SAT) Library.",
5
- "version": "3.0.6",
5
+ "version": "3.0.7",
6
6
  "author": {
7
7
  "name": "Floris Steenkamp"
8
8
  },
@@ -43,9 +43,13 @@
43
43
  "flo-vector2d": "^4.0.6"
44
44
  },
45
45
  "devDependencies": {
46
- "@types/chai": "^5.2.3",
47
- "@types/mocha": "^10.0.10",
48
- "@types/node": "^25.6.0",
46
+ "@jest/globals": "^30.4.1",
47
+ "@swc/core": "^1.15.33",
48
+ "@swc/jest": "^0.2.39",
49
+ "@types/jest": "^30.0.0",
50
+ "@types/node": "^25.9.0",
51
+ "jest": "^30.4.2",
52
+ "jest-ts-webcompat-resolver": "^1.0.1",
49
53
  "c8": "^11.0.0",
50
54
  "chai": "^6.2.2",
51
55
  "circular-dependency-plugin": "^5.2.2",
@@ -62,8 +66,7 @@
62
66
  "build": "npm run build-browser && npm run build-node",
63
67
  "build-node": "rimraf node && tsc",
64
68
  "build-browser": "rimraf browser && webpack --mode production",
65
- "test": "mocha",
66
- "coverage": "c8 mocha",
69
+ "test": "jest",
67
70
  "test-package": "npm pack"
68
71
  }
69
72
  }
@@ -1,5 +1,4 @@
1
1
  import { eAdd, eCompress, eEstimate, eMult, eNegativeOf, eProduct, orient2d, twoDiff } from 'big-float-ts';
2
- // import { dot } from "flo-vector2d";
3
2
  import { compareCurvaturesAtInterface } from "./compare-curvatures-at-interface.js";
4
3
 
5
4