flo-mat 4.0.1 → 4.0.3

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 (220) hide show
  1. package/README.md +1 -1
  2. package/__tests__/find-2-prong/get-medial/get-closest-points.spec.ts +49 -0
  3. package/__tests__/specific-cases/specific-cases.spec.ts +6 -0
  4. package/browser/index.js +9994 -12650
  5. package/browser/index.min.js +1 -1
  6. package/node/closest-boundary-point/foot-and-endpoint-info.d.ts +0 -3
  7. package/node/closest-boundary-point/get-close-boundary-points-certified.d.ts +1 -1
  8. package/node/closest-boundary-point/get-close-boundary-points-certified.js +2 -2
  9. package/node/closest-boundary-point/get-close-boundary-points-certified.js.map +1 -1
  10. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.d.ts +1 -2
  11. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js +34 -24
  12. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js.map +1 -1
  13. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.d.ts +1 -1
  14. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.js +6 -9
  15. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.js.map +1 -1
  16. package/node/cp-node/fs/insert-cp-node.d.ts +2 -2
  17. package/node/cp-node/fs/insert-cp-node.js.map +1 -1
  18. package/node/cp-node/fs/is-on-same-loop.d.ts +3 -0
  19. package/node/cp-node/fs/is-on-same-loop.js +6 -0
  20. package/node/cp-node/fs/is-on-same-loop.js.map +1 -0
  21. package/node/cp-node/fs/is-order-correct.d.ts +2 -2
  22. package/node/cp-node/fs/is-order-correct.js.map +1 -1
  23. package/node/cp-node/fs/traverse-cp.js.map +1 -1
  24. package/node/cp-node/fs/traverse-vertices.d.ts +1 -1
  25. package/node/cp-node/fs/traverse-vertices.js.map +1 -1
  26. package/node/debug/debug.d.ts +10 -15
  27. package/node/debug/debug.js +35 -46
  28. package/node/debug/debug.js.map +1 -1
  29. package/node/debug/functions/draw-elem/draw-branch.d.ts +1 -1
  30. package/node/debug/functions/draw-elem/draw-branch.js.map +1 -1
  31. package/node/debug/functions/draw-elem/draw-cp-node.d.ts +1 -1
  32. package/node/debug/functions/draw-elem/draw-cp-node.js +2 -2
  33. package/node/debug/functions/draw-elem/draw-cp-node.js.map +1 -1
  34. package/node/debug/functions/draw-elem/draw-leaves.d.ts +1 -1
  35. package/node/debug/functions/draw-elem/draw-leaves.js +2 -2
  36. package/node/debug/functions/draw-elem/draw-leaves.js.map +1 -1
  37. package/node/debug/functions/draw-elem/draw-mat.d.ts +1 -1
  38. package/node/debug/functions/draw-elem/draw-mat.js +1 -2
  39. package/node/debug/functions/draw-elem/draw-mat.js.map +1 -1
  40. package/node/debug/functions/draw-elem/draw-min-y.d.ts +1 -1
  41. package/node/debug/functions/draw-elem/draw-min-y.js.map +1 -1
  42. package/node/debug/functions/draw-elem/draw-three-prong.d.ts +1 -1
  43. package/node/debug/functions/draw-elem/draw-three-prong.js +2 -2
  44. package/node/debug/functions/draw-elem/draw-three-prong.js.map +1 -1
  45. package/node/debug/functions/draw-elem/draw-vertex.d.ts +1 -1
  46. package/node/debug/functions/draw-elem/draw-vertex.js +0 -2
  47. package/node/debug/functions/draw-elem/draw-vertex.js.map +1 -1
  48. package/node/error-analysis/gamma.d.ts +32 -0
  49. package/node/error-analysis/gamma.js +39 -0
  50. package/node/error-analysis/gamma.js.map +1 -0
  51. package/node/find-2-prong/add-1-prong.js +1 -4
  52. package/node/find-2-prong/add-1-prong.js.map +1 -1
  53. package/node/find-2-prong/find-2-prong.js +5 -5
  54. package/node/find-2-prong/find-2-prong.js.map +1 -1
  55. package/node/find-2-prong/get-medial/get-closest-points.js +27 -23
  56. package/node/find-2-prong/get-medial/get-closest-points.js.map +1 -1
  57. package/node/find-3-prong/calc-better-x.d.ts +1 -1
  58. package/node/find-3-prong/calc-better-x.js +6 -4
  59. package/node/find-3-prong/calc-better-x.js.map +1 -1
  60. package/node/find-3-prong/calc-initial-3-prong-center.d.ts +1 -1
  61. package/node/find-3-prong/calc-initial-3-prong-center.js +4 -3
  62. package/node/find-3-prong/calc-initial-3-prong-center.js.map +1 -1
  63. package/node/find-3-prong/find-3-prong-for-delta3s.js +22 -5
  64. package/node/find-3-prong/find-3-prong-for-delta3s.js.map +1 -1
  65. package/node/find-3-prong/find-and-add-3-prong.d.ts +2 -2
  66. package/node/find-3-prong/find-and-add-3-prong.js +15 -0
  67. package/node/find-3-prong/find-and-add-3-prong.js.map +1 -1
  68. package/node/find-3-prong/find-and-add-3-prongs-on-loop.js +8 -21
  69. package/node/find-3-prong/find-and-add-3-prongs-on-loop.js.map +1 -1
  70. package/node/find-3-prong/find-and-add-3-prongs.d.ts +1 -4
  71. package/node/find-3-prong/find-and-add-3-prongs.js +1 -2
  72. package/node/find-3-prong/find-and-add-3-prongs.js.map +1 -1
  73. package/node/find-3-prong/get-closest-points.d.ts +1 -1
  74. package/node/find-3-prong/get-closest-points.js +2 -2
  75. package/node/find-3-prong/get-closest-points.js.map +1 -1
  76. package/node/find-3-prong/timed-cc.d.ts +3 -0
  77. package/node/find-3-prong/timed-cc.js +5 -0
  78. package/node/find-3-prong/timed-cc.js.map +1 -0
  79. package/node/find-mat/create-initial-cp-tree.d.ts +2 -2
  80. package/node/find-mat/create-initial-cp-tree.js +2 -2
  81. package/node/find-mat/create-initial-cp-tree.js.map +1 -1
  82. package/node/find-mat/find-mat.d.ts +4 -4
  83. package/node/find-mat/find-mat.js +1 -2
  84. package/node/find-mat/find-mat.js.map +1 -1
  85. package/node/find-mat/find-mats.js +2 -2
  86. package/node/find-mat/find-mats.js.map +1 -1
  87. package/node/find-mat/get-meta.d.ts +1 -6
  88. package/node/find-mat/get-meta.js +4 -25
  89. package/node/find-mat/get-meta.js.map +1 -1
  90. package/node/index.d.ts +5 -2
  91. package/node/index.js +4 -1
  92. package/node/index.js.map +1 -1
  93. package/node/mat/create-new-cp-trees.d.ts +2 -2
  94. package/node/mat/create-new-cp-trees.js +2 -2
  95. package/node/mat/create-new-cp-trees.js.map +1 -1
  96. package/node/mat/get-cp-node-to-left-or-same.d.ts +2 -2
  97. package/node/mat/get-cp-node-to-left-or-same.js +2 -1
  98. package/node/mat/get-cp-node-to-left-or-same.js.map +1 -1
  99. package/node/mat/mat-meta.d.ts +2 -2
  100. package/node/point-on-shape/get-osculating-circle.js +2 -1
  101. package/node/point-on-shape/get-osculating-circle.js.map +1 -1
  102. package/node/reconstruct-from-mat/filter-zero-length.d.ts +10 -0
  103. package/node/reconstruct-from-mat/filter-zero-length.js +14 -0
  104. package/node/reconstruct-from-mat/filter-zero-length.js.map +1 -0
  105. package/node/reconstruct-from-mat/get-all-on-loop-by-loop.d.ts +7 -0
  106. package/node/reconstruct-from-mat/get-all-on-loop-by-loop.js +38 -0
  107. package/node/reconstruct-from-mat/get-all-on-loop-by-loop.js.map +1 -0
  108. package/node/reconstruct-from-mat/get-bezier-piece-length.d.ts +3 -0
  109. package/node/reconstruct-from-mat/get-bezier-piece-length.js +6 -0
  110. package/node/reconstruct-from-mat/get-bezier-piece-length.js.map +1 -0
  111. package/node/reconstruct-from-mat/get-boundary.d.ts +7 -0
  112. package/node/reconstruct-from-mat/get-boundary.js +18 -0
  113. package/node/reconstruct-from-mat/get-boundary.js.map +1 -0
  114. package/node/reconstruct-from-mat/get-cp-nodess-for-sat.d.ts +4 -0
  115. package/node/reconstruct-from-mat/get-cp-nodess-for-sat.js +15 -0
  116. package/node/reconstruct-from-mat/get-cp-nodess-for-sat.js.map +1 -0
  117. package/node/reconstruct-from-mat/get-matching-beziers.d.ts +10 -0
  118. package/node/reconstruct-from-mat/get-matching-beziers.js +29 -0
  119. package/node/reconstruct-from-mat/get-matching-beziers.js.map +1 -0
  120. package/node/reconstruct-from-mat/get-mbss-by-loop-per-sat.d.ts +6 -0
  121. package/node/reconstruct-from-mat/get-mbss-by-loop-per-sat.js +10 -0
  122. package/node/reconstruct-from-mat/get-mbss-by-loop-per-sat.js.map +1 -0
  123. package/node/reconstruct-from-mat/get-mbss-by-loop-with-opp-arr.d.ts +7 -0
  124. package/node/reconstruct-from-mat/get-mbss-by-loop-with-opp-arr.js +47 -0
  125. package/node/reconstruct-from-mat/get-mbss-by-loop-with-opp-arr.js.map +1 -0
  126. package/node/reconstruct-from-mat/get-sats2.d.ts +10 -0
  127. package/node/reconstruct-from-mat/get-sats2.js +16 -0
  128. package/node/reconstruct-from-mat/get-sats2.js.map +1 -0
  129. package/node/reconstruct-from-mat/is-fully-terminating.d.ts +3 -0
  130. package/node/reconstruct-from-mat/is-fully-terminating.js +19 -0
  131. package/node/reconstruct-from-mat/is-fully-terminating.js.map +1 -0
  132. package/node/reconstruct-from-mat/matched-beziers.d.ts +10 -0
  133. package/node/reconstruct-from-mat/matched-beziers.js +2 -0
  134. package/node/reconstruct-from-mat/matched-beziers.js.map +1 -0
  135. package/node/reconstruct-from-mat/reconstruct-from-mat.d.ts +4 -0
  136. package/node/reconstruct-from-mat/reconstruct-from-mat.js +28 -0
  137. package/node/reconstruct-from-mat/reconstruct-from-mat.js.map +1 -0
  138. package/node/reconstruct-from-mat/remove-sat-induced-trivial-3prongs.d.ts +12 -0
  139. package/node/reconstruct-from-mat/remove-sat-induced-trivial-3prongs.js +46 -0
  140. package/node/reconstruct-from-mat/remove-sat-induced-trivial-3prongs.js.map +1 -0
  141. package/node/reconstruct-from-mat/split-tri-path.d.ts +5 -0
  142. package/node/reconstruct-from-mat/split-tri-path.js +209 -0
  143. package/node/reconstruct-from-mat/split-tri-path.js.map +1 -0
  144. package/node/sat/add-debug-info.js +1 -2
  145. package/node/sat/add-debug-info.js.map +1 -1
  146. package/node/utils/clip.d.ts +2 -0
  147. package/node/utils/clip.js +6 -0
  148. package/node/utils/clip.js.map +1 -0
  149. package/package.json +6 -7
  150. package/src/closest-boundary-point/foot-and-endpoint-info.ts +0 -3
  151. package/src/closest-boundary-point/get-close-boundary-points-certified.ts +0 -2
  152. package/src/closest-boundary-point/get-potential-closest-points-on-curve-certified.ts +41 -27
  153. package/src/closest-boundary-point/root-interval-to-distance-squared-interval.ts +5 -10
  154. package/src/cp-node/fs/insert-cp-node.ts +2 -2
  155. package/src/cp-node/fs/is-on-same-loop.ts +15 -0
  156. package/src/cp-node/fs/is-order-correct.ts +2 -2
  157. package/src/cp-node/fs/traverse-cp.ts +1 -1
  158. package/src/cp-node/fs/traverse-vertices.ts +1 -2
  159. package/src/debug/debug.ts +54 -72
  160. package/src/debug/functions/check-ordering.ts +0 -1
  161. package/src/debug/functions/draw-elem/draw-branch.ts +1 -3
  162. package/src/debug/functions/draw-elem/draw-cp-node.ts +3 -4
  163. package/src/debug/functions/draw-elem/draw-leaves.ts +3 -3
  164. package/src/debug/functions/draw-elem/draw-mat.ts +2 -5
  165. package/src/debug/functions/draw-elem/draw-min-y.ts +2 -2
  166. package/src/debug/functions/draw-elem/draw-three-prong.ts +3 -3
  167. package/src/debug/functions/draw-elem/draw-vertex.ts +1 -4
  168. package/src/error-analysis/gamma.ts +9 -2
  169. package/src/find-2-prong/add-1-prong.ts +1 -5
  170. package/src/find-2-prong/find-2-prong.ts +7 -6
  171. package/src/find-2-prong/get-medial/get-closest-points.ts +24 -26
  172. package/src/find-3-prong/calc-better-x.ts +7 -4
  173. package/src/find-3-prong/calc-initial-3-prong-center.ts +2 -3
  174. package/src/find-3-prong/find-3-prong-for-delta3s.ts +23 -5
  175. package/src/find-3-prong/find-and-add-3-prong.ts +18 -4
  176. package/src/find-3-prong/find-and-add-3-prongs-on-loop.ts +7 -23
  177. package/src/find-3-prong/find-and-add-3-prongs.ts +5 -3
  178. package/src/find-3-prong/get-closest-points.ts +0 -2
  179. package/src/find-3-prong/timed-cc.ts +9 -0
  180. package/src/find-mat/create-initial-cp-tree.ts +3 -3
  181. package/src/find-mat/find-mat.ts +6 -8
  182. package/src/find-mat/find-mats.ts +4 -2
  183. package/src/find-mat/get-meta.ts +3 -38
  184. package/src/index.ts +6 -3
  185. package/src/mat/create-new-cp-trees.ts +3 -3
  186. package/src/mat/get-cp-node-to-left-or-same.ts +4 -3
  187. package/src/mat/mat-meta.ts +2 -2
  188. package/src/point-on-shape/get-osculating-circle.ts +2 -1
  189. package/src/reconstruct-from-mat/filter-zero-length.ts +23 -0
  190. package/src/reconstruct-from-mat/get-all-on-loop-by-loop.ts +52 -0
  191. package/src/reconstruct-from-mat/get-bezier-piece-length.ts +12 -0
  192. package/src/reconstruct-from-mat/get-boundary.ts +32 -0
  193. package/src/reconstruct-from-mat/get-cp-nodess-for-sat.ts +24 -0
  194. package/src/reconstruct-from-mat/get-matching-beziers.ts +46 -0
  195. package/src/reconstruct-from-mat/get-mbss-by-loop-per-sat.ts +19 -0
  196. package/src/reconstruct-from-mat/get-mbss-by-loop-with-opp-arr.ts +69 -0
  197. package/src/reconstruct-from-mat/get-sats2.ts +25 -0
  198. package/src/reconstruct-from-mat/is-fully-terminating.ts +27 -0
  199. package/src/reconstruct-from-mat/matched-beziers.ts +14 -0
  200. package/src/reconstruct-from-mat/reconstruct-from-mat.ts +45 -0
  201. package/src/reconstruct-from-mat/remove-sat-induced-trivial-3prongs.ts +62 -0
  202. package/src/reconstruct-from-mat/split-tri-path.ts +280 -0
  203. package/src/sat/add-debug-info.ts +1 -2
  204. package/src/utils/clip.ts +13 -0
  205. package/wallaby.mjs +1 -0
  206. package/node/closest-boundary-point/get-p-from-box.d.ts +0 -3
  207. package/node/closest-boundary-point/get-p-from-box.js +0 -11
  208. package/node/closest-boundary-point/get-p-from-box.js.map +0 -1
  209. package/node/debug/functions/general.d.ts +0 -48
  210. package/node/debug/functions/general.js +0 -53
  211. package/node/debug/functions/general.js.map +0 -1
  212. package/node/point-on-shape/pos-to-human-string.d.ts +0 -8
  213. package/node/point-on-shape/pos-to-human-string.js +0 -12
  214. package/node/point-on-shape/pos-to-human-string.js.map +0 -1
  215. package/src/debug/elem-type-two-prong.ts +0 -8
  216. package/src/debug/functions/cmp-cp-on-delta.ts +0 -54
  217. package/src/debug/functions/general.ts +0 -79
  218. package/src/debug/functions/three-prong.ts +0 -249
  219. package/src/debug/functions/two-prong.ts +0 -203
  220. package/src/find-2-prong/add-debug-info.ts +0 -45
@@ -21,7 +21,6 @@ function findAndAdd3Prongs(meta, cpStart) {
21
21
  return { closeBysFor3Prong: undefined, addedCpNodes: [] };
22
22
  }
23
23
  const addedCpNodes = [];
24
- let closeBysFor3Prong = undefined;
25
24
  do {
26
25
  if (cpStart === undefined) {
27
26
  continue;
@@ -41,7 +40,7 @@ function findAndAdd3Prongs(meta, cpStart) {
41
40
  }
42
41
  }
43
42
  } while (true);
44
- return { closeBysFor3Prong, addedCpNodes };
43
+ return { closeBysFor3Prong: undefined, addedCpNodes };
45
44
  }
46
45
  export { findAndAdd3Prongs };
47
46
  //# sourceMappingURL=find-and-add-3-prongs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-and-add-3-prongs.js","sourceRoot":"","sources":["../../src/find-3-prong/find-and-add-3-prongs.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,IAAI,EAAE,GAAG,CAAC,CAAC;AACX;;;;;;;;;;;;;GAaG;AACH,SAAS,iBAAiB,CAClB,IAAa,EACb,OAAe;IAEnB,IAAI,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,YAAY,GAAe,EAAE,CAAC;IACpC,IAAI,iBAAiB,GAAyB,SAAS,CAAC;IACxD,GAAG,CAAC;QACA,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACxC,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAAC,MAAM;QAAC,CAAC;QAEtC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAE1E,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,EAAE,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC;gBACtD,OAAO,SAAU,CAAC;YACtB,CAAC;QACL,CAAC;IACL,CAAC,QAAQ,IAAI,EAAE;IAEf,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAC/C,CAAC;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"find-and-add-3-prongs.js","sourceRoot":"","sources":["../../src/find-3-prong/find-and-add-3-prongs.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,IAAI,EAAE,GAAG,CAAC,CAAC;AACX;;;;;;;;;;;;;GAaG;AACH,SAAS,iBAAiB,CAClB,IAAa,EACb,OAAe;IAKnB,IAAI,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,YAAY,GAAe,EAAE,CAAC;IACpC,GAAG,CAAC;QACA,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACxC,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAAC,MAAM;QAAC,CAAC;QAEtC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAE1E,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,EAAE,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC;gBACtD,OAAO,SAAU,CAAC;YACtB,CAAC;QACL,CAAC;IACL,CAAC,QAAQ,IAAI,EAAE;IAEf,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAC1D,CAAC;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
@@ -6,5 +6,5 @@ import type { CurvePiece } from '../mat/curve-piece.js';
6
6
  *
7
7
  * @internal
8
8
  */
9
- declare function getClosestPoints(maxCoordPowerOf2: number, x: number[], curvePiece3s: CurvePiece[][]): import("../point-on-shape/point-on-shape.js").PrePointOnShape[];
9
+ declare function getClosestPoints(x: number[], curvePiece3s: CurvePiece[][]): import("../point-on-shape/point-on-shape.js").PrePointOnShape[];
10
10
  export { getClosestPoints };
@@ -6,9 +6,9 @@ import { getCloseBoundaryPointsCertified } from '../closest-boundary-point/get-c
6
6
  *
7
7
  * @internal
8
8
  */
9
- function getClosestPoints(maxCoordPowerOf2, x, curvePiece3s) {
9
+ function getClosestPoints(x, curvePiece3s) {
10
10
  return curvePiece3s.map(curvePieces => {
11
- return getCloseBoundaryPointsCertified(maxCoordPowerOf2, curvePieces, x)[0];
11
+ return getCloseBoundaryPointsCertified(curvePieces, x)[0];
12
12
  });
13
13
  }
14
14
  export { getClosestPoints };
@@ -1 +1 @@
1
- {"version":3,"file":"get-closest-points.js","sourceRoot":"","sources":["../../src/find-3-prong/get-closest-points.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AAGnH;;;;;;GAMG;AACH,SAAS,gBAAgB,CACjB,gBAAwB,EACxB,CAAW,EACX,YAA4B;IAEhC,OAAO,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAClC,OAAO,+BAA+B,CAClC,gBAAgB,EAChB,WAAW,EACX,CAAC,CACJ,CAAC,CAAC,CAAC,CAAC;IACT,CAAC,CAAC,CAAC;AACP,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"get-closest-points.js","sourceRoot":"","sources":["../../src/find-3-prong/get-closest-points.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AAGnH;;;;;;GAMG;AACH,SAAS,gBAAgB,CACjB,CAAW,EACX,YAA4B;IAEhC,OAAO,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAClC,OAAO,+BAA+B,CAClC,WAAW,EACX,CAAC,CACJ,CAAC,CAAC,CAAC,CAAC;IACT,CAAC,CAAC,CAAC;AACP,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { circumCenter } from 'flo-vector2d';
2
+ declare const timeCircumCenter: typeof circumCenter;
3
+ export { timeCircumCenter as circumCenter };
@@ -0,0 +1,5 @@
1
+ import { circumCenter } from 'flo-vector2d';
2
+ // const timeCircumCenter = timeFunctionCalls(circumCenter);
3
+ const timeCircumCenter = circumCenter;
4
+ export { timeCircumCenter as circumCenter };
5
+ //# sourceMappingURL=timed-cc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timed-cc.js","sourceRoot":"","sources":["../../src/find-3-prong/timed-cc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,4DAA4D;AAC5D,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAGtC,OAAO,EAAE,gBAAgB,IAAI,YAAY,EAAE,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import type { Loop } from 'flo-boolean';
2
2
  import type { CpNode } from '../cp-node/cp-node.js';
3
3
  import type { PrePointOnShape } from '../point-on-shape/point-on-shape.js';
4
- import { LlRbTree } from 'flo-ll-rb-tree';
4
+ import { RbTree } from 'flo-ll-rb-tree';
5
5
  /**
6
6
  * Creates the initial ContactPoint loops from the given sharp corners.
7
7
  *
@@ -16,5 +16,5 @@ import { LlRbTree } from 'flo-ll-rb-tree';
16
16
  */
17
17
  declare function createInitialCpTree(loops: Loop[], sharpCornerss: PrePointOnShape[][], lastInsertId: {
18
18
  id: number;
19
- }): Map<Loop, LlRbTree<CpNode>>;
19
+ }): Map<Loop, RbTree<CpNode>>;
20
20
  export { createInitialCpTree };
@@ -1,4 +1,4 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
1
+ import { RbTree } from 'flo-ll-rb-tree';
2
2
  import { insertCpNode } from '../cp-node/fs/insert-cp-node.js';
3
3
  import { cpNodeComparator } from '../cp-node/fs/cp-node-comparator.js';
4
4
  /**
@@ -16,7 +16,7 @@ import { cpNodeComparator } from '../cp-node/fs/cp-node-comparator.js';
16
16
  function createInitialCpTree(loops, sharpCornerss, lastInsertId) {
17
17
  const cpTrees = new Map();
18
18
  for (let k = 0; k < sharpCornerss.length; k++) {
19
- const cpTree = new LlRbTree(cpNodeComparator, false);
19
+ const cpTree = new RbTree(cpNodeComparator);
20
20
  cpTrees.set(loops[k], cpTree);
21
21
  const sharpCorners = sharpCornerss[k];
22
22
  let cpNode1 = undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"create-initial-cp-tree.js","sourceRoot":"","sources":["../../src/find-mat/create-initial-cp-tree.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAGvE;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CACpB,KAAa,EACb,aAAkC,EAClC,YAA4B;IAEhC,MAAM,OAAO,GAAgC,IAAI,GAAG,EAAE,CAAC;IAEvD,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAE9B,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAI,OAAO,GAAgC,SAAS,CAAC;QACrD,IAAI,OAAO,GAAgC,SAAS,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAEvB,MAAM,IAAI,GAAiB,EAAE,GAAG,IAAI,EAAE,KAAK,EAAc,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC9F,MAAM,IAAI,GAAiB,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAE9F,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAE,CAAC;YACjF,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAE,CAAC;YAEjF,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;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,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":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAGvE;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CACpB,KAAa,EACb,aAAkC,EAClC,YAA4B;IAEhC,MAAM,OAAO,GAA8B,IAAI,GAAG,EAAE,CAAC;IAErD,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAE9B,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAI,OAAO,GAAgC,SAAS,CAAC;QACrD,IAAI,OAAO,GAAgC,SAAS,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAEvB,MAAM,IAAI,GAAiB,EAAE,GAAG,IAAI,EAAE,KAAK,EAAc,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC9F,MAAM,IAAI,GAAiB,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAE9F,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAE,CAAC;YACjF,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAE,CAAC;YAEjF,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;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -1,7 +1,7 @@
1
- import { CpNode } from '../cp-node/cp-node.js';
2
- import { Loop } from 'flo-boolean';
3
- import { MatOptions } from './mat-options.js';
4
- import { MatMeta } from '../mat/mat-meta.js';
1
+ import type { CpNode } from '../cp-node/cp-node.js';
2
+ import type { Loop } from 'flo-boolean';
3
+ import type { MatOptions } from './mat-options.js';
4
+ import type { MatMeta } from '../mat/mat-meta.js';
5
5
  /**
6
6
  * @internal
7
7
  * Find the MAT of the given loops.
@@ -1,6 +1,6 @@
1
1
  import { findAndAdd3ProngsOnLoop } from '../find-3-prong/find-and-add-3-prongs-on-loop.js';
2
2
  import { createInitialCpTree } from './create-initial-cp-tree.js';
3
- import { /*getPointToCpNode,*/ getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4, getPointToCpNode } from './get-meta.js';
3
+ import { 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';
@@ -27,7 +27,6 @@ function findMat(loops, maxCoordPowerOf2, options) {
27
27
  const lastInsertId = { id: 0 };
28
28
  const cpTrees = createInitialCpTree(loops, sharpCornersPerLoop, lastInsertId);
29
29
  const _meta = getPartialMeta(loops);
30
- const pointToCpNode = getPointToCpNode(loops, cpTrees);
31
30
  const meta = {
32
31
  maxCoordPowerOf2, squaredDiagonalLength, loops, cpTrees, // pointToCpNode,
33
32
  lastInsertId, ..._meta
@@ -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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"}
@@ -55,8 +55,8 @@ function findMats(bezierLoops, options) {
55
55
  }
56
56
  mats.push(mat);
57
57
  }
58
- // console.log(structuredClone(find3Prong.getStats()));
59
- // find3Prong.resetStats();
58
+ // console.log(structuredClone(circumCenter.getStats()));
59
+ // circumCenter.resetStats();
60
60
  return mats;
61
61
  }
62
62
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"find-mats.js","sourceRoot":"","sources":["../../src/find-mat/find-mats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAG,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAc,MAAM,kBAAkB,CAAC;AAEjE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAG5B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,QAAQ,CACT,WAA2B,EAC3B,OAAoB;IAExB,+EAA+E;IAC/E,MAAM,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAyB,WAAW,CAC9C,gBAAgB,EAAE;QAClB,GAAG,iBAAiB;QACpB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACrB,CAAC,CAAC;IAEH,MAAM,EACF,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,iBAAiB,EAC9B,GAAG,QAAQ,CAAC;IAGb,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzF,+CAA+C;IAE/C,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAEpC,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAA;QACjD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,uDAAuD;IACvD,2BAA2B;IAE3B,OAAO,IAAI,CAAC;AAChB,CAAC;AAID;;;;GAIG;AACH,SAAS,iBAAiB,CAClB,KAAqB;IAEzB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,GAAG,GAAG,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"find-mats.js","sourceRoot":"","sources":["../../src/find-mat/find-mats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAG,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAc,MAAM,kBAAkB,CAAC;AAIjE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAG5B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,QAAQ,CACT,WAA2B,EAC3B,OAAoB;IAExB,+EAA+E;IAC/E,MAAM,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAyB,WAAW,CAC9C,gBAAgB,EAAE;QAClB,GAAG,iBAAiB;QACpB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACrB,CAAC,CAAC;IAEH,MAAM,EACF,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,iBAAiB,EAC9B,GAAG,QAAQ,CAAC;IAGb,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzF,+CAA+C;IAE/C,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAEpC,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAA;QACjD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,yDAAyD;IACzD,6BAA6B;IAE7B,OAAO,IAAI,CAAC;AAChB,CAAC;AAID;;;;GAIG;AACH,SAAS,iBAAiB,CAClB,KAAqB;IAEzB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,GAAG,GAAG,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -1,14 +1,9 @@
1
1
  import type { Loop } from 'flo-boolean';
2
- import type { CpNode } from '../cp-node/cp-node.js';
3
- import type { TriMap } from '../utils/tri-map.js';
4
2
  import type { MatMeta } from '../mat/mat-meta.js';
5
- import { LlRbTree } from 'flo-ll-rb-tree';
6
- /** @internal */
7
- declare function getPointToCpNode(loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>): TriMap<Loop, number, number, CpNode>;
8
3
  /** @internal */
9
4
  declare function getPartialMeta(loops: Loop[]): Omit<MatMeta, 'cpTrees' | 'loops' | 'maxCoordPowerOf2' | 'squaredDiagonalLength' | 'lastInsertId'>;
10
5
  /** @internal */
11
6
  declare function addDebugInfo2(): void;
12
7
  declare function addDebugInfo3(): void;
13
8
  declare function addDebugInfo4(): void;
14
- export { getPointToCpNode, getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 };
9
+ export { getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 };
@@ -3,22 +3,6 @@ import { getBoundingBox$ } from '../geometry/get-bounding-box-.js';
3
3
  import { getCorner } from '../corner/get-corner.js';
4
4
  let timingStart;
5
5
  /** @internal */
6
- function getPointToCpNode(loops, cpTrees) {
7
- timingStart = performance.now();
8
- // const pointToCpNode: TriMap<Loop,number,number,CpNode> = new Map();
9
- // for (const loop of loops) {
10
- // // Populate `posMap`
11
- // const cpTree = cpTrees.get(loop)!;
12
- // const cpNodes = cpTree.toArrayInOrder();
13
- // for (const cpNode of cpNodes) {
14
- // const { p, t } = cpNode.pointOnShape;
15
- // TriMapFs.set(pointToCpNode,loop,p[0],p[1],cpNode);
16
- // }
17
- // }
18
- // return pointToCpNode;
19
- return undefined;
20
- }
21
- /** @internal */
22
6
  function getPartialMeta(loops) {
23
7
  const looseBoundingBoxes = [];
24
8
  const tightBoundingBoxes = [];
@@ -56,28 +40,23 @@ function addDebugInfo2() {
56
40
  if (typeof _debug_ === 'undefined') {
57
41
  return;
58
42
  }
59
- const timing = _debug_.generated.timing;
60
43
  const now = performance.now();
61
- timing.holeClosers += now - timingStart;
44
+ _debug_.timing.holeClosers += now - timingStart;
62
45
  timingStart = now;
63
46
  }
64
47
  function addDebugInfo3() {
65
48
  if (typeof _debug_ === 'undefined') {
66
49
  return;
67
50
  }
68
- const generated = _debug_.generated;
69
- const timing = generated.timing;
70
51
  const now = performance.now();
71
- timing.oneAnd2Prongs += now - timingStart;
52
+ _debug_.timing.oneAnd2Prongs += now - timingStart;
72
53
  timingStart = now;
73
54
  }
74
55
  function addDebugInfo4() {
75
56
  if (typeof _debug_ === 'undefined') {
76
57
  return;
77
58
  }
78
- const generated = _debug_.generated;
79
- const timing = generated.timing;
80
- timing.threeProngs += performance.now() - timingStart;
59
+ _debug_.timing.threeProngs += performance.now() - timingStart;
81
60
  }
82
- export { getPointToCpNode, getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 };
61
+ export { getPartialMeta, addDebugInfo2, addDebugInfo3, addDebugInfo4 };
83
62
  //# 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":"AAIA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAOpD,IAAI,WAAmB,CAAC;AAGxB,gBAAgB;AAChB,SAAS,cAAc,CACf,KAAa;IAUjB,MAAM,kBAAkB,GAAiB,EAAE,CAAC;IAC5C,MAAM,kBAAkB,GAAiB,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAiB,EAAE,CAAC;IACvC,MAAM,YAAY,GAAY,EAAE,CAAC;IACjC,MAAM,WAAW,GAAY,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,EAAE,IAAI,CAAE,CAAC;YAExC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzB,MAAM,gBAAgB,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;YAC7C,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAE1C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACjD,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACtB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;iBAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC5B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,kBAAkB;QAClB,kBAAkB;QAClB,aAAa;QACb,YAAY;QACZ,WAAW;KACd,CAAA;AACL,CAAC;AAGD,gBAAgB;AAChB,SAAS,aAAa;IAClB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IAE/C,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,GAAG,GAAG,WAAW,CAAC;IAChD,WAAW,GAAG,GAAG,CAAC;AACtB,CAAC;AAGD,SAAS,aAAa;IAClB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IAE/C,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAE9B,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,GAAG,GAAG,WAAW,CAAC;IAClD,WAAW,GAAG,GAAG,CAAC;AACtB,CAAC;AAGD,SAAS,aAAa;IAClB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IAE/C,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;AAClE,CAAC;AAGD,OAAO,EACH,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EAChB,CAAA"}
package/node/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export type { PointOnShape } from './point-on-shape/point-on-shape.js';
7
7
  export type { Circle } from './geometry/circle.js';
8
8
  export type { CurvePiece } from './mat/curve-piece.js';
9
9
  export type { DrawElemFunctions } from './debug/functions/draw-elem/draw-elem.js';
10
- export type { ITiming } from './debug/debug.js';
10
+ export type { Timing as ITiming } from './debug/debug.js';
11
11
  export type { DebugElems } from './debug/debug-elem-types.js';
12
12
  export type { Debug } from './debug/debug.js';
13
13
  export type { DebugElemKey } from './debug/debug-elem-types.js';
@@ -39,7 +39,7 @@ export { getSharpCornersOnLoop } from './find-mat/get-sharp-corners.js';
39
39
  export { getFor2ProngsOnLoop } from './find-mat/get-for-2-prongs-on-loop.js';
40
40
  export { getPotentialClosestPointsOnCurveCertified } from './closest-boundary-point/get-potential-closest-points-on-curve-certified.js';
41
41
  export { getCloseBoundaryPointsCertified } from './closest-boundary-point/get-close-boundary-points-certified.js';
42
- export { getPartialMeta, getPointToCpNode } from './find-mat/get-meta.js';
42
+ export { getPartialMeta } from './find-mat/get-meta.js';
43
43
  export { findAndAddHoleClosing2Prongs } from './find-2-prong/find-and-add-hole-closing-2-prongs.js';
44
44
  export { getChildren } from './cp-node/fs/get-children.js';
45
45
  export { getVertexForwardChildren } from './cp-node/fs/get-vertex-forward-children.js';
@@ -75,3 +75,6 @@ export { getHoleClosers } from './cp-node/fs/get-hole-closers.js';
75
75
  export { getInitialDegAngleBetweenMatCurves } from './cp-node/fs/get-angle-between-mat-curves.js';
76
76
  export { getAllVertices } from './cp-node/fs/get-all-vertices.js';
77
77
  export { isTrivial } from './cp-node/fs/is-trivial.js';
78
+ export { scaleCircle } from './geometry/circle.js';
79
+ export { isOnSameLoop } from './cp-node/fs/is-on-same-loop.js';
80
+ export { reconstructFromMats } from './reconstruct-from-mat/reconstruct-from-mat.js';
package/node/index.js CHANGED
@@ -26,7 +26,7 @@ export { getSharpCornersOnLoop } from './find-mat/get-sharp-corners.js';
26
26
  export { getFor2ProngsOnLoop } from './find-mat/get-for-2-prongs-on-loop.js';
27
27
  export { getPotentialClosestPointsOnCurveCertified } from './closest-boundary-point/get-potential-closest-points-on-curve-certified.js';
28
28
  export { getCloseBoundaryPointsCertified } from './closest-boundary-point/get-close-boundary-points-certified.js';
29
- export { getPartialMeta, getPointToCpNode } from './find-mat/get-meta.js';
29
+ export { getPartialMeta } from './find-mat/get-meta.js';
30
30
  export { findAndAddHoleClosing2Prongs } from './find-2-prong/find-and-add-hole-closing-2-prongs.js';
31
31
  // CpNodeFs functions
32
32
  export { getChildren } from './cp-node/fs/get-children.js';
@@ -63,4 +63,7 @@ export { getHoleClosers } from './cp-node/fs/get-hole-closers.js';
63
63
  export { getInitialDegAngleBetweenMatCurves } from './cp-node/fs/get-angle-between-mat-curves.js';
64
64
  export { getAllVertices } from './cp-node/fs/get-all-vertices.js';
65
65
  export { isTrivial } from './cp-node/fs/is-trivial.js';
66
+ export { scaleCircle } from './geometry/circle.js';
67
+ export { isOnSameLoop } from './cp-node/fs/is-on-same-loop.js';
68
+ export { reconstructFromMats } from './reconstruct-from-mat/reconstruct-from-mat.js';
66
69
  //# 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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import type { Loop } from 'flo-boolean';
2
2
  import type { CpNode } from '../cp-node/cp-node.js';
3
- import { LlRbTree } from 'flo-ll-rb-tree';
3
+ import { RbTree } from 'flo-ll-rb-tree';
4
4
  /**
5
5
  * @param cpNode
6
6
  *
7
7
  * @internal
8
8
  */
9
- declare function createNewCpTrees(cpNode: CpNode): Map<Loop, LlRbTree<CpNode>>;
9
+ declare function createNewCpTrees(cpNode: CpNode): Map<Loop, RbTree<CpNode>>;
10
10
  export { createNewCpTrees };
@@ -1,4 +1,4 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
1
+ import { RbTree } from 'flo-ll-rb-tree';
2
2
  import { cpNodeComparator } from '../cp-node/fs/cp-node-comparator.js';
3
3
  import { getAllOnLoop } from '../cp-node/fs/get-all-on-loop.js';
4
4
  /**
@@ -13,7 +13,7 @@ function createNewCpTrees(cpNode) {
13
13
  const loop = cpNode.pointOnShape.curve.loop;
14
14
  let cpTree = cpTrees_.get(loop);
15
15
  if (!cpTree) {
16
- cpTree = new LlRbTree(cpNodeComparator, false);
16
+ cpTree = new RbTree(cpNodeComparator);
17
17
  cpTrees_.set(loop, cpTree);
18
18
  }
19
19
  cpTree.insert(cpNode);
@@ -1 +1 @@
1
- {"version":3,"file":"create-new-cp-trees.js","sourceRoot":"","sources":["../../src/mat/create-new-cp-trees.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAIhE;;;;GAIG;AACH,SAAS,gBAAgB,CACjB,MAAc;IAElB,MAAM,QAAQ,GAA+B,IAAI,GAAG,EAAE,CAAC;IAEvD,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE/C,SAAS,gBAAgB,CAAC,MAAc;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5C,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,GAAG,IAAI,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"create-new-cp-trees.js","sourceRoot":"","sources":["../../src/mat/create-new-cp-trees.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAIhE;;;;GAIG;AACH,SAAS,gBAAgB,CACjB,MAAc;IAElB,MAAM,QAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;IAErD,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE/C,SAAS,gBAAgB,CAAC,MAAc;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5C,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACtC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { PrePointOnShape } from '../point-on-shape/point-on-shape.js';
2
2
  import type { CpNode } from '../cp-node/cp-node.js';
3
- import { LlRbTree } from 'flo-ll-rb-tree';
3
+ import { RbTree } from 'flo-ll-rb-tree';
4
4
  /**
5
5
  * @internal
6
6
  *
@@ -14,5 +14,5 @@ import { LlRbTree } from 'flo-ll-rb-tree';
14
14
  * @param order
15
15
  * @param order2
16
16
  */
17
- declare function getCpNodeToLeftOrSame(cpTree: LlRbTree<CpNode>, pos: PrePointOnShape, order: number, order2: number): CpNode | undefined;
17
+ declare function getCpNodeToLeftOrSame(cpTree: RbTree<CpNode>, pos: PrePointOnShape, order: number, order2: number): CpNode | undefined;
18
18
  export { getCpNodeToLeftOrSame };
@@ -21,7 +21,8 @@ function getCpNodeToLeftOrSame(cpTree, pos, order, order2) {
21
21
  if (cps[0] === undefined || cps[1] === undefined) {
22
22
  // Smaller than all -> cptree.min() === cps[1].data OR
23
23
  // Larger than all -> cptree.max() === cps[0].data
24
- return cpTree.max(cpTree.root);
24
+ // return cpTree.max(cpTree.root);
25
+ return cpTree.getMaxNode()?.datum;
25
26
  }
26
27
  return cps[0].datum;
27
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-cp-node-to-left-or-same.js","sourceRoot":"","sources":["../../src/mat/get-cp-node-to-left-or-same.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AACH,SAAS,qBAAqB,CACtB,MAAwB,EACxB,GAAoB,EACpB,KAAa,EACb,MAAc;IAElB,MAAM,YAAY,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,YAAY,EAAY,CAAC,CAAC;IAE1D,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/C,0BAA0B;QAC1B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/C,sDAAsD;QACtD,mDAAmD;QACnD,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,CAAC;AAGD,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
1
+ {"version":3,"file":"get-cp-node-to-left-or-same.js","sourceRoot":"","sources":["../../src/mat/get-cp-node-to-left-or-same.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AACH,SAAS,qBAAqB,CACtB,MAAsB,EACtB,GAAoB,EACpB,KAAa,EACb,MAAc;IAElB,MAAM,YAAY,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,YAAY,EAAY,CAAC,CAAC;IAE1D,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/C,0BAA0B;QAC1B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/C,sDAAsD;QACtD,mDAAmD;QACnD,kCAAkC;QAClC,OAAO,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC;IACtC,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,CAAC;AAGD,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import type { Loop } from 'flo-boolean';
2
2
  import type { CpNode } from '../cp-node/cp-node.js';
3
3
  import type { Curve } from 'flo-boolean';
4
- import { LlRbTree } from 'flo-ll-rb-tree';
4
+ import { RbTree } from 'flo-ll-rb-tree';
5
5
  interface MatMeta {
6
6
  /** The minimum power of 2 such that `2**maxCoordPowerOf2 >= "the max coordinate"` */
7
7
  readonly maxCoordPowerOf2: number;
@@ -17,7 +17,7 @@ interface MatMeta {
17
17
  * `CpNode`s of the MAT by their compare order, i.e. their cyclic order
18
18
  * around the shape boundary.
19
19
  */
20
- readonly cpTrees: Map<Loop, LlRbTree<CpNode>>;
20
+ readonly cpTrees: Map<Loop, RbTree<CpNode>>;
21
21
  /** A map from a bezier and t value to a `PointOnShape` */
22
22
  /**
23
23
  * Stores the last insert id so each `CpNode` can have a unique id for
@@ -12,7 +12,8 @@ function getOsculatingCircle(maxOsculatingCircleRadius, pos, norm) {
12
12
  const { curve, p, t } = pos;
13
13
  const { ps } = curve;
14
14
  const minCurvature = 1 / maxOsculatingCircleRadius;
15
- const k_ = -(ddCurvature(ps, t)[1]);
15
+ const kDd = ddCurvature(ps, t);
16
+ const k_ = -(kDd[0] + kDd[1]);
16
17
  const k = k_ < minCurvature ? minCurvature : k_;
17
18
  const [tx, ty] = norm;
18
19
  const l = sqrt(tx * tx + ty * ty);
@@ -1 +1 @@
1
- {"version":3,"file":"get-osculating-circle.js","sourceRoot":"","sources":["../../src/point-on-shape/get-osculating-circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAGtB;;;;;;;GAOG;AACH,SAAS,mBAAmB,CACpB,yBAAiC,EACjC,GAAoB,EACpB,IAAc;IAElB,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAErB,MAAM,YAAY,GAAG,CAAC,GAAC,yBAAyB,CAAC;IAEjD,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,GAAC,CAAC,CAAC;IAElB,OAAO;QACH,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAC,KAAK,CAAC;QAClC,CAAC,GAAC,CAAC;KACN,CAAC;AACN,CAAC;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
1
+ {"version":3,"file":"get-osculating-circle.js","sourceRoot":"","sources":["../../src/point-on-shape/get-osculating-circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAGtB;;;;;;;GAOG;AACH,SAAS,mBAAmB,CACpB,yBAAiC,EACjC,GAAoB,EACpB,IAAc;IAElB,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAErB,MAAM,YAAY,GAAG,CAAC,GAAC,yBAAyB,CAAC;IAEjD,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,GAAC,CAAC,CAAC;IAElB,OAAO;QACH,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAC,KAAK,CAAC;QAClC,CAAC,GAAC,CAAC;KACN,CAAC;AACN,CAAC;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { BezierPiece } from "flo-bezier3";
2
+ /**
3
+ * Filters out zero-length bezier pieces.
4
+ *
5
+ * * **note** will return at least one bezier piece, even if all pieces are zero-length.
6
+ *
7
+ * @param bezierPieces
8
+ */
9
+ declare function filterZeroLength(bezierPieces: BezierPiece[]): BezierPiece[];
10
+ export { filterZeroLength };
@@ -0,0 +1,14 @@
1
+ import { isBezierPieceZeroLength } from "flo-bezier3";
2
+ /**
3
+ * Filters out zero-length bezier pieces.
4
+ *
5
+ * * **note** will return at least one bezier piece, even if all pieces are zero-length.
6
+ *
7
+ * @param bezierPieces
8
+ */
9
+ function filterZeroLength(bezierPieces) {
10
+ const bezierPieces_ = bezierPieces.filter(bezierPiece => !isBezierPieceZeroLength(bezierPiece));
11
+ return bezierPieces_.length > 0 ? bezierPieces_ : [bezierPieces[0]];
12
+ }
13
+ export { filterZeroLength };
14
+ //# sourceMappingURL=filter-zero-length.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-zero-length.js","sourceRoot":"","sources":["../../src/reconstruct-from-mat/filter-zero-length.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD;;;;;;GAMG;AACH,SAAS,gBAAgB,CACjB,YAA2B;IAE/B,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CACrC,WAAW,CAAC,EAAE,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC,CACvD,CAAC;IAEF,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { CpNode } from '../cp-node/cp-node.js';
2
+ /**
3
+ * Returns all `CpNode`s on the MAT that this `CpNode` is part of
4
+ * starting from the current one and going anti-clockwise around the shape.
5
+ */
6
+ declare function getAllOnLoop_ByLoop(cpNode: CpNode): CpNode[][];
7
+ export { getAllOnLoop_ByLoop };
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Returns all `CpNode`s on the MAT that this `CpNode` is part of
3
+ * starting from the current one and going anti-clockwise around the shape.
4
+ */
5
+ function getAllOnLoop_ByLoop(cpNode) {
6
+ const cpNodess = [];
7
+ const cpStarts = [cpNode];
8
+ const cpStartSet = new Set(cpStarts);
9
+ if (cpNode.isHoleClosing) {
10
+ cpStartSet.add(cpNode.prevOnCircle.holeCloserTwin);
11
+ }
12
+ cpStartSet.add(cpNode);
13
+ while (cpStarts.length > 0) {
14
+ const cpNodes = [];
15
+ const cpStart = cpStarts.pop();
16
+ const _loop = cpStart.pointOnShape.curve.loop;
17
+ let cpNode = cpStart;
18
+ do {
19
+ const loop = cpNode.pointOnShape.curve.loop;
20
+ if (_loop === loop) {
21
+ cpNodes.push(cpNode);
22
+ cpNode = cpNode.next;
23
+ continue;
24
+ }
25
+ const twin = cpNode.holeCloserTwin;
26
+ if (!cpStartSet.has(twin)) {
27
+ cpStartSet.add(twin);
28
+ cpStartSet.add(twin.prevOnCircle.holeCloserTwin);
29
+ cpStarts.push(twin);
30
+ }
31
+ cpNode = cpNode.prev.holeCloserTwin;
32
+ } while (cpNode !== cpStart);
33
+ cpNodess.push(cpNodes);
34
+ }
35
+ return cpNodess;
36
+ }
37
+ export { getAllOnLoop_ByLoop };
38
+ //# sourceMappingURL=get-all-on-loop-by-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-all-on-loop-by-loop.js","sourceRoot":"","sources":["../../src/reconstruct-from-mat/get-all-on-loop-by-loop.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,SAAS,mBAAmB,CACpB,MAAc;IAElB,MAAM,QAAQ,GAAe,EAAE,CAAC;IAEhC,MAAM,QAAQ,GAAa,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACvB,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,cAAe,CAAC,CAAC;IACxD,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAG,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9C,IAAI,MAAM,GAAG,OAAO,CAAC;QAErB,GAAG,CAAC;YACA,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;gBACrB,SAAS;YACb,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,cAAe,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,cAAe,CAAC,CAAC;gBAClD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YAED,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,cAAe,CAAC;QACzC,CAAC,QAAQ,MAAM,KAAK,OAAO,EAAE;QAE7B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { BezierPiece } from "flo-bezier3";
2
+ declare function getBezierPieceLength(bezierPiece: BezierPiece): number;
3
+ export { getBezierPieceLength };
@@ -0,0 +1,6 @@
1
+ import { length } from 'flo-bezier3';
2
+ function getBezierPieceLength(bezierPiece) {
3
+ return length(bezierPiece.ts, bezierPiece.ps);
4
+ }
5
+ export { getBezierPieceLength };
6
+ //# sourceMappingURL=get-bezier-piece-length.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-bezier-piece-length.js","sourceRoot":"","sources":["../../src/reconstruct-from-mat/get-bezier-piece-length.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,SAAS,oBAAoB,CACrB,WAAwB;IAE5B,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AAGD,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { BezierPiece } from 'flo-bezier3';
2
+ import type { CpNode } from '../cp-node/cp-node.js';
3
+ declare function getBoundary(cpNode: CpNode): {
4
+ boundaryBeziers: BezierPiece[];
5
+ boundaryBeziersOpp: BezierPiece[] | undefined;
6
+ };
7
+ export { getBoundary };
@@ -0,0 +1,18 @@
1
+ import { getBoundaryBezierPartsToNext } from '../cp-node/fs/get-boundary-bezier-parts-to-next.js';
2
+ import { filterZeroLength } from "./filter-zero-length.js";
3
+ import { isFullyTerminating } from './is-fully-terminating.js';
4
+ function getBoundary(cpNode) {
5
+ const cpNodeOpp = isFullyTerminating(cpNode)
6
+ ? undefined // no opposite boundary
7
+ : cpNode.next.prevOnCircle;
8
+ const boundaryBeziers = filterZeroLength(getBoundaryBezierPartsToNext(cpNode));
9
+ const boundaryBeziersOpp = cpNodeOpp === undefined
10
+ ? undefined
11
+ : filterZeroLength(getBoundaryBezierPartsToNext(cpNodeOpp));
12
+ return {
13
+ boundaryBeziers,
14
+ boundaryBeziersOpp
15
+ };
16
+ }
17
+ export { getBoundary };
18
+ //# sourceMappingURL=get-boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-boundary.js","sourceRoot":"","sources":["../../src/reconstruct-from-mat/get-boundary.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,SAAS,WAAW,CACZ,MAAc;IAKlB,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;QACxC,CAAC,CAAC,SAAS,CAAC,uBAAuB;QACnC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;IAE/B,MAAM,eAAe,GACjB,gBAAgB,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC;IAE3D,MAAM,kBAAkB,GAAG,SAAS,KAAK,SAAS;QAC9C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhE,OAAO;QACH,eAAe;QACf,kBAAkB;KACrB,CAAC;AACN,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { CpNode } from "../cp-node/cp-node.js";
2
+ import type { Mat } from '../mat/mat.js';
3
+ declare function getCpNodessForSat(sat: Mat): CpNode[][];
4
+ export { getCpNodessForSat };
@@ -0,0 +1,15 @@
1
+ import { isOnSameLoop } from "../cp-node/fs/is-on-same-loop.js";
2
+ import { isFullyTerminating } from "./is-fully-terminating.js";
3
+ import { getAllOnLoop_ByLoop } from "./get-all-on-loop-by-loop.js";
4
+ function getCpNodessForSat(sat) {
5
+ let { cpNode } = sat;
6
+ while (!isFullyTerminating(cpNode)) {
7
+ cpNode = cpNode.next;
8
+ }
9
+ if (!isOnSameLoop(cpNode, cpNode.next)) {
10
+ cpNode = cpNode.holeCloserTwin;
11
+ }
12
+ return getAllOnLoop_ByLoop(cpNode);
13
+ }
14
+ export { getCpNodessForSat };
15
+ //# sourceMappingURL=get-cp-nodess-for-sat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-cp-nodess-for-sat.js","sourceRoot":"","sources":["../../src/reconstruct-from-mat/get-cp-nodess-for-sat.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE,SAAS,iBAAiB,CAClB,GAAQ;IAEZ,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAErB,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,MAAM,CAAC,cAAe,CAAC;IACpC,CAAC;IAED,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAA"}