flo-mat 3.0.0 → 3.0.2

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 (822) hide show
  1. package/.mocharc.cjs +1 -1
  2. package/README.md +7 -7
  3. package/browser/index.min.js +1 -1
  4. package/newdocs/README.md +41 -0
  5. package/newdocs/babel.config.js +3 -0
  6. package/newdocs/blog/2019-05-28-first-blog-post.md +12 -0
  7. package/newdocs/blog/2019-05-29-long-blog-post.md +44 -0
  8. package/newdocs/blog/2021-08-01-mdx-blog-post.mdx +20 -0
  9. package/newdocs/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
  10. package/newdocs/blog/2021-08-26-welcome/index.md +25 -0
  11. package/newdocs/blog/authors.yml +17 -0
  12. package/newdocs/docs/Introduction.md +78 -0
  13. package/newdocs/docs/aaa.md +23 -0
  14. package/newdocs/docusaurus.config.js +139 -0
  15. package/newdocs/package-lock.json +12697 -0
  16. package/newdocs/package.json +46 -0
  17. package/newdocs/sidebars.js +33 -0
  18. package/newdocs/src/components/HomepageFeatures/index.tsx +46 -0
  19. package/newdocs/src/components/HomepageFeatures/styles.module.css +11 -0
  20. package/newdocs/src/css/custom.css +30 -0
  21. package/newdocs/src/pages/index.module.css +23 -0
  22. package/newdocs/src/pages/index.tsx +43 -0
  23. package/newdocs/src/pages/markdown-page.md +7 -0
  24. package/newdocs/static/.nojekyll +0 -0
  25. package/newdocs/static/img/docusaurus-social-card.jpg +0 -0
  26. package/newdocs/static/img/docusaurus.png +0 -0
  27. package/newdocs/static/img/favicon.ico +0 -0
  28. package/newdocs/static/img/favicon1.ico +0 -0
  29. package/newdocs/static/img/favicon_io/android-chrome-192x192.png +0 -0
  30. package/newdocs/static/img/favicon_io/android-chrome-512x512.png +0 -0
  31. package/newdocs/static/img/favicon_io/apple-touch-icon.png +0 -0
  32. package/newdocs/static/img/favicon_io/favicon-16x16.png +0 -0
  33. package/newdocs/static/img/favicon_io/favicon-32x32.png +0 -0
  34. package/newdocs/static/img/favicon_io/favicon.ico +0 -0
  35. package/newdocs/static/img/favicon_io/site.webmanifest +1 -0
  36. package/newdocs/static/img/favicon_io.zip +0 -0
  37. package/newdocs/static/img/logo.png +0 -0
  38. package/newdocs/static/img/logo.svg +1 -0
  39. package/newdocs/static/img/undraw_books_re_8gea.svg +1 -0
  40. package/newdocs/static/img/undraw_docusaurus_mountain.svg +171 -0
  41. package/newdocs/static/img/undraw_docusaurus_react.svg +170 -0
  42. package/newdocs/static/img/undraw_docusaurus_tree.svg +40 -0
  43. package/newdocs/tsconfig.json +7 -0
  44. package/node/add-n-prong.ts/join-spokes.d.ts +4 -0
  45. package/node/add-n-prong.ts/join-spokes.js +24 -0
  46. package/node/add-n-prong.ts/join-spokes.js.map +1 -0
  47. package/node/bezier/fit-quads-to-cubic.d.ts +19 -0
  48. package/node/bezier/fit-quads-to-cubic.js +83 -0
  49. package/node/bezier/fit-quads-to-cubic.js.map +1 -0
  50. package/node/bezier/total-curvature.d.ts +2 -0
  51. package/node/bezier/total-curvature.js +5 -0
  52. package/node/bezier/total-curvature.js.map +1 -0
  53. package/node/bezier/total-length.d.ts +2 -0
  54. package/node/bezier/total-length.js +5 -0
  55. package/node/bezier/total-length.js.map +1 -0
  56. package/node/closest-boundary-point/cull-bezier-pieces.d.ts +2 -2
  57. package/node/closest-boundary-point/cull-bezier-pieces.js.map +1 -1
  58. package/node/closest-boundary-point/cull-by-loose-bounding-box.d.ts +2 -2
  59. package/node/closest-boundary-point/cull-by-loose-bounding-box.js +2 -2
  60. package/node/closest-boundary-point/cull-by-loose-bounding-box.js.map +1 -1
  61. package/node/closest-boundary-point/cull-by-tight-boundary-box.d.ts +2 -2
  62. package/node/closest-boundary-point/cull-by-tight-boundary-box.js.map +1 -1
  63. package/node/closest-boundary-point/dd-deflate-with-running-error.js.map +1 -1
  64. package/node/closest-boundary-point/foot-and-endpoint-info.d.ts +1 -1
  65. package/node/closest-boundary-point/get-best-distance-squared.d.ts +2 -2
  66. package/node/closest-boundary-point/get-best-distance-squared.js.map +1 -1
  67. package/node/closest-boundary-point/get-close-boundary-points-certified.d.ts +6 -3
  68. package/node/closest-boundary-point/get-close-boundary-points-certified.js +6 -3
  69. package/node/closest-boundary-point/get-close-boundary-points-certified.js.map +1 -1
  70. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.d.ts +5 -1
  71. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js +22 -5
  72. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js.map +1 -1
  73. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.d.ts +1 -1
  74. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.js +13 -8
  75. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.js.map +1 -1
  76. package/node/contact-point/contact-point.js.map +1 -1
  77. package/node/corner/compare-curvatures-at-interface.js +37 -54
  78. package/node/corner/compare-curvatures-at-interface.js.map +1 -1
  79. package/node/corner/corner.d.ts +0 -1
  80. package/node/corner/get-corner.d.ts +1 -1
  81. package/node/corner/get-corner.js +9 -21
  82. package/node/corner/get-corner.js.map +1 -1
  83. package/node/corner/get-interface-ccw.d.ts +6 -7
  84. package/node/corner/get-interface-ccw.js +63 -46
  85. package/node/corner/get-interface-ccw.js.map +1 -1
  86. package/node/cp-node/cp-node-fs.d.ts +225 -0
  87. package/node/cp-node/cp-node-fs.js +228 -0
  88. package/node/cp-node/cp-node-fs.js.map +1 -0
  89. package/node/cp-node/cp-node.d.ts +22 -128
  90. package/node/cp-node/cp-node.js +1 -248
  91. package/node/cp-node/cp-node.js.map +1 -1
  92. package/node/cp-node/{clone.d.ts → fs/clone.d.ts} +1 -1
  93. package/node/cp-node/{clone.js → fs/clone.js} +14 -5
  94. package/node/cp-node/fs/clone.js.map +1 -0
  95. package/node/cp-node/fs/cp-nodes-to-boundary-beziers.d.ts +3 -0
  96. package/node/cp-node/fs/cp-nodes-to-boundary-beziers.js +6 -0
  97. package/node/cp-node/fs/cp-nodes-to-boundary-beziers.js.map +1 -0
  98. package/node/cp-node/{enhance-cp-node.d.ts → fs/enhance-cp-node.d.ts} +14 -4
  99. package/node/cp-node/{enhance-cp-node.js → fs/enhance-cp-node.js} +8 -1
  100. package/node/cp-node/fs/enhance-cp-node.js.map +1 -0
  101. package/node/cp-node/fs/find-first.d.ts +3 -0
  102. package/node/cp-node/fs/find-first.js +16 -0
  103. package/node/cp-node/fs/find-first.js.map +1 -0
  104. package/node/cp-node/fs/get-all-between.d.ts +17 -0
  105. package/node/cp-node/fs/get-all-between.js +31 -0
  106. package/node/cp-node/fs/get-all-between.js.map +1 -0
  107. package/node/cp-node/fs/get-all-on-circle.d.ts +3 -0
  108. package/node/cp-node/fs/get-all-on-circle.js +14 -0
  109. package/node/cp-node/fs/get-all-on-circle.js.map +1 -0
  110. package/node/cp-node/fs/get-all-on-loop.d.ts +3 -0
  111. package/node/cp-node/fs/get-all-on-loop.js +12 -0
  112. package/node/cp-node/fs/get-all-on-loop.js.map +1 -0
  113. package/node/cp-node/fs/get-all-vertices.d.ts +3 -0
  114. package/node/cp-node/fs/get-all-vertices.js +10 -0
  115. package/node/cp-node/fs/get-all-vertices.js.map +1 -0
  116. package/node/cp-node/fs/get-angle-between-mat-curves.d.ts +9 -0
  117. package/node/cp-node/fs/get-angle-between-mat-curves.js +18 -0
  118. package/node/cp-node/fs/get-angle-between-mat-curves.js.map +1 -0
  119. package/node/cp-node/{get-boundary-bezier-parts-to-next.d.ts → fs/get-boundary-bezier-parts-to-next.d.ts} +1 -6
  120. package/node/cp-node/{get-boundary-bezier-parts-to-next.js → fs/get-boundary-bezier-parts-to-next.js} +0 -5
  121. package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js.map +1 -0
  122. package/node/cp-node/fs/get-boundary-beziers-between.d.ts +17 -0
  123. package/node/cp-node/fs/get-boundary-beziers-between.js +22 -0
  124. package/node/cp-node/fs/get-boundary-beziers-between.js.map +1 -0
  125. package/node/cp-node/fs/get-boundary-beziers-to-next.d.ts +3 -0
  126. package/node/cp-node/{get-boundary-beziers-to-next.js → fs/get-boundary-beziers-to-next.js} +2 -7
  127. package/node/cp-node/fs/get-boundary-beziers-to-next.js.map +1 -0
  128. package/node/cp-node/fs/get-branch-beziers.d.ts +8 -0
  129. package/node/cp-node/fs/get-branch-beziers.js +12 -0
  130. package/node/cp-node/fs/get-branch-beziers.js.map +1 -0
  131. package/node/cp-node/fs/get-branch.d.ts +10 -0
  132. package/node/cp-node/fs/get-branch.js +33 -0
  133. package/node/cp-node/fs/get-branch.js.map +1 -0
  134. package/node/cp-node/fs/get-children.d.ts +3 -0
  135. package/node/cp-node/fs/get-children.js +12 -0
  136. package/node/cp-node/fs/get-children.js.map +1 -0
  137. package/node/cp-node/{get-cp-node-ordering.d.ts → fs/get-cp-node-ordering.d.ts} +5 -1
  138. package/node/cp-node/{get-cp-node-ordering.js → fs/get-cp-node-ordering.js} +4 -0
  139. package/node/cp-node/fs/get-cp-node-ordering.js.map +1 -0
  140. package/node/cp-node/fs/get-distance-to-next.d.ts +4 -0
  141. package/node/cp-node/fs/get-distance-to-next.js +11 -0
  142. package/node/cp-node/fs/get-distance-to-next.js.map +1 -0
  143. package/node/cp-node/fs/get-edge-direction.d.ts +3 -0
  144. package/node/{get-curve → cp-node/fs}/get-edge-direction.js +1 -7
  145. package/node/cp-node/fs/get-edge-direction.js.map +1 -0
  146. package/node/cp-node/fs/get-first-exit.d.ts +3 -0
  147. package/node/cp-node/fs/get-first-exit.js +15 -0
  148. package/node/cp-node/fs/get-first-exit.js.map +1 -0
  149. package/node/cp-node/fs/get-hole-closers.d.ts +3 -0
  150. package/node/cp-node/fs/get-hole-closers.js +7 -0
  151. package/node/cp-node/fs/get-hole-closers.js.map +1 -0
  152. package/node/cp-node/fs/get-implied-boundary-bezier-between.d.ts +3 -0
  153. package/node/cp-node/fs/get-implied-boundary-bezier-between.js +58 -0
  154. package/node/cp-node/fs/get-implied-boundary-bezier-between.js.map +1 -0
  155. package/node/cp-node/fs/get-mat-curve-between.d.ts +3 -0
  156. package/node/{get-curve/get-curve-between.js → cp-node/fs/get-mat-curve-between.js} +3 -9
  157. package/node/cp-node/fs/get-mat-curve-between.js.map +1 -0
  158. package/node/cp-node/fs/get-mat-curve-to-next.d.ts +4 -0
  159. package/node/cp-node/fs/get-mat-curve-to-next.js +8 -0
  160. package/node/cp-node/fs/get-mat-curve-to-next.js.map +1 -0
  161. package/node/cp-node/fs/get-mat-curves-between.d.ts +3 -0
  162. package/node/cp-node/fs/get-mat-curves-between.js +13 -0
  163. package/node/cp-node/fs/get-mat-curves-between.js.map +1 -0
  164. package/node/cp-node/fs/get-non-terminating-on-circle.d.ts +3 -0
  165. package/node/cp-node/fs/get-non-terminating-on-circle.js +15 -0
  166. package/node/cp-node/fs/get-non-terminating-on-circle.js.map +1 -0
  167. package/node/cp-node/fs/get-prong-count.d.ts +3 -0
  168. package/node/cp-node/fs/get-prong-count.js +12 -0
  169. package/node/cp-node/fs/get-prong-count.js.map +1 -0
  170. package/node/cp-node/fs/get-real-prong-count.d.ts +3 -0
  171. package/node/cp-node/fs/get-real-prong-count.js +9 -0
  172. package/node/cp-node/fs/get-real-prong-count.js.map +1 -0
  173. package/node/cp-node/fs/get-salience.d.ts +7 -0
  174. package/node/cp-node/fs/get-salience.js +20 -0
  175. package/node/cp-node/fs/get-salience.js.map +1 -0
  176. package/node/cp-node/fs/get-smoothed-speed.d.ts +3 -0
  177. package/node/cp-node/fs/get-smoothed-speed.js +75 -0
  178. package/node/cp-node/fs/get-smoothed-speed.js.map +1 -0
  179. package/node/cp-node/fs/get-speed.d.ts +4 -0
  180. package/node/cp-node/fs/get-speed.js +40 -0
  181. package/node/cp-node/fs/get-speed.js.map +1 -0
  182. package/node/cp-node/fs/get-vertex-forward-children.d.ts +3 -0
  183. package/node/cp-node/fs/get-vertex-forward-children.js +15 -0
  184. package/node/cp-node/fs/get-vertex-forward-children.js.map +1 -0
  185. package/node/cp-node/fs/insert-cp-node.d.ts +5 -0
  186. package/node/cp-node/fs/insert-cp-node.js +21 -0
  187. package/node/cp-node/fs/insert-cp-node.js.map +1 -0
  188. package/node/cp-node/fs/is-fully-terminating.d.ts +3 -0
  189. package/node/cp-node/fs/is-fully-terminating.js +8 -0
  190. package/node/cp-node/fs/is-fully-terminating.js.map +1 -0
  191. package/node/cp-node/fs/is-on-same-circle.d.ts +3 -0
  192. package/node/cp-node/fs/is-on-same-circle.js +8 -0
  193. package/node/cp-node/fs/is-on-same-circle.js.map +1 -0
  194. package/node/cp-node/fs/is-one-prong.d.ts +3 -0
  195. package/node/cp-node/fs/is-one-prong.js +13 -0
  196. package/node/cp-node/fs/is-one-prong.js.map +1 -0
  197. package/node/cp-node/fs/is-order-correct.d.ts +5 -0
  198. package/node/cp-node/fs/is-order-correct.js +26 -0
  199. package/node/cp-node/fs/is-order-correct.js.map +1 -0
  200. package/node/cp-node/fs/is-sharp.d.ts +3 -0
  201. package/node/cp-node/fs/is-sharp.js +5 -0
  202. package/node/cp-node/fs/is-sharp.js.map +1 -0
  203. package/node/cp-node/fs/is-special.d.ts +3 -0
  204. package/node/cp-node/fs/is-special.js +9 -0
  205. package/node/cp-node/fs/is-special.js.map +1 -0
  206. package/node/cp-node/fs/is-terminating.d.ts +3 -0
  207. package/node/cp-node/fs/is-terminating.js +5 -0
  208. package/node/cp-node/fs/is-terminating.js.map +1 -0
  209. package/node/cp-node/fs/is-trivial.d.ts +6 -0
  210. package/node/cp-node/fs/is-trivial.js +10 -0
  211. package/node/cp-node/fs/is-trivial.js.map +1 -0
  212. package/node/cp-node/fs/is-two-prong.d.ts +3 -0
  213. package/node/cp-node/fs/is-two-prong.js +6 -0
  214. package/node/cp-node/fs/is-two-prong.js.map +1 -0
  215. package/node/cp-node/fs/is-vertex-special.d.ts +2 -0
  216. package/node/cp-node/fs/is-vertex-special.js +5 -0
  217. package/node/cp-node/fs/is-vertex-special.js.map +1 -0
  218. package/node/cp-node/fs/is-vertex.d.ts +3 -0
  219. package/node/cp-node/fs/is-vertex.js +6 -0
  220. package/node/cp-node/fs/is-vertex.js.map +1 -0
  221. package/node/cp-node/fs/remove-cp-node.d.ts +5 -0
  222. package/node/cp-node/fs/remove-cp-node.js +10 -0
  223. package/node/cp-node/fs/remove-cp-node.js.map +1 -0
  224. package/node/cp-node/fs/traverse-cp.d.ts +3 -0
  225. package/node/cp-node/{traverse-cp.js → fs/traverse-cp.js} +2 -10
  226. package/node/cp-node/fs/traverse-cp.js.map +1 -0
  227. package/node/cp-node/fs/traverse-edges.d.ts +5 -0
  228. package/node/cp-node/fs/traverse-edges.js +47 -0
  229. package/node/cp-node/fs/traverse-edges.js.map +1 -0
  230. package/node/cp-node/fs/traverse-vertices.d.ts +3 -0
  231. package/node/cp-node/fs/traverse-vertices.js +21 -0
  232. package/node/cp-node/fs/traverse-vertices.js.map +1 -0
  233. package/node/curve/curve.d.ts +1 -8
  234. package/node/curve/curve.js +1 -13
  235. package/node/curve/curve.js.map +1 -1
  236. package/node/debug/debug-elem-types.d.ts +24 -29
  237. package/node/debug/debug-elem-types.js +22 -1
  238. package/node/debug/debug-elem-types.js.map +1 -1
  239. package/node/debug/debug.d.ts +4 -8
  240. package/node/debug/debug.js +16 -17
  241. package/node/debug/debug.js.map +1 -1
  242. package/node/debug/functions/draw/draw-beziers-as-single-path.d.ts +2 -0
  243. package/node/debug/functions/draw/draw-beziers-as-single-path.js +30 -0
  244. package/node/debug/functions/draw/draw-beziers-as-single-path.js.map +1 -0
  245. package/node/debug/functions/draw/xmlns.d.ts +2 -0
  246. package/node/debug/functions/draw/xmlns.js +3 -0
  247. package/node/debug/functions/draw/xmlns.js.map +1 -0
  248. package/node/debug/functions/draw-elem/draw-branch.d.ts +4 -0
  249. package/node/debug/functions/draw-elem/draw-branch.js +26 -0
  250. package/node/debug/functions/draw-elem/draw-branch.js.map +1 -0
  251. package/node/debug/functions/draw-elem/draw-cp-node.d.ts +4 -0
  252. package/node/debug/functions/draw-elem/draw-cp-node.js +26 -0
  253. package/node/debug/functions/draw-elem/draw-cp-node.js.map +1 -0
  254. package/node/debug/functions/draw-elem/draw-cull.d.ts +3 -0
  255. package/node/debug/functions/draw-elem/draw-cull.js +9 -0
  256. package/node/debug/functions/draw-elem/draw-cull.js.map +1 -0
  257. package/node/debug/functions/draw-elem/{dull-corner.js → draw-dull-corner.js} +1 -1
  258. package/node/debug/functions/draw-elem/draw-dull-corner.js.map +1 -0
  259. package/node/debug/functions/draw-elem/draw-elem.d.ts +7 -5
  260. package/node/debug/functions/draw-elem/draw-elem.js +33 -36
  261. package/node/debug/functions/draw-elem/draw-elem.js.map +1 -1
  262. package/node/debug/functions/draw-elem/draw-leaves.d.ts +4 -0
  263. package/node/debug/functions/draw-elem/draw-leaves.js +34 -0
  264. package/node/debug/functions/draw-elem/draw-leaves.js.map +1 -0
  265. package/node/debug/functions/draw-elem/{loop.js → draw-loop.js} +1 -1
  266. package/node/debug/functions/draw-elem/draw-loop.js.map +1 -0
  267. package/node/debug/functions/draw-elem/{loops.js → draw-loops.js} +1 -1
  268. package/node/debug/functions/draw-elem/draw-loops.js.map +1 -0
  269. package/node/debug/functions/draw-elem/{loose-bounding-box.js → draw-loose-bounding-box.js} +1 -1
  270. package/node/debug/functions/draw-elem/draw-loose-bounding-box.js.map +1 -0
  271. package/node/debug/functions/draw-elem/draw-mat.d.ts +4 -0
  272. package/node/debug/functions/draw-elem/draw-mat.js +38 -0
  273. package/node/debug/functions/draw-elem/draw-mat.js.map +1 -0
  274. package/node/debug/functions/draw-elem/{max-vertex.js → draw-max-vertex.js} +1 -1
  275. package/node/debug/functions/draw-elem/draw-max-vertex.js.map +1 -0
  276. package/node/debug/functions/draw-elem/{min-y.js → draw-min-y.js} +1 -1
  277. package/node/debug/functions/draw-elem/draw-min-y.js.map +1 -0
  278. package/node/debug/functions/draw-elem/{one-prong-at-dull-corner.js → draw-one-prong-at-dull-corner.js} +1 -1
  279. package/node/debug/functions/draw-elem/draw-one-prong-at-dull-corner.js.map +1 -0
  280. package/node/debug/functions/draw-elem/{one-prong.js → draw-one-prong.js} +1 -1
  281. package/node/debug/functions/draw-elem/draw-one-prong.js.map +1 -0
  282. package/node/debug/functions/draw-elem/{sharp-corner.js → draw-sharp-corner.js} +1 -1
  283. package/node/debug/functions/draw-elem/draw-sharp-corner.js.map +1 -0
  284. package/node/debug/functions/draw-elem/draw-speed.d.ts +4 -0
  285. package/node/debug/functions/draw-elem/draw-speed.js +21 -0
  286. package/node/debug/functions/draw-elem/draw-speed.js.map +1 -0
  287. package/node/debug/functions/draw-elem/draw-three-prong.d.ts +4 -0
  288. package/node/debug/functions/draw-elem/draw-three-prong.js +26 -0
  289. package/node/debug/functions/draw-elem/draw-three-prong.js.map +1 -0
  290. package/node/debug/functions/draw-elem/{tight-bounding-box.js → draw-tight-bounding-box.js} +1 -1
  291. package/node/debug/functions/draw-elem/draw-tight-bounding-box.js.map +1 -0
  292. package/node/debug/functions/draw-elem/draw-two-prong.d.ts +4 -0
  293. package/node/debug/functions/draw-elem/draw-two-prong.js +48 -0
  294. package/node/debug/functions/draw-elem/draw-two-prong.js.map +1 -0
  295. package/node/debug/functions/draw-elem/{vertex.d.ts → draw-vertex.d.ts} +1 -2
  296. package/node/debug/functions/draw-elem/draw-vertex.js +15 -0
  297. package/node/debug/functions/draw-elem/draw-vertex.js.map +1 -0
  298. package/node/find-2-prong/add-1-prong.d.ts +3 -5
  299. package/node/find-2-prong/add-1-prong.js +15 -16
  300. package/node/find-2-prong/add-1-prong.js.map +1 -1
  301. package/node/find-2-prong/add-2-prong.d.ts +6 -6
  302. package/node/find-2-prong/add-2-prong.js +45 -124
  303. package/node/find-2-prong/add-2-prong.js.map +1 -1
  304. package/node/find-2-prong/calc-seperation-tolerance.d.ts +2 -0
  305. package/node/find-2-prong/calc-seperation-tolerance.js +86 -0
  306. package/node/find-2-prong/calc-seperation-tolerance.js.map +1 -0
  307. package/node/find-2-prong/cull-bezier-pieces.d.ts +2 -2
  308. package/node/find-2-prong/cull-bezier-pieces.js +2 -2
  309. package/node/find-2-prong/cull-bezier-pieces.js.map +1 -1
  310. package/node/find-2-prong/find-2-prong.d.ts +4 -6
  311. package/node/find-2-prong/find-2-prong.js +70 -59
  312. package/node/find-2-prong/find-2-prong.js.map +1 -1
  313. package/node/find-2-prong/find-and-add-2-prong.d.ts +11 -0
  314. package/node/find-2-prong/find-and-add-2-prong.js +19 -0
  315. package/node/find-2-prong/find-and-add-2-prong.js.map +1 -0
  316. package/node/find-2-prong/find-and-add-2-prongs-on-all-loops.d.ts +14 -0
  317. package/node/find-2-prong/find-and-add-2-prongs-on-all-loops.js +21 -0
  318. package/node/find-2-prong/find-and-add-2-prongs-on-all-loops.js.map +1 -0
  319. package/node/find-2-prong/find-and-add-2-prongs.d.ts +5 -9
  320. package/node/find-2-prong/find-and-add-2-prongs.js +17 -21
  321. package/node/find-2-prong/find-and-add-2-prongs.js.map +1 -1
  322. package/node/find-2-prong/find-and-add-hole-closing-2-prongs.d.ts +3 -4
  323. package/node/find-2-prong/find-and-add-hole-closing-2-prongs.js +8 -8
  324. package/node/find-2-prong/find-and-add-hole-closing-2-prongs.js.map +1 -1
  325. package/node/find-2-prong/find-equidistant-point-on-line-dd.js.map +1 -1
  326. package/node/find-2-prong/get-initial-bezier-pieces.d.ts +2 -8
  327. package/node/find-2-prong/get-initial-bezier-pieces.js +13 -21
  328. package/node/find-2-prong/get-initial-bezier-pieces.js.map +1 -1
  329. package/node/find-2-prong/reduce-radius.d.ts +2 -2
  330. package/node/find-2-prong/reduce-radius.js +10 -19
  331. package/node/find-2-prong/reduce-radius.js.map +1 -1
  332. package/node/find-3-prong.ts/calc-better-x.d.ts +3 -3
  333. package/node/find-3-prong.ts/calc-better-x.js +4 -4
  334. package/node/find-3-prong.ts/calc-better-x.js.map +1 -1
  335. package/node/find-3-prong.ts/calc-initial-3-prong-center.d.ts +2 -2
  336. package/node/find-3-prong.ts/calc-initial-3-prong-center.js +6 -3
  337. package/node/find-3-prong.ts/calc-initial-3-prong-center.js.map +1 -1
  338. package/node/find-3-prong.ts/find-3-prong-for-delta3s.d.ts +4 -4
  339. package/node/find-3-prong.ts/find-3-prong-for-delta3s.js +24 -33
  340. package/node/find-3-prong.ts/find-3-prong-for-delta3s.js.map +1 -1
  341. package/node/find-3-prong.ts/find-3-prong.d.ts +1 -1
  342. package/node/find-3-prong.ts/find-3-prong.js +2 -61
  343. package/node/find-3-prong.ts/find-3-prong.js.map +1 -1
  344. package/node/find-3-prong.ts/find-and-add-3-prong.d.ts +15 -0
  345. package/node/find-3-prong.ts/find-and-add-3-prong.js +43 -0
  346. package/node/find-3-prong.ts/find-and-add-3-prong.js.map +1 -0
  347. package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.d.ts +11 -0
  348. package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.js +63 -0
  349. package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.js.map +1 -0
  350. package/node/find-3-prong.ts/find-and-add-3-prongs.d.ts +22 -3
  351. package/node/find-3-prong.ts/find-and-add-3-prongs.js +28 -55
  352. package/node/find-3-prong.ts/find-and-add-3-prongs.js.map +1 -1
  353. package/node/find-3-prong.ts/get-closest-points.d.ts +2 -2
  354. package/node/find-3-prong.ts/get-closest-points.js +2 -1
  355. package/node/find-3-prong.ts/get-closest-points.js.map +1 -1
  356. package/node/find-mat/clip-options.d.ts +3 -0
  357. package/node/find-mat/clip-options.js +32 -0
  358. package/node/find-mat/clip-options.js.map +1 -0
  359. package/node/find-mat/{create-initial-cp-graph.d.ts → create-initial-cp-tree.d.ts} +5 -2
  360. package/node/find-mat/{create-initial-cp-graph.js → create-initial-cp-tree.js} +11 -10
  361. package/node/find-mat/create-initial-cp-tree.js.map +1 -0
  362. package/node/find-mat/find-mat.d.ts +7 -2
  363. package/node/find-mat/find-mat.js +34 -22
  364. package/node/find-mat/find-mat.js.map +1 -1
  365. package/node/find-mat/find-mats.d.ts +4 -2
  366. package/node/find-mat/find-mats.js +27 -10
  367. package/node/find-mat/find-mats.js.map +1 -1
  368. package/node/find-mat/{get-dull-corners.js → get-dull-corners-on-loop.js} +3 -3
  369. package/node/find-mat/get-dull-corners-on-loop.js.map +1 -0
  370. package/node/find-mat/get-for-1-prongs-on-loop.js +15 -5
  371. package/node/find-mat/get-for-1-prongs-on-loop.js.map +1 -1
  372. package/node/find-mat/get-for-2-prongs-on-loop.js +14 -10
  373. package/node/find-mat/get-for-2-prongs-on-loop.js.map +1 -1
  374. package/node/find-mat/get-meta.d.ts +11 -0
  375. package/node/find-mat/get-meta.js +82 -0
  376. package/node/find-mat/get-meta.js.map +1 -0
  377. package/node/find-mat/get-sharp-corners.js +3 -2
  378. package/node/find-mat/get-sharp-corners.js.map +1 -1
  379. package/node/find-mat/mat-options.d.ts +88 -0
  380. package/node/find-mat/mat-options.js +36 -0
  381. package/node/find-mat/mat-options.js.map +1 -0
  382. package/node/floyd-warshall/floyd-warshall.d.ts +7 -0
  383. package/node/floyd-warshall/floyd-warshall.js +67 -0
  384. package/node/floyd-warshall/floyd-warshall.js.map +1 -0
  385. package/node/floyd-warshall/get-graph.d.ts +3 -0
  386. package/node/floyd-warshall/get-graph.js +54 -0
  387. package/node/floyd-warshall/get-graph.js.map +1 -0
  388. package/node/floyd-warshall/get-hole-closer-pairs.d.ts +3 -0
  389. package/node/floyd-warshall/get-hole-closer-pairs.js +19 -0
  390. package/node/floyd-warshall/get-hole-closer-pairs.js.map +1 -0
  391. package/node/geometry/circle.js.map +1 -1
  392. package/node/geometry/get-bounding-box-.d.ts +2 -2
  393. package/node/geometry/get-bounding-box-.js +2 -2
  394. package/node/geometry/get-bounding-box-.js.map +1 -1
  395. package/node/geometry/get-closest-square-distance-to-rect.js.map +1 -1
  396. package/node/geometry/get-closest-squared-distance-to-rotated-rect.js.map +1 -1
  397. package/node/index.d.ts +50 -40
  398. package/node/index.js +34 -37
  399. package/node/index.js.map +1 -1
  400. package/node/loop/get-max-coordinate.js.map +1 -1
  401. package/node/mat/{add-to-cp-graph.d.ts → add-to-cp-tree.d.ts} +6 -4
  402. package/node/mat/add-to-cp-tree.js +34 -0
  403. package/node/mat/add-to-cp-tree.js.map +1 -0
  404. package/node/mat/connect-hole-closers.d.ts +3 -0
  405. package/node/mat/connect-hole-closers.js +5 -0
  406. package/node/mat/connect-hole-closers.js.map +1 -0
  407. package/node/mat/create-new-cp-tree.d.ts +1 -1
  408. package/node/mat/create-new-cp-tree.js +2 -1
  409. package/node/mat/create-new-cp-tree.js.map +1 -1
  410. package/node/mat/{bezier-piece.d.ts → curve-piece.d.ts} +2 -2
  411. package/node/mat/curve-piece.js +2 -0
  412. package/node/mat/curve-piece.js.map +1 -0
  413. package/node/mat/get-boundary-piece-beziers.d.ts +3 -2
  414. package/node/mat/get-boundary-piece-beziers.js +2 -3
  415. package/node/mat/get-boundary-piece-beziers.js.map +1 -1
  416. package/node/mat/get-branches.d.ts +1 -10
  417. package/node/mat/get-branches.js +23 -60
  418. package/node/mat/get-branches.js.map +1 -1
  419. package/node/mat/get-closeby-cp-if-exist.d.ts +17 -0
  420. package/node/mat/{is-another-cp-closeby.js → get-closeby-cp-if-exist.js} +17 -13
  421. package/node/mat/get-closeby-cp-if-exist.js.map +1 -0
  422. package/node/mat/get-cp-node-to-left-or-same.d.ts +18 -0
  423. package/node/mat/get-cp-node-to-left-or-same.js +29 -0
  424. package/node/mat/get-cp-node-to-left-or-same.js.map +1 -0
  425. package/node/mat/get-largest-vertex.d.ts +1 -1
  426. package/node/mat/get-largest-vertex.js +3 -1
  427. package/node/mat/get-largest-vertex.js.map +1 -1
  428. package/node/mat/mat-meta.d.ts +24 -0
  429. package/node/mat/mat-meta.js +2 -0
  430. package/node/mat/mat-meta.js.map +1 -0
  431. package/node/mat/mat.d.ts +6 -6
  432. package/node/mat/simplify-mat.d.ts +2 -2
  433. package/node/mat/simplify-mat.js +31 -20
  434. package/node/mat/simplify-mat.js.map +1 -1
  435. package/node/mat/trim-mat.js +8 -2
  436. package/node/mat/trim-mat.js.map +1 -1
  437. package/node/memoize-primitive.d.ts +11 -0
  438. package/node/memoize-primitive.js +25 -0
  439. package/node/memoize-primitive.js.map +1 -0
  440. package/node/point-on-shape/calc-pos-order.js +1 -2
  441. package/node/point-on-shape/calc-pos-order.js.map +1 -1
  442. package/node/point-on-shape/compare-poss.js.map +1 -1
  443. package/node/point-on-shape/create-pos.d.ts +1 -1
  444. package/node/point-on-shape/create-pos.js +2 -3
  445. package/node/point-on-shape/create-pos.js.map +1 -1
  446. package/node/point-on-shape/get-osculating-circle.d.ts +3 -1
  447. package/node/point-on-shape/get-osculating-circle.js +6 -2
  448. package/node/point-on-shape/get-osculating-circle.js.map +1 -1
  449. package/node/point-on-shape/get-pos-corner.js +4 -2
  450. package/node/point-on-shape/get-pos-corner.js.map +1 -1
  451. package/node/point-on-shape/is-pos-quite-sharp-corner.js.map +1 -1
  452. package/node/point-on-shape/is-pos-sharp-corner.js.map +1 -1
  453. package/node/point-on-shape/point-on-shape.d.ts +1 -1
  454. package/node/sat/add-debug-info.d.ts +1 -2
  455. package/node/sat/add-debug-info.js +1 -2
  456. package/node/sat/add-debug-info.js.map +1 -1
  457. package/node/sat/cull-non-cycles.js +2 -2
  458. package/node/sat/cull-non-cycles.js.map +1 -1
  459. package/node/sat/cull.d.ts +2 -2
  460. package/node/sat/cull.js +40 -95
  461. package/node/sat/cull.js.map +1 -1
  462. package/node/sat/get-leaves.js +6 -4
  463. package/node/sat/get-leaves.js.map +1 -1
  464. package/node/sat/get-sat-culls.d.ts +4 -0
  465. package/node/sat/get-sat-culls.js +33 -0
  466. package/node/sat/get-sat-culls.js.map +1 -0
  467. package/node/sat/to-scale-axis.d.ts +1 -2
  468. package/node/sat/to-scale-axis.js +14 -52
  469. package/node/sat/to-scale-axis.js.map +1 -1
  470. package/node/svg/get-loop-bounds.js.map +1 -1
  471. package/node/svg/get-min-y-pos.d.ts +1 -1
  472. package/node/svg/get-shape-bounds.js.map +1 -1
  473. package/node/sweep-line/sweep-line.js.map +1 -1
  474. package/node/utils/dual-set.d.ts +27 -0
  475. package/node/utils/dual-set.js +55 -0
  476. package/node/utils/dual-set.js.map +1 -0
  477. package/node/utils/sleep.d.ts +2 -0
  478. package/node/utils/sleep.js +5 -0
  479. package/node/utils/sleep.js.map +1 -0
  480. package/node/utils/sum.d.ts +2 -0
  481. package/node/utils/sum.js +9 -0
  482. package/node/utils/sum.js.map +1 -0
  483. package/node/utils/tri-map.d.ts +27 -0
  484. package/node/utils/tri-map.js +49 -0
  485. package/node/utils/tri-map.js.map +1 -0
  486. package/node/vertex/remove-vertex.d.ts +5 -0
  487. package/node/vertex/remove-vertex.js +12 -0
  488. package/node/vertex/remove-vertex.js.map +1 -0
  489. package/package.json +21 -25
  490. package/src/add-n-prong.ts/join-spokes.ts +39 -0
  491. package/src/bezier/fit-quads-to-cubic.ts +103 -0
  492. package/src/bezier/total-curvature.ts +8 -0
  493. package/src/bezier/total-length.ts +8 -0
  494. package/src/closest-boundary-point/closest-points-on-curve-precise.ts +62 -62
  495. package/src/closest-boundary-point/cull-bezier-pieces.ts +2 -2
  496. package/src/closest-boundary-point/cull-by-loose-bounding-box.ts +4 -4
  497. package/src/closest-boundary-point/cull-by-tight-boundary-box.ts +2 -2
  498. package/src/closest-boundary-point/foot-and-endpoint-info.ts +2 -2
  499. package/src/closest-boundary-point/get-best-distance-squared.ts +2 -2
  500. package/src/closest-boundary-point/get-close-boundary-points-certified.ts +8 -3
  501. package/src/closest-boundary-point/get-closest-boundary-point-certified.ts +56 -56
  502. package/src/closest-boundary-point/get-potential-closest-points-on-curve-certified.ts +24 -6
  503. package/src/closest-boundary-point/root-interval-to-distance-squared-interval.ts +12 -6
  504. package/src/corner/compare-curvatures-at-interface.ts +49 -69
  505. package/src/corner/corner.ts +1 -1
  506. package/src/corner/get-corner.ts +9 -23
  507. package/src/corner/get-interface-ccw.ts +96 -60
  508. package/src/cp-node/cp-node-fs.ts +234 -0
  509. package/src/cp-node/cp-node.ts +27 -348
  510. package/src/cp-node/fs/add-distance-from.ts +50 -0
  511. package/src/cp-node/{clone.ts → fs/clone.ts} +27 -17
  512. package/src/cp-node/fs/cp-nodes-to-boundary-beziers.ts +10 -0
  513. package/src/cp-node/fs/create-cp-node.ts +21 -0
  514. package/src/cp-node/{enhance-cp-node.ts → fs/enhance-cp-node.ts} +10 -4
  515. package/src/cp-node/fs/find-first.ts +25 -0
  516. package/src/cp-node/fs/get-all-between.ts +44 -0
  517. package/src/cp-node/fs/get-all-on-circle.ts +23 -0
  518. package/src/cp-node/fs/get-all-on-loop.ts +18 -0
  519. package/src/cp-node/fs/get-all-vertices.ts +17 -0
  520. package/src/cp-node/fs/get-angle-between-mat-curves.ts +33 -0
  521. package/src/cp-node/fs/get-avg-speed.ts +31 -0
  522. package/src/cp-node/{get-boundary-bezier-parts-to-next.ts → fs/get-boundary-bezier-parts-to-next.ts} +2 -9
  523. package/src/cp-node/fs/get-boundary-beziers-between.ts +31 -0
  524. package/src/cp-node/{get-boundary-beziers-to-next.ts → fs/get-boundary-beziers-to-next.ts} +5 -10
  525. package/src/cp-node/fs/get-boundary-distance-to-next.ts +16 -0
  526. package/src/cp-node/fs/get-branch-beziers.ts +18 -0
  527. package/src/cp-node/fs/get-branch.ts +43 -0
  528. package/src/cp-node/fs/get-children.ts +18 -0
  529. package/src/cp-node/{get-cp-node-ordering.ts → fs/get-cp-node-ordering.ts} +5 -1
  530. package/src/cp-node/fs/get-distance-between.ts +16 -0
  531. package/src/cp-node/fs/get-distance-to-next.ts +19 -0
  532. package/src/cp-node/fs/get-edge-direction.ts +64 -0
  533. package/src/cp-node/fs/get-first-exit.ts +22 -0
  534. package/src/cp-node/fs/get-hole-closers.ts +13 -0
  535. package/src/cp-node/fs/get-implied-boundary-bezier-between.ts +78 -0
  536. package/src/cp-node/fs/get-mat-curve-between.ts +74 -0
  537. package/src/cp-node/fs/get-mat-curve-to-next.ts +13 -0
  538. package/src/cp-node/fs/get-mat-curves-between.ts +22 -0
  539. package/src/cp-node/fs/get-non-terminating-on-circle.ts +24 -0
  540. package/src/cp-node/fs/get-prong-count.ts +18 -0
  541. package/src/cp-node/fs/get-real-prong-count.ts +14 -0
  542. package/src/cp-node/fs/get-salience.ts +28 -0
  543. package/src/cp-node/fs/get-smoothed-speed.ts +97 -0
  544. package/src/cp-node/fs/get-smoothed.ts +62 -0
  545. package/src/cp-node/fs/get-speed.ts +61 -0
  546. package/src/cp-node/fs/get-terminating-on-circle.ts +24 -0
  547. package/src/cp-node/fs/get-vertex-forward-children.ts +22 -0
  548. package/src/cp-node/fs/insert-cp-node.ts +40 -0
  549. package/src/cp-node/fs/is-fully-terminating.ts +13 -0
  550. package/src/cp-node/fs/is-on-same-circle.ts +16 -0
  551. package/src/cp-node/fs/is-one-prong.ts +21 -0
  552. package/src/cp-node/fs/is-order-correct.ts +36 -0
  553. package/src/cp-node/fs/is-sharp.ts +9 -0
  554. package/src/cp-node/fs/is-single-3-prong.ts +15 -0
  555. package/src/cp-node/fs/is-special.ts +16 -0
  556. package/src/cp-node/fs/is-terminating.ts +9 -0
  557. package/src/cp-node/fs/is-trivial.ts +16 -0
  558. package/src/cp-node/fs/is-two-prong.ts +10 -0
  559. package/src/cp-node/fs/is-vertex-special.ts +8 -0
  560. package/src/cp-node/fs/is-vertex.ts +12 -0
  561. package/src/cp-node/fs/iterate-all-on-loop.ts +15 -0
  562. package/src/cp-node/fs/remove-cp-node.ts +20 -0
  563. package/src/cp-node/fs/traverse-all-forward.ts +24 -0
  564. package/src/cp-node/{traverse-cp.ts → fs/traverse-cp.ts} +3 -11
  565. package/src/cp-node/fs/traverse-edges.ts +71 -0
  566. package/src/cp-node/fs/traverse-vertices.ts +32 -0
  567. package/src/curve/curve.ts +1 -16
  568. package/src/dbscan/dbscan.ts +91 -0
  569. package/src/debug/debug-elem-types.ts +37 -29
  570. package/src/debug/debug.ts +20 -25
  571. package/src/debug/functions/check-ordering.ts +97 -0
  572. package/src/debug/functions/cmp-cp-on-delta.ts +54 -0
  573. package/src/debug/functions/draw/draw-bezier-pieces.ts +35 -0
  574. package/src/debug/functions/draw/draw-beziers-as-single-path.ts +40 -0
  575. package/src/debug/functions/draw/draw-disk.ts +34 -0
  576. package/src/debug/functions/draw/xmlns.ts +5 -0
  577. package/src/debug/functions/draw-elem/branch.ts +0 -1
  578. package/src/debug/functions/draw-elem/draw-branch.ts +39 -0
  579. package/src/debug/functions/draw-elem/draw-cp-node.ts +47 -0
  580. package/src/debug/functions/draw-elem/draw-cull.ts +21 -0
  581. package/src/debug/functions/draw-elem/draw-dull-corner.ts +21 -0
  582. package/src/debug/functions/draw-elem/draw-elem.ts +51 -48
  583. package/src/debug/functions/draw-elem/draw-leaves.ts +51 -0
  584. package/src/debug/functions/draw-elem/draw-loop.ts +16 -0
  585. package/src/debug/functions/draw-elem/draw-loops.ts +10 -0
  586. package/src/debug/functions/draw-elem/draw-loose-bounding-box.ts +21 -0
  587. package/src/debug/functions/draw-elem/draw-mat.ts +53 -0
  588. package/src/debug/functions/draw-elem/draw-max-vertex.ts +15 -0
  589. package/src/debug/functions/draw-elem/draw-min-y.ts +18 -0
  590. package/src/debug/functions/draw-elem/draw-one-prong-at-dull-corner.ts +26 -0
  591. package/src/debug/functions/draw-elem/draw-one-prong.ts +23 -0
  592. package/src/debug/functions/draw-elem/draw-sharp-corner.ts +20 -0
  593. package/src/debug/functions/draw-elem/draw-speed.ts +35 -0
  594. package/src/debug/functions/draw-elem/draw-three-prong.ts +44 -0
  595. package/src/debug/functions/draw-elem/draw-tight-bounding-box.ts +18 -0
  596. package/src/debug/functions/draw-elem/draw-two-prong.ts +67 -0
  597. package/src/debug/functions/draw-elem/draw-vertex.ts +30 -0
  598. package/src/debug/two-prong-for-debugging.ts +2 -2
  599. package/src/dijkstra/dijkstra.ts +418 -0
  600. package/src/find-2-prong/add-1-prong.ts +15 -22
  601. package/src/find-2-prong/add-2-prong.ts +68 -173
  602. package/src/find-2-prong/add-debug-info.ts +21 -25
  603. package/src/find-2-prong/calc-seperation-tolerance.ts +121 -0
  604. package/src/find-2-prong/cull-bezier-pieces.ts +4 -4
  605. package/src/find-2-prong/find-2-prong.ts +87 -71
  606. package/src/find-2-prong/find-and-add-2-prong.ts +30 -0
  607. package/src/find-2-prong/find-and-add-2-prongs-on-all-loops.ts +37 -0
  608. package/src/find-2-prong/find-and-add-2-prongs.ts +20 -33
  609. package/src/find-2-prong/find-and-add-hole-closing-2-prongs.ts +13 -14
  610. package/src/find-2-prong/get-initial-bezier-pieces.ts +23 -31
  611. package/src/find-2-prong/reduce-radius.ts +13 -24
  612. package/src/find-3-prong.ts/array-set.ts +47 -0
  613. package/src/find-3-prong.ts/calc-better-x.ts +7 -7
  614. package/src/find-3-prong.ts/calc-initial-3-prong-center.ts +8 -3
  615. package/src/find-3-prong.ts/find-3-prong-for-delta3s.ts +28 -42
  616. package/src/find-3-prong.ts/find-3-prong.ts +7 -107
  617. package/src/find-3-prong.ts/find-and-add-3-prong.ts +61 -0
  618. package/src/find-3-prong.ts/find-and-add-3-prongs-on-loop.ts +89 -0
  619. package/src/find-3-prong.ts/find-and-add-3-prongs.ts +31 -81
  620. package/src/find-3-prong.ts/get-closest-points.ts +3 -3
  621. package/src/find-mat/add-2-prongs-by-error.ts +122 -0
  622. package/src/find-mat/clip-options.ts +38 -0
  623. package/src/find-mat/cp-node-for-insertion.ts +13 -0
  624. package/src/find-mat/create-initial-cp-tree.ts +59 -0
  625. package/src/find-mat/find-mat.ts +50 -38
  626. package/src/find-mat/find-mats.ts +39 -22
  627. package/src/find-mat/get-dull-corners-on-loop.ts +34 -0
  628. package/src/find-mat/get-for-1-prongs-on-loop.ts +25 -6
  629. package/src/find-mat/get-for-2-prongs-on-loop.ts +16 -8
  630. package/src/find-mat/get-half-angles.ts +95 -0
  631. package/src/find-mat/get-meta.ts +115 -0
  632. package/src/find-mat/get-sharp-corners.ts +3 -2
  633. package/src/find-mat/get-total-by.ts +5 -5
  634. package/src/find-mat/mat-options.ts +140 -0
  635. package/src/floyd-warshall/floyd-warshall.ts +89 -0
  636. package/src/floyd-warshall/get-graph.ts +73 -0
  637. package/src/floyd-warshall/get-hole-closer-pairs.ts +27 -0
  638. package/src/geometry/get-bounding-box-.ts +3 -2
  639. package/src/heap/heap.ts +96 -0
  640. package/src/index.ts +52 -133
  641. package/src/mat/add-to-cp-tree.ts +56 -0
  642. package/src/mat/clone-mat.ts +14 -0
  643. package/src/mat/clone-meta.ts +17 -0
  644. package/src/mat/connect-hole-closers.ts +9 -0
  645. package/src/mat/create-new-cp-tree.ts +4 -1
  646. package/src/mat/{bezier-piece.ts → curve-piece.ts} +2 -2
  647. package/src/mat/get-boundary-piece-beziers.ts +10 -11
  648. package/src/mat/get-branches.ts +25 -75
  649. package/src/mat/get-closeby-cp-if-exist.ts +75 -0
  650. package/src/mat/get-cp-node-to-left-or-same.ts +43 -0
  651. package/src/mat/get-edges-as-array.ts +12 -12
  652. package/src/mat/get-largest-3-prong.ts +21 -0
  653. package/src/mat/get-largest-vertex.ts +4 -1
  654. package/src/mat/mat-meta.ts +31 -0
  655. package/src/mat/mat.ts +7 -7
  656. package/src/mat/simplify-mat.ts +39 -23
  657. package/src/mat/trim-mat.ts +8 -2
  658. package/src/memoize-primitive.ts +31 -0
  659. package/src/point-on-shape/calc-pos-order.ts +1 -2
  660. package/src/point-on-shape/create-pos.ts +2 -3
  661. package/src/point-on-shape/get-osculating-circle.ts +4 -1
  662. package/src/point-on-shape/get-pos-corner.ts +10 -6
  663. package/src/point-on-shape/is-pos-dull-corner.ts +6 -4
  664. package/src/point-on-shape/point-on-shape.ts +1 -1
  665. package/src/sat/add-debug-info.ts +0 -4
  666. package/src/sat/cull-by-salience.ts +115 -0
  667. package/src/sat/cull-non-cycles.ts +4 -2
  668. package/src/sat/cull.ts +48 -99
  669. package/src/sat/get-leaves.ts +9 -4
  670. package/src/sat/get-sat-culls.ts +46 -0
  671. package/src/sat/to-scale-axis.ts +14 -70
  672. package/src/svg/get-extreme.ts +1 -1
  673. package/src/utils/bezier-piece-to-bezier.ts +13 -0
  674. package/src/utils/deg-to-rad.ts +7 -0
  675. package/src/utils/dual-map.ts +55 -0
  676. package/src/utils/dual-set.ts +82 -0
  677. package/src/utils/rad-to-deg.ts +7 -0
  678. package/src/utils/rotate.ts +17 -0
  679. package/src/utils/sleep.ts +7 -0
  680. package/src/utils/sum.ts +12 -0
  681. package/src/utils/tri-map.ts +76 -0
  682. package/src/vertex/remove-vertex.ts +22 -0
  683. package/webpack.config.cjs +38 -36
  684. package/browser/index.js +0 -33670
  685. package/node/closest-boundary-point/get-closest-boundary-point-certified.d.ts +0 -15
  686. package/node/closest-boundary-point/get-closest-boundary-point-certified.js +0 -42
  687. package/node/closest-boundary-point/get-closest-boundary-point-certified.js.map +0 -1
  688. package/node/cp-node/clone.js.map +0 -1
  689. package/node/cp-node/create-cp-node.d.ts +0 -4
  690. package/node/cp-node/create-cp-node.js +0 -8
  691. package/node/cp-node/create-cp-node.js.map +0 -1
  692. package/node/cp-node/enhance-cp-node.js.map +0 -1
  693. package/node/cp-node/get-boundary-bezier-parts-to-next.js.map +0 -1
  694. package/node/cp-node/get-boundary-beziers-to-next.d.ts +0 -8
  695. package/node/cp-node/get-boundary-beziers-to-next.js.map +0 -1
  696. package/node/cp-node/get-cp-node-ordering.js.map +0 -1
  697. package/node/cp-node/get-curve-to-next.d.ts +0 -9
  698. package/node/cp-node/get-curve-to-next.js +0 -12
  699. package/node/cp-node/get-curve-to-next.js.map +0 -1
  700. package/node/cp-node/remove.d.ts +0 -9
  701. package/node/cp-node/remove.js +0 -20
  702. package/node/cp-node/remove.js.map +0 -1
  703. package/node/cp-node/traverse-cp.d.ts +0 -12
  704. package/node/cp-node/traverse-cp.js.map +0 -1
  705. package/node/cp-node/traverse-edges.d.ts +0 -10
  706. package/node/cp-node/traverse-edges.js +0 -23
  707. package/node/cp-node/traverse-edges.js.map +0 -1
  708. package/node/cp-node/traverse-vertices.d.ts +0 -12
  709. package/node/cp-node/traverse-vertices.js +0 -29
  710. package/node/cp-node/traverse-vertices.js.map +0 -1
  711. package/node/debug/functions/draw-elem/branch.d.ts +0 -4
  712. package/node/debug/functions/draw-elem/branch.js +0 -24
  713. package/node/debug/functions/draw-elem/branch.js.map +0 -1
  714. package/node/debug/functions/draw-elem/culls.d.ts +0 -4
  715. package/node/debug/functions/draw-elem/culls.js +0 -22
  716. package/node/debug/functions/draw-elem/culls.js.map +0 -1
  717. package/node/debug/functions/draw-elem/dull-corner.js.map +0 -1
  718. package/node/debug/functions/draw-elem/leaves.d.ts +0 -4
  719. package/node/debug/functions/draw-elem/leaves.js +0 -13
  720. package/node/debug/functions/draw-elem/leaves.js.map +0 -1
  721. package/node/debug/functions/draw-elem/loop.js.map +0 -1
  722. package/node/debug/functions/draw-elem/loops.js.map +0 -1
  723. package/node/debug/functions/draw-elem/loose-bounding-box.js.map +0 -1
  724. package/node/debug/functions/draw-elem/mat.d.ts +0 -4
  725. package/node/debug/functions/draw-elem/mat.js +0 -33
  726. package/node/debug/functions/draw-elem/mat.js.map +0 -1
  727. package/node/debug/functions/draw-elem/max-vertex.js.map +0 -1
  728. package/node/debug/functions/draw-elem/min-y.js.map +0 -1
  729. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js.map +0 -1
  730. package/node/debug/functions/draw-elem/one-prong.js.map +0 -1
  731. package/node/debug/functions/draw-elem/sharp-corner.js.map +0 -1
  732. package/node/debug/functions/draw-elem/three-prong.d.ts +0 -4
  733. package/node/debug/functions/draw-elem/three-prong.js +0 -15
  734. package/node/debug/functions/draw-elem/three-prong.js.map +0 -1
  735. package/node/debug/functions/draw-elem/tight-bounding-box.js.map +0 -1
  736. package/node/debug/functions/draw-elem/two-prong.d.ts +0 -4
  737. package/node/debug/functions/draw-elem/two-prong.js +0 -36
  738. package/node/debug/functions/draw-elem/two-prong.js.map +0 -1
  739. package/node/debug/functions/draw-elem/vertex.js +0 -30
  740. package/node/debug/functions/draw-elem/vertex.js.map +0 -1
  741. package/node/debug/functions/three-prong.d.ts +0 -11
  742. package/node/debug/functions/three-prong.js +0 -182
  743. package/node/debug/functions/three-prong.js.map +0 -1
  744. package/node/debug/functions/two-prong.d.ts +0 -24
  745. package/node/debug/functions/two-prong.js +0 -116
  746. package/node/debug/functions/two-prong.js.map +0 -1
  747. package/node/debug/three-prong-for-debugging.d.ts +0 -31
  748. package/node/debug/three-prong-for-debugging.js +0 -21
  749. package/node/debug/three-prong-for-debugging.js.map +0 -1
  750. package/node/debug/two-prong-for-debugging.d.ts +0 -26
  751. package/node/debug/two-prong-for-debugging.js +0 -2
  752. package/node/debug/two-prong-for-debugging.js.map +0 -1
  753. package/node/find-2-prong/add-debug-info.d.ts +0 -8
  754. package/node/find-2-prong/add-debug-info.js +0 -23
  755. package/node/find-2-prong/add-debug-info.js.map +0 -1
  756. package/node/find-2-prong/find-and-add-2-prongs-on-all-paths.d.ts +0 -15
  757. package/node/find-2-prong/find-and-add-2-prongs-on-all-paths.js +0 -22
  758. package/node/find-2-prong/find-and-add-2-prongs-on-all-paths.js.map +0 -1
  759. package/node/find-2-prong/x-for-debugging.d.ts +0 -9
  760. package/node/find-2-prong/x-for-debugging.js +0 -2
  761. package/node/find-2-prong/x-for-debugging.js.map +0 -1
  762. package/node/find-3-prong.ts/add-3-prong.d.ts +0 -24
  763. package/node/find-3-prong.ts/add-3-prong.js +0 -82
  764. package/node/find-3-prong.ts/add-3-prong.js.map +0 -1
  765. package/node/find-3-prong.ts/find-and-add-all-3-prongs.d.ts +0 -13
  766. package/node/find-3-prong.ts/find-and-add-all-3-prongs.js +0 -66
  767. package/node/find-3-prong.ts/find-and-add-all-3-prongs.js.map +0 -1
  768. package/node/find-mat/add-debug-info.d.ts +0 -9
  769. package/node/find-mat/add-debug-info.js +0 -68
  770. package/node/find-mat/add-debug-info.js.map +0 -1
  771. package/node/find-mat/create-initial-cp-graph.js.map +0 -1
  772. package/node/find-mat/fix-ordering.d.ts +0 -8
  773. package/node/find-mat/fix-ordering.js +0 -59
  774. package/node/find-mat/fix-ordering.js.map +0 -1
  775. package/node/find-mat/get-dull-corners.js.map +0 -1
  776. package/node/find-mat/get-size-params.d.ts +0 -7
  777. package/node/find-mat/get-size-params.js +0 -33
  778. package/node/find-mat/get-size-params.js.map +0 -1
  779. package/node/get-curve/get-curve-between.d.ts +0 -9
  780. package/node/get-curve/get-curve-between.js.map +0 -1
  781. package/node/get-curve/get-edge-direction.d.ts +0 -9
  782. package/node/get-curve/get-edge-direction.js.map +0 -1
  783. package/node/mat/add-to-cp-graph.js +0 -33
  784. package/node/mat/add-to-cp-graph.js.map +0 -1
  785. package/node/mat/bezier-piece.js +0 -2
  786. package/node/mat/bezier-piece.js.map +0 -1
  787. package/node/mat/elem-type-two-prong.d.ts +0 -3
  788. package/node/mat/elem-type-two-prong.js +0 -2
  789. package/node/mat/elem-type-two-prong.js.map +0 -1
  790. package/node/mat/get-neighboring-cps.d.ts +0 -16
  791. package/node/mat/get-neighboring-cps.js +0 -33
  792. package/node/mat/get-neighboring-cps.js.map +0 -1
  793. package/node/mat/get-two-prong-type.d.ts +0 -5
  794. package/node/mat/get-two-prong-type.js +0 -9
  795. package/node/mat/get-two-prong-type.js.map +0 -1
  796. package/node/mat/is-another-cp-closeby.d.ts +0 -21
  797. package/node/mat/is-another-cp-closeby.js.map +0 -1
  798. package/node/mat/simplify-mat-map-only.d.ts +0 -23
  799. package/node/mat/simplify-mat-map-only.js +0 -82
  800. package/node/mat/simplify-mat-map-only.js.map +0 -1
  801. package/node/point-on-shape/is-pos-dull-corner.d.ts +0 -6
  802. package/node/point-on-shape/is-pos-dull-corner.js +0 -14
  803. package/node/point-on-shape/is-pos-dull-corner.js.map +0 -1
  804. package/src/cp-node/create-cp-node.ts +0 -21
  805. package/src/cp-node/get-curve-to-next.ts +0 -16
  806. package/src/cp-node/remove.ts +0 -27
  807. package/src/cp-node/traverse-edges.ts +0 -29
  808. package/src/cp-node/traverse-vertices.ts +0 -37
  809. package/src/sat/t-tree.ts +0 -8
  810. package/src/sat/traverse-spacial-tree.ts +0 -34
  811. /package/{test → __tests__}/lib-load.spec.ts +0 -0
  812. /package/node/debug/functions/draw-elem/{dull-corner.d.ts → draw-dull-corner.d.ts} +0 -0
  813. /package/node/debug/functions/draw-elem/{loop.d.ts → draw-loop.d.ts} +0 -0
  814. /package/node/debug/functions/draw-elem/{loops.d.ts → draw-loops.d.ts} +0 -0
  815. /package/node/debug/functions/draw-elem/{loose-bounding-box.d.ts → draw-loose-bounding-box.d.ts} +0 -0
  816. /package/node/debug/functions/draw-elem/{max-vertex.d.ts → draw-max-vertex.d.ts} +0 -0
  817. /package/node/debug/functions/draw-elem/{min-y.d.ts → draw-min-y.d.ts} +0 -0
  818. /package/node/debug/functions/draw-elem/{one-prong-at-dull-corner.d.ts → draw-one-prong-at-dull-corner.d.ts} +0 -0
  819. /package/node/debug/functions/draw-elem/{one-prong.d.ts → draw-one-prong.d.ts} +0 -0
  820. /package/node/debug/functions/draw-elem/{sharp-corner.d.ts → draw-sharp-corner.d.ts} +0 -0
  821. /package/node/debug/functions/draw-elem/{tight-bounding-box.d.ts → draw-tight-bounding-box.d.ts} +0 -0
  822. /package/node/find-mat/{get-dull-corners.d.ts → get-dull-corners-on-loop.d.ts} +0 -0
@@ -1,6 +1,4 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
2
1
  import { ContactPoint } from '../contact-point/contact-point.js';
3
- import { removeCpNode } from './remove.js';
4
2
  /**
5
3
  * The primary interface of the library.
6
4
  *
@@ -24,7 +22,7 @@ import { removeCpNode } from './remove.js';
24
22
  * the CpNode to the next maximal disk contact point. This is equivalent to
25
23
  * following other branches on the MAT.
26
24
  *
27
- * Call [[getCurveBetween]](cpNodeFrom, cpNodeTo) or getCurveToNext(cpNode)
25
+ * Call [[getMatCurveBetween]](cpNodeFrom, cpNodeTo) or getMatCurveToNext(cpNode)
28
26
  * (replacing the older CpNode.[[matCurveToNextVertex]]) to get a bezier curve
29
27
  * from the maximal disk of this [[CpNode]] to the next [[CpNode]]'s
30
28
  * maximal disk and thus directly representing a piece of the medial axis.
@@ -37,12 +35,12 @@ import { removeCpNode } from './remove.js';
37
35
  * be the edges [[next]] and [[nextOnCircle]], etc. [[getChildren]] allows one to
38
36
  * easily traverse the MAT tree - see e.g. the implementation of [[traverseEdges]].
39
37
  *
40
- * The getter, [[vertexChildren]], is similar to [[getChildren]] but returns the
38
+ * The getter, [[getVertexForwardChildren]], is similar to [[getChildren]] but returns the
41
39
  * child nodes of the tree when [[CpNode]] is seen as a MAT vertex point (as
42
40
  * opposed to edge). In this way the dual graph of the tree can easily be
43
41
  * traversed - see e.g. [[traverseVertices]]. Generally, however, traversing the
44
42
  * edges is preferred as it returns the entire Medial Axis (by utilizing
45
- * [[getCurveToNext]] on each returned edge).
43
+ * [[getMatCurveToNext]] on each returned edge).
46
44
  *
47
45
  * It may be worth mentioning that by traversing from the CpNode by following
48
46
  * [[next]] repeatedly until one is back at the same CpNode allows one
@@ -70,127 +68,23 @@ interface CpNode {
70
68
  * the inscribed circle defined by the maximal disk).
71
69
  */
72
70
  nextOnCircle: CpNode;
71
+ /**
72
+ * For hole closers only - the next `CpNode` ignoring the hole closer
73
+ */
74
+ holeCloserNext?: CpNode | undefined;
75
+ /**
76
+ * For hole closers only - the prev `CpNode` ignoring the hole closer
77
+ */
78
+ holeCloserPrev?: CpNode | undefined;
79
+ /** Only used in export */
80
+ id?: number;
81
+ /** Only used in export */
82
+ children?: number[];
83
+ /** Only used in export */
84
+ isRoot?: boolean;
85
+ /** Only used in export */
86
+ parentId?: number;
87
+ /** Only used in export */
88
+ childId?: number;
73
89
  }
74
- /**
75
- * Returns the bezier curve from the maximal disk of this [[CpNode]] to the
76
- * next [[CpNode]]'s maximal disk and thus directly represents a piece of the
77
- * medial axis.
78
- * @deprecated Use [[getCurveToNext]] instead
79
- * @param cpNode
80
- */
81
- declare function matCurveToNextVertex(cpNode: CpNode): number[][];
82
- /**
83
- * Primarily for internal use.
84
- *
85
- * Compares the order of two [[CpNode]]s. The order is cyclic and depends
86
- * on a [[CpNode]]'s relative position along the shape boundary.
87
- */
88
- declare const cpNodeComparator: (a: CpNode, b: CpNode) => number;
89
- /**
90
- * Returns the children of this [[CpNode]] when seen as a MAT edge. Only
91
- * children in a 'forward' direction are returned. These include all edges
92
- * except the 'backward' edge given by [[prevOnCircle]], even terminating
93
- * edges.
94
- */
95
- declare function getChildren(cpNode: CpNode): CpNode[];
96
- /**
97
- * Similar to [[getChildren]] but returns the child nodes of the tree when
98
- * [[CpNode]] is seen as a MAT vertex point (as opposed to edge). In this
99
- * way the dual graph of the tree can easily be traversed - see e.g.
100
- * [[traverseVertices]]. Generally, however, traversing the edges is
101
- * preferred as it returns the entire Medial Axis (by utilizing
102
- * [[getCurveToNext]] on each returned edge).
103
- */
104
- declare function vertexChildren(cpNode: CpNode): CpNode[];
105
- /**
106
- * Returns all [[CpNode]]s on the MAT that this [[CpNode]] is part of
107
- * starting from the current one and going anti-clockwise around the shape.
108
- */
109
- declare function getAllOnLoop(cpNode: CpNode): CpNode[];
110
- /**
111
- * Primarily for internal use.
112
- *
113
- * Insert a [[CpNode]] into the MAT tree graph after the specified point
114
- * and returns the freshly inserted [[CpNode]].
115
- * @param isHoleClosing True if this is a hole closing contact point.
116
- * @param isIntersection True if this is a contact point at a shape boundary
117
- * intersection point.
118
- * @param cpTree The tree graph holding the [[CpNodes]] of the MAT.
119
- * @param cp [[ContactPoint]] defining the [[CpNode]].
120
- * @param prev_ Inserts the new [[CpNode]] right after this item if the
121
- * loop is not empty, else insert the new [[CpNode]] as the only item in the
122
- * loop.
123
- */
124
- declare function insertCpNode(isHoleClosing: boolean, isIntersection: boolean, cpTree: LlRbTree<CpNode>, cp: ContactPoint, prev_: CpNode): CpNode;
125
- /**
126
- * Return this (except if exclThis is truthy) and the the other CpNodes
127
- * around the maximal disk vertex circle in an anti-clockwise order.
128
- * @param exclThis If true the returned array does not include this
129
- * [[CpNode]].
130
- */
131
- declare function getCpNodesOnCircle(cpNode: CpNode, exclThis?: boolean): CpNode[];
132
- /**
133
- * Returns true if the 2 given [[CpNode]]s are on the same maximal disk
134
- * circle.
135
- * @param cpNode1 A [[CpNode]].
136
- * @param cpNode2 Another [[CpNode]]
137
- */
138
- declare function isOnSameCircle(cpNode1: CpNode, cpNode2: CpNode): boolean;
139
- /**
140
- * Returns true if this [[CpNode]] is terminating, i.e. implies a leaf MAT
141
- * vertex.
142
- *
143
- * This is always the case for sharp corners and maximal disks with
144
- * a single contact point. Note, however, that even in these cases there are
145
- * two contact points stored (sitting 'on top' of each other) for the
146
- * maximal disk. It can be seen as a limiting case of a two-prong where the
147
- * distance between two of the contact points tend to zero. One point
148
- * (represented by a [[CpNode]] of course) will be terminating with the
149
- * other point being its [[next]], whereas the other point will *not* be
150
- * terminating and 'points' back into the shape.
151
- */
152
- declare function isTerminating(cpNode: CpNode): boolean;
153
- /**
154
- * Like isTerminating() but only returns true if all cpNodes on the circle
155
- * (except this.prevOnCircle) is terminating.
156
- */
157
- declare function isFullyTerminating(cpNode: CpNode): boolean;
158
- /**
159
- * Returns the first [[CpNode]] (from this one by successively applying
160
- * .nextOnCircle) that exits the circle.
161
- */
162
- declare function getFirstExit(cpNode: CpNode): CpNode | undefined;
163
- /**
164
- * Returns true if this [[CpNode]] represents a sharp corner, i.e. the
165
- * limiting case of a two-prong having zero radius.
166
- *
167
- * Note that two [[CpNode]]s are stored for each sharp corner, one being
168
- * terminating and one not. See [[isTerminating]] for more details.
169
- */
170
- declare function isSharp(cpNode: CpNode): boolean;
171
- /**
172
- * Returns the number of contact points on the maximal disk circle implied
173
- * by this [[CpNode]].
174
- *
175
- * Note, however, that even one-prongs and sharp corners will return 2 (see
176
- * [[isTerminating]] for more details); if this is not desired use
177
- * [[getRealProngCount]] instead which will return 1 in these cases.
178
- */
179
- declare function getProngCount(cpNode: CpNode): number;
180
- /**
181
- * Returns the number of contact points (up to planar coordinates) on the
182
- * maximal disk circle implied by this [[CpNode]].
183
- *
184
- * See also [[getProngCount]].
185
- */
186
- declare function getRealProngCount(cpNode: CpNode): number;
187
- /**
188
- * Returns true if this [[CpNode]]'s maximal disk has only one contact point
189
- * on the shape boundary (up to planar coordinates). These includes sharp
190
- * corners.
191
- *
192
- * Note, however, that two [[CpNode]]s are stored for each such point to
193
- * preserve symmetry - see [[isTerminating]] for more details.
194
- */
195
- declare function isOneProng(cpNode: CpNode): boolean;
196
- export { CpNode, matCurveToNextVertex, getChildren, vertexChildren, getAllOnLoop, insertCpNode, getCpNodesOnCircle, isOnSameCircle, isTerminating, isFullyTerminating, getFirstExit, isSharp, isOneProng, getProngCount, getRealProngCount, cpNodeComparator, removeCpNode };
90
+ export { CpNode };
@@ -1,249 +1,2 @@
1
- import { compareCps } from '../contact-point/contact-point.js';
2
- import { removeCpNode } from './remove.js';
3
- import { getCurveToNext } from './get-curve-to-next.js';
4
- import { createCpNode } from './create-cp-node.js';
5
- /**
6
- * Returns the bezier curve from the maximal disk of this [[CpNode]] to the
7
- * next [[CpNode]]'s maximal disk and thus directly represents a piece of the
8
- * medial axis.
9
- * @deprecated Use [[getCurveToNext]] instead
10
- * @param cpNode
11
- */
12
- function matCurveToNextVertex(cpNode) {
13
- return getCurveToNext(cpNode);
14
- }
15
- /**
16
- * Primarily for internal use.
17
- *
18
- * Compares the order of two [[CpNode]]s. The order is cyclic and depends
19
- * on a [[CpNode]]'s relative position along the shape boundary.
20
- */
21
- const cpNodeComparator = (a, b) => compareCps(a.cp, b.cp);
22
- /**
23
- * Returns the children of this [[CpNode]] when seen as a MAT edge. Only
24
- * children in a 'forward' direction are returned. These include all edges
25
- * except the 'backward' edge given by [[prevOnCircle]], even terminating
26
- * edges.
27
- */
28
- function getChildren(cpNode) {
29
- const children = [];
30
- const cp = cpNode.next;
31
- let cp_ = cp;
32
- do {
33
- children.push(cp_);
34
- cp_ = cp_.nextOnCircle;
35
- } while (cp_.nextOnCircle !== cp);
36
- return children;
37
- }
38
- /**
39
- * Similar to [[getChildren]] but returns the child nodes of the tree when
40
- * [[CpNode]] is seen as a MAT vertex point (as opposed to edge). In this
41
- * way the dual graph of the tree can easily be traversed - see e.g.
42
- * [[traverseVertices]]. Generally, however, traversing the edges is
43
- * preferred as it returns the entire Medial Axis (by utilizing
44
- * [[getCurveToNext]] on each returned edge).
45
- */
46
- function vertexChildren(cpNode) {
47
- if (isTerminating(cpNode)) {
48
- return [];
49
- }
50
- const children = [];
51
- let cp_ = cpNode;
52
- while (cp_ !== cpNode.prevOnCircle) {
53
- if (!isTerminating(cp_)) {
54
- children.push(cp_.next);
55
- }
56
- cp_ = cp_.nextOnCircle;
57
- }
58
- return children;
59
- }
60
- /**
61
- * Returns all [[CpNode]]s on the MAT that this [[CpNode]] is part of
62
- * starting from the current one and going anti-clockwise around the shape.
63
- */
64
- function getAllOnLoop(cpNode) {
65
- const cpStart = cpNode;
66
- const cpNodes = [cpStart];
67
- let cpNode_ = cpNode.next;
68
- while (cpNode_ !== cpStart) {
69
- cpNodes.push(cpNode_);
70
- cpNode_ = cpNode_.next;
71
- }
72
- return cpNodes;
73
- }
74
- /**
75
- * Primarily for internal use.
76
- *
77
- * Insert a [[CpNode]] into the MAT tree graph after the specified point
78
- * and returns the freshly inserted [[CpNode]].
79
- * @param isHoleClosing True if this is a hole closing contact point.
80
- * @param isIntersection True if this is a contact point at a shape boundary
81
- * intersection point.
82
- * @param cpTree The tree graph holding the [[CpNodes]] of the MAT.
83
- * @param cp [[ContactPoint]] defining the [[CpNode]].
84
- * @param prev_ Inserts the new [[CpNode]] right after this item if the
85
- * loop is not empty, else insert the new [[CpNode]] as the only item in the
86
- * loop.
87
- */
88
- function insertCpNode(isHoleClosing, isIntersection, cpTree, cp, prev_) {
89
- // const cpNode = new CpNode(cp, isHoleClosing, isIntersection);
90
- const cpNode = createCpNode(cp, isHoleClosing, isIntersection);
91
- if (typeof _debug_ !== 'undefined') {
92
- _debug_.generated.elems.cpNode.push({
93
- generated: _debug_.generated,
94
- cpNode
95
- });
96
- }
97
- let prev;
98
- let next;
99
- if (!prev_) {
100
- prev = cpNode;
101
- next = cpNode;
102
- }
103
- else {
104
- prev = prev_;
105
- next = prev.next;
106
- }
107
- next.prev = cpNode;
108
- prev.next = cpNode;
109
- cpNode.prev = prev;
110
- cpNode.next = next;
111
- cpTree.insert(cpNode);
112
- return cpNode;
113
- }
114
- /**
115
- * Return this (except if exclThis is truthy) and the the other CpNodes
116
- * around the maximal disk vertex circle in an anti-clockwise order.
117
- * @param exclThis If true the returned array does not include this
118
- * [[CpNode]].
119
- */
120
- function getCpNodesOnCircle(cpNode, exclThis = false) {
121
- // const startCp = this as CpNode;
122
- const startCpNode = cpNode;
123
- let cpNode_ = startCpNode;
124
- const cpNodes = [];
125
- do {
126
- if (exclThis) {
127
- exclThis = false;
128
- }
129
- else {
130
- cpNodes.push(cpNode_);
131
- }
132
- cpNode_ = cpNode_.nextOnCircle;
133
- } while (cpNode_ !== startCpNode);
134
- return cpNodes;
135
- }
136
- /**
137
- * Returns true if the 2 given [[CpNode]]s are on the same maximal disk
138
- * circle.
139
- * @param cpNode1 A [[CpNode]].
140
- * @param cpNode2 Another [[CpNode]]
141
- */
142
- function isOnSameCircle(cpNode1, cpNode2) {
143
- const cpNodes = getCpNodesOnCircle(cpNode1, true);
144
- return cpNodes.indexOf(cpNode2) >= 0;
145
- }
146
- /**
147
- * Returns true if this [[CpNode]] is terminating, i.e. implies a leaf MAT
148
- * vertex.
149
- *
150
- * This is always the case for sharp corners and maximal disks with
151
- * a single contact point. Note, however, that even in these cases there are
152
- * two contact points stored (sitting 'on top' of each other) for the
153
- * maximal disk. It can be seen as a limiting case of a two-prong where the
154
- * distance between two of the contact points tend to zero. One point
155
- * (represented by a [[CpNode]] of course) will be terminating with the
156
- * other point being its [[next]], whereas the other point will *not* be
157
- * terminating and 'points' back into the shape.
158
- */
159
- function isTerminating(cpNode) {
160
- // return this === this.next.prevOnCircle;
161
- return cpNode === cpNode.next.prevOnCircle;
162
- }
163
- /**
164
- * Like isTerminating() but only returns true if all cpNodes on the circle
165
- * (except this.prevOnCircle) is terminating.
166
- */
167
- function isFullyTerminating(cpNode) {
168
- const otherOnCircle = getCpNodesOnCircle(cpNode.prevOnCircle, true);
169
- const isFullyTerminating = otherOnCircle.every(cpn => isTerminating(cpn));
170
- return isFullyTerminating;
171
- }
172
- /**
173
- * Returns the first [[CpNode]] (from this one by successively applying
174
- * .nextOnCircle) that exits the circle.
175
- */
176
- function getFirstExit(cpNode) {
177
- // const startNode = this as CpNode;
178
- const startNode = cpNode;
179
- let cpNode_ = startNode;
180
- while (cpNode_.next === cpNode_.prevOnCircle) {
181
- cpNode_ = cpNode_.next;
182
- if (cpNode_ === startNode) {
183
- // The very special case the MAT is a single point.
184
- return undefined;
185
- }
186
- }
187
- return cpNode_;
188
- }
189
- /**
190
- * Returns true if this [[CpNode]] represents a sharp corner, i.e. the
191
- * limiting case of a two-prong having zero radius.
192
- *
193
- * Note that two [[CpNode]]s are stored for each sharp corner, one being
194
- * terminating and one not. See [[isTerminating]] for more details.
195
- */
196
- function isSharp(cpNode) {
197
- return cpNode.cp.circle.radius === 0;
198
- }
199
- /**
200
- * Returns the number of contact points on the maximal disk circle implied
201
- * by this [[CpNode]].
202
- *
203
- * Note, however, that even one-prongs and sharp corners will return 2 (see
204
- * [[isTerminating]] for more details); if this is not desired use
205
- * [[getRealProngCount]] instead which will return 1 in these cases.
206
- */
207
- function getProngCount(cpNode) {
208
- // const startCp = this as CpNode;
209
- const startCpNode = cpNode;
210
- let cpNode_ = startCpNode;
211
- let i = 0;
212
- do {
213
- i++;
214
- cpNode_ = cpNode_.nextOnCircle;
215
- } while (cpNode_ !== startCpNode);
216
- return i;
217
- }
218
- /**
219
- * Returns the number of contact points (up to planar coordinates) on the
220
- * maximal disk circle implied by this [[CpNode]].
221
- *
222
- * See also [[getProngCount]].
223
- */
224
- function getRealProngCount(cpNode) {
225
- if (isOneProng(cpNode)) {
226
- return 1;
227
- }
228
- return getProngCount(cpNode);
229
- }
230
- /**
231
- * Returns true if this [[CpNode]]'s maximal disk has only one contact point
232
- * on the shape boundary (up to planar coordinates). These includes sharp
233
- * corners.
234
- *
235
- * Note, however, that two [[CpNode]]s are stored for each such point to
236
- * preserve symmetry - see [[isTerminating]] for more details.
237
- */
238
- function isOneProng(cpNode) {
239
- const cp1 = cpNode;
240
- if (cp1.cp.circle.radius === 0) {
241
- return true;
242
- }
243
- const cp2 = cp1.nextOnCircle;
244
- const p1 = cp1.cp.pointOnShape.p;
245
- const p2 = cp2.cp.pointOnShape.p;
246
- return (p1[0] === p2[0] && p1[1] === p2[1]);
247
- }
248
- export { matCurveToNextVertex, getChildren, vertexChildren, getAllOnLoop, insertCpNode, getCpNodesOnCircle, isOnSameCircle, isTerminating, isFullyTerminating, getFirstExit, isSharp, isOneProng, getProngCount, getRealProngCount, cpNodeComparator, removeCpNode };
1
+ export {};
249
2
  //# sourceMappingURL=cp-node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cp-node.js","sourceRoot":"","sources":["../../src/cp-node/cp-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cp-node.js","sourceRoot":"","sources":["../../src/cp-node/cp-node.ts"],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
- import { CpNode } from "./cp-node.js";
1
+ import { CpNode } from "../cp-node.js";
2
2
  /**
3
3
  * Returns a deep clone of this [[CpNode]]. Can be used to copy the MAT
4
4
  * since cloning a single [[CpNode]] necessarily implies cloning all
@@ -1,4 +1,3 @@
1
- import { createCpNode } from "./create-cp-node.js";
2
1
  /** @internal */
3
2
  const EDGES = ['prev', 'next', 'prevOnCircle', 'nextOnCircle'];
4
3
  /**
@@ -10,8 +9,7 @@ function clone(cpNode) {
10
9
  // Don't change this function to be recursive, the call stack may
11
10
  // overflow if there are too many CpNodes.
12
11
  const nodeMap = new Map();
13
- // const newCpNode = new CpNode(cpNode.cp, cpNode.isHoleClosing, cpNode.isIntersection);
14
- const newCpNode = createCpNode(cpNode.cp, cpNode.isHoleClosing, cpNode.isIntersection);
12
+ const newCpNode = cloneWithoutLinks(cpNode);
15
13
  nodeMap.set(cpNode, newCpNode);
16
14
  const cpStack = [{ cpNode, newCpNode }];
17
15
  while (cpStack.length) {
@@ -20,8 +18,7 @@ function clone(cpNode) {
20
18
  const node = cpNode[edge];
21
19
  let newNode = nodeMap.get(node);
22
20
  if (!newNode) {
23
- // newNode = new CpNode(node.cp, node.isHoleClosing, node.isIntersection);
24
- newNode = createCpNode(node.cp, node.isHoleClosing, node.isIntersection);
21
+ newNode = cloneWithoutLinks(node);
25
22
  nodeMap.set(node, newNode);
26
23
  cpStack.push({ cpNode: node, newCpNode: newNode });
27
24
  }
@@ -30,5 +27,17 @@ function clone(cpNode) {
30
27
  }
31
28
  return newCpNode;
32
29
  }
30
+ function cloneWithoutLinks(cpNode) {
31
+ const newNode = {
32
+ ...cpNode,
33
+ ...{
34
+ prev: undefined,
35
+ next: undefined,
36
+ prevOnCircle: undefined,
37
+ nextOnCircle: undefined
38
+ }
39
+ };
40
+ return newNode;
41
+ }
33
42
  export { clone };
34
43
  //# sourceMappingURL=clone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/cp-node/fs/clone.ts"],"names":[],"mappings":"AAUA,gBAAgB;AAChB,MAAM,KAAK,GAAW,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAOvE;;;;GAIG;AACH,SAAS,KAAK,CAAC,MAAc;IACzB,kEAAkE;IAClE,0CAA0C;IAE1C,MAAM,OAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;IAE3D,MAAM,SAAS,GAAuB,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAG,CAAC;QAE7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAElC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;YACA,SAAoB,CAAC,IAAI,CAAC,GAAG,OAAiB,CAAC;QACpD,CAAC;IACL,CAAC;IAED,OAAO,SAAmB,CAAC;AAC/B,CAAC;AAGD,SAAS,iBAAiB,CAAC,MAAc;IACrC,MAAM,OAAO,GAAG;QACZ,GAAG,MAAM;QACT,GAAG;YACC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,SAAS;SAC1B;KACJ,CAAC;IAEF,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { CpNode } from "../cp-node.js";
2
+ declare function cpNodesToBoundaryBeziers(cpNodes: CpNode[]): number[][][];
3
+ export { cpNodesToBoundaryBeziers };
@@ -0,0 +1,6 @@
1
+ import { getBoundaryBeziersToNext } from "./get-boundary-beziers-to-next.js";
2
+ function cpNodesToBoundaryBeziers(cpNodes) {
3
+ return cpNodes.flatMap(getBoundaryBeziersToNext);
4
+ }
5
+ export { cpNodesToBoundaryBeziers };
6
+ //# sourceMappingURL=cp-nodes-to-boundary-beziers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cp-nodes-to-boundary-beziers.js","sourceRoot":"","sources":["../../../src/cp-node/fs/cp-nodes-to-boundary-beziers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAG7E,SAAS,wBAAwB,CAAC,OAAiB;IAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAA;AACpD,CAAC;AAGD,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
@@ -1,5 +1,8 @@
1
- import { CpNode } from "./cp-node.js";
1
+ import { CpNode } from "../cp-node.js";
2
2
  declare function enhanceCpNode(cpNode: CpNode): {
3
+ pos: import("../../index.js").PointOnShape;
4
+ p: number[];
5
+ t: number;
3
6
  isTerminating: boolean;
4
7
  isFullyTerminating: boolean;
5
8
  isSharp: boolean;
@@ -11,14 +14,21 @@ declare function enhanceCpNode(cpNode: CpNode): {
11
14
  order: number;
12
15
  order2: number;
13
16
  };
14
- curve: import("../curve/curve.js").Curve;
15
- loop: import("flo-boolean/node/loop/loop.js").Loop;
16
- cp: import("../contact-point/contact-point.js").ContactPoint;
17
+ curve: import("../../index.js").Curve;
18
+ loop: import("flo-boolean").Loop;
19
+ cp: import("../../index.js").ContactPoint;
17
20
  isHoleClosing: boolean;
18
21
  isIntersection: boolean;
19
22
  prev: CpNode;
20
23
  next: CpNode;
21
24
  prevOnCircle: CpNode;
22
25
  nextOnCircle: CpNode;
26
+ holeCloserNext?: CpNode | undefined;
27
+ holeCloserPrev?: CpNode | undefined;
28
+ id?: number;
29
+ children?: number[];
30
+ isRoot?: boolean;
31
+ parentId?: number;
32
+ childId?: number;
23
33
  };
24
34
  export { enhanceCpNode };
@@ -1,11 +1,18 @@
1
- import { getProngCount, getRealProngCount, isFullyTerminating, isSharp, isTerminating } from "./cp-node.js";
2
1
  import { getCpNodeOrdering } from './get-cp-node-ordering.js';
2
+ import { getProngCount } from './get-prong-count.js';
3
+ import { getRealProngCount } from "./get-real-prong-count.js";
4
+ import { isFullyTerminating } from "./is-fully-terminating.js";
5
+ import { isSharp } from "./is-sharp.js";
6
+ import { isTerminating } from "./is-terminating.js";
3
7
  function enhanceCpNode(cpNode) {
4
8
  const cp = cpNode.cp;
5
9
  const pos = cp.pointOnShape;
6
10
  const curve = pos.curve;
7
11
  return {
8
12
  ...cpNode,
13
+ pos: cpNode.cp.pointOnShape,
14
+ p: cpNode.cp.pointOnShape.p,
15
+ t: cpNode.cp.pointOnShape.t,
9
16
  isTerminating: isTerminating(cpNode),
10
17
  isFullyTerminating: isFullyTerminating(cpNode),
11
18
  isSharp: isSharp(cpNode),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhance-cp-node.js","sourceRoot":"","sources":["../../../src/cp-node/fs/enhance-cp-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,SAAS,aAAa,CAAC,MAAc;IACjC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC;IAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IAExB,OAAO;QACH,GAAG,MAAM;QACT,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,YAAY;QAC3B,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAC3B,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC;QACpC,kBAAkB,EAAE,kBAAkB,CAAC,MAAM,CAAC;QAC9C,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC;QACxB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC;QACjC,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,CAAC;QAC5C,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC;QACnC,KAAK;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;KACnB,CAAA;AACL,CAAC;AAGD,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { CpNode } from "../cp-node.js";
2
+ declare function findFirst(f: (cpNode: CpNode) => CpNode | undefined, cpNode: CpNode): CpNode | undefined;
3
+ export { findFirst };
@@ -0,0 +1,16 @@
1
+ function findFirst(f, cpNode) {
2
+ const cpStart = cpNode;
3
+ if (f(cpStart)) {
4
+ return cpStart;
5
+ }
6
+ let cpNode_ = cpNode.next;
7
+ while (cpNode_ !== cpStart) {
8
+ if (f(cpNode_)) {
9
+ return cpNode_;
10
+ }
11
+ cpNode_ = cpNode_.next;
12
+ }
13
+ return undefined;
14
+ }
15
+ export { findFirst };
16
+ //# sourceMappingURL=find-first.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-first.js","sourceRoot":"","sources":["../../../src/cp-node/fs/find-first.ts"],"names":[],"mappings":"AAIA,SAAS,SAAS,CACV,CAAyC,EACzC,MAAc;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC;IAEvB,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAAC,OAAO,OAAO,CAAC;IAAC,CAAC;IAEtC,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,OAAO,OAAO,KAAK,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACP,OAAO,OAAO,CAAC;QACnB,CAAC;QACP,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { CpNode } from "../cp-node.js";
2
+ /**
3
+ * Returns all `CpNode`s between the two given ones (exclisive the last one).
4
+ *
5
+ * * If the second `CpNode` is never encountered all on the loop will be
6
+ * returned.
7
+ *
8
+ * @param cpNodeS
9
+ * @param cpNodeE
10
+ * @param inclAllIfEqual if `true` and first and last `CpNode`s are equal then
11
+ * include all `CpNode`s around the loop, otherwise include none.
12
+ */
13
+ declare function getAllBetween(cpNodeS: CpNode, cpNodeE: CpNode, inclAllIfEqual?: boolean): {
14
+ cpNodes: CpNode[];
15
+ hasHoleCloser: boolean;
16
+ };
17
+ export { getAllBetween };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Returns all `CpNode`s between the two given ones (exclisive the last one).
3
+ *
4
+ * * If the second `CpNode` is never encountered all on the loop will be
5
+ * returned.
6
+ *
7
+ * @param cpNodeS
8
+ * @param cpNodeE
9
+ * @param inclAllIfEqual if `true` and first and last `CpNode`s are equal then
10
+ * include all `CpNode`s around the loop, otherwise include none.
11
+ */
12
+ function getAllBetween(cpNodeS, cpNodeE, inclAllIfEqual = true) {
13
+ if (!inclAllIfEqual && cpNodeS === cpNodeE) {
14
+ return { cpNodes: [], hasHoleCloser: false };
15
+ }
16
+ const cpStart = cpNodeS;
17
+ const cpNodes = [cpStart];
18
+ let cpNode_ = cpNodeS.next;
19
+ let hasHoleCloser = cpStart.isHoleClosing;
20
+ while (cpNode_ !== cpNodeE &&
21
+ cpNode_ !== cpStart) {
22
+ if (cpNode_.isHoleClosing) {
23
+ hasHoleCloser = true;
24
+ }
25
+ cpNodes.push(cpNode_);
26
+ cpNode_ = cpNode_.next;
27
+ }
28
+ return { cpNodes, hasHoleCloser };
29
+ }
30
+ export { getAllBetween };
31
+ //# sourceMappingURL=get-all-between.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-all-between.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-all-between.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,SAAS,aAAa,CACpB,OAAe,EACf,OAAe,EACf,cAAc,GAAG,IAAI;IAEtB,IAAI,CAAC,cAAc,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAA;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC;IACxB,MAAM,OAAO,GAAa,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAE1C,OAAO,OAAO,KAAK,OAAO;QACtB,OAAO,KAAK,OAAO,EAAE,CAAC;QAEzB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3B,aAAa,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AACnC,CAAC;AAGD,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { CpNode } from "../cp-node.js";
2
+ declare function getAllOnCircle(cpNode: CpNode, exclThis?: boolean): CpNode[];
3
+ export { getAllOnCircle };
@@ -0,0 +1,14 @@
1
+ function getAllOnCircle(cpNode, exclThis = false) {
2
+ const startCpNode = cpNode;
3
+ let cpNode_ = startCpNode;
4
+ const cpNodes = [];
5
+ do {
6
+ if (!(exclThis && cpNode_ === startCpNode)) {
7
+ cpNodes.push(cpNode_);
8
+ }
9
+ cpNode_ = cpNode_.nextOnCircle;
10
+ } while (cpNode_ !== startCpNode);
11
+ return cpNodes;
12
+ }
13
+ export { getAllOnCircle };
14
+ //# sourceMappingURL=get-all-on-circle.js.map