flo-mat 2.0.1 → 2.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 (405) hide show
  1. package/.eslintrc.cjs +69 -0
  2. package/README.md +9 -27
  3. package/browser/index.js +29604 -7008
  4. package/browser/index.min.js +1 -2
  5. package/node/circle.d.ts +20 -20
  6. package/node/circle.js +31 -31
  7. package/node/circle.js.map +1 -1
  8. package/node/compare-curvatures-at-interface.d.ts +19 -19
  9. package/node/compare-curvatures-at-interface.js +124 -124
  10. package/node/compare-curvatures-at-interface.js.map +1 -1
  11. package/node/contact-point.d.ts +26 -26
  12. package/node/contact-point.js +25 -25
  13. package/node/cp-node/clone.d.ts +8 -8
  14. package/node/cp-node/clone.js +31 -31
  15. package/node/cp-node/clone.js.map +1 -1
  16. package/node/cp-node/remove.d.ts +9 -9
  17. package/node/cp-node/remove.js +19 -19
  18. package/node/cp-node/remove.js.map +1 -1
  19. package/node/cp-node.d.ts +202 -202
  20. package/node/cp-node.js +320 -320
  21. package/node/cp-node.js.map +1 -1
  22. package/node/curve.d.ts +46 -46
  23. package/node/curve.js +88 -88
  24. package/node/curve.js.map +1 -1
  25. package/node/debug/cp-node-for-debugging.d.ts +11 -11
  26. package/node/debug/cp-node-for-debugging.js +1 -1
  27. package/node/debug/debug-elem-types.d.ts +32 -32
  28. package/node/debug/debug-elem-types.js +1 -1
  29. package/node/debug/debug.d.ts +50 -50
  30. package/node/debug/debug.js +75 -75
  31. package/node/debug/functions/draw-elem/bounding-hull.d.ts +3 -3
  32. package/node/debug/functions/draw-elem/bounding-hull.js +7 -7
  33. package/node/debug/functions/draw-elem/bounding-hull.js.map +1 -1
  34. package/node/debug/functions/draw-elem/branch.d.ts +4 -4
  35. package/node/debug/functions/draw-elem/branch.js +22 -22
  36. package/node/debug/functions/draw-elem/branch.js.map +1 -1
  37. package/node/debug/functions/draw-elem/culls.d.ts +4 -4
  38. package/node/debug/functions/draw-elem/culls.js +21 -21
  39. package/node/debug/functions/draw-elem/culls.js.map +1 -1
  40. package/node/debug/functions/draw-elem/draw-circle-percent.d.ts +3 -3
  41. package/node/debug/functions/draw-elem/draw-circle-percent.js +12 -12
  42. package/node/debug/functions/draw-elem/draw-circle-percent.js.map +1 -1
  43. package/node/debug/functions/draw-elem/draw-elem.d.ts +8 -8
  44. package/node/debug/functions/draw-elem/draw-elem.js +45 -45
  45. package/node/debug/functions/draw-elem/draw-elem.js.map +1 -1
  46. package/node/debug/functions/draw-elem/dull-corner.d.ts +4 -4
  47. package/node/debug/functions/draw-elem/dull-corner.js +10 -10
  48. package/node/debug/functions/draw-elem/dull-corner.js.map +1 -1
  49. package/node/debug/functions/draw-elem/leaves.d.ts +4 -4
  50. package/node/debug/functions/draw-elem/leaves.js +12 -12
  51. package/node/debug/functions/draw-elem/leaves.js.map +1 -1
  52. package/node/debug/functions/draw-elem/loop.d.ts +4 -4
  53. package/node/debug/functions/draw-elem/loop.js +11 -11
  54. package/node/debug/functions/draw-elem/loops.d.ts +4 -4
  55. package/node/debug/functions/draw-elem/loops.js +6 -6
  56. package/node/debug/functions/draw-elem/loose-bounding-box.d.ts +3 -3
  57. package/node/debug/functions/draw-elem/loose-bounding-box.js +9 -9
  58. package/node/debug/functions/draw-elem/loose-bounding-box.js.map +1 -1
  59. package/node/debug/functions/draw-elem/mat.d.ts +4 -4
  60. package/node/debug/functions/draw-elem/mat.js +30 -30
  61. package/node/debug/functions/draw-elem/mat.js.map +1 -1
  62. package/node/debug/functions/draw-elem/max-vertex.d.ts +4 -4
  63. package/node/debug/functions/draw-elem/max-vertex.js +8 -8
  64. package/node/debug/functions/draw-elem/max-vertex.js.map +1 -1
  65. package/node/debug/functions/draw-elem/min-y.d.ts +4 -4
  66. package/node/debug/functions/draw-elem/min-y.js +13 -13
  67. package/node/debug/functions/draw-elem/min-y.js.map +1 -1
  68. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.d.ts +4 -4
  69. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js +12 -12
  70. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js.map +1 -1
  71. package/node/debug/functions/draw-elem/one-prong.d.ts +4 -4
  72. package/node/debug/functions/draw-elem/one-prong.js +16 -16
  73. package/node/debug/functions/draw-elem/one-prong.js.map +1 -1
  74. package/node/debug/functions/draw-elem/sharp-corner.d.ts +4 -4
  75. package/node/debug/functions/draw-elem/sharp-corner.js +9 -9
  76. package/node/debug/functions/draw-elem/sharp-corner.js.map +1 -1
  77. package/node/debug/functions/draw-elem/three-prong.d.ts +4 -4
  78. package/node/debug/functions/draw-elem/three-prong.js +16 -16
  79. package/node/debug/functions/draw-elem/three-prong.js.map +1 -1
  80. package/node/debug/functions/draw-elem/tight-bounding-box.d.ts +3 -3
  81. package/node/debug/functions/draw-elem/tight-bounding-box.js +7 -7
  82. package/node/debug/functions/draw-elem/tight-bounding-box.js.map +1 -1
  83. package/node/debug/functions/draw-elem/two-prong.d.ts +4 -4
  84. package/node/debug/functions/draw-elem/two-prong.js +36 -36
  85. package/node/debug/functions/draw-elem/two-prong.js.map +1 -1
  86. package/node/debug/functions/draw-elem/vertex.d.ts +4 -4
  87. package/node/debug/functions/draw-elem/vertex.js +27 -27
  88. package/node/debug/functions/draw-elem/vertex.js.map +1 -1
  89. package/node/debug/functions/general.d.ts +48 -48
  90. package/node/debug/functions/general.js +52 -52
  91. package/node/debug/functions/general.js.map +1 -1
  92. package/node/debug/functions/three-prong.d.ts +11 -11
  93. package/node/debug/functions/three-prong.js +184 -184
  94. package/node/debug/functions/three-prong.js.map +1 -1
  95. package/node/debug/functions/two-prong.d.ts +13 -13
  96. package/node/debug/functions/two-prong.js +117 -117
  97. package/node/debug/functions/two-prong.js.map +1 -1
  98. package/node/debug/three-prong-for-debugging.d.ts +31 -31
  99. package/node/debug/three-prong-for-debugging.js +20 -20
  100. package/node/debug/two-prong-for-debugging.d.ts +26 -26
  101. package/node/debug/two-prong-for-debugging.js +1 -1
  102. package/node/find-mats.d.ts +26 -26
  103. package/node/find-mats.js +122 -125
  104. package/node/find-mats.js.map +1 -1
  105. package/node/get-boundary-bezier-parts-to-next.d.ts +9 -9
  106. package/node/get-boundary-bezier-parts-to-next.js +42 -42
  107. package/node/get-boundary-bezier-parts-to-next.js.map +1 -1
  108. package/node/get-boundary-beziers-to-next.d.ts +8 -8
  109. package/node/get-boundary-beziers-to-next.js +44 -44
  110. package/node/get-boundary-beziers-to-next.js.map +1 -1
  111. package/node/get-bounding-box-.d.ts +2 -2
  112. package/node/get-bounding-box-.js +4 -4
  113. package/node/get-branches.d.ts +12 -12
  114. package/node/get-branches.js +68 -68
  115. package/node/get-branches.js.map +1 -1
  116. package/node/get-curve/get-curve-between.d.ts +9 -9
  117. package/node/get-curve/get-curve-between.js +56 -56
  118. package/node/get-curve/get-curve-between.js.map +1 -1
  119. package/node/get-curve/get-edge-direction.d.ts +9 -9
  120. package/node/get-curve/get-edge-direction.js +53 -53
  121. package/node/get-curve/get-edge-direction.js.map +1 -1
  122. package/node/get-curve-to-next.d.ts +9 -9
  123. package/node/get-curve-to-next.js +11 -11
  124. package/node/get-interface-ccw.d.ts +24 -24
  125. package/node/get-interface-ccw.js +97 -97
  126. package/node/get-interface-ccw.js.map +1 -1
  127. package/node/index.d.ts +36 -36
  128. package/node/index.js +32 -32
  129. package/node/loop/get-max-coordinate.d.ts +10 -10
  130. package/node/loop/get-max-coordinate.js +43 -43
  131. package/node/loop/get-max-coordinate.js.map +1 -1
  132. package/node/loop.d.ts +16 -16
  133. package/node/loop.js +34 -34
  134. package/node/loop.js.map +1 -1
  135. package/node/mat/add-to-cp-graph.d.ts +16 -16
  136. package/node/mat/add-to-cp-graph.js +30 -30
  137. package/node/mat/add-to-cp-graph.js.map +1 -1
  138. package/node/mat/bezier-piece.d.ts +12 -12
  139. package/node/mat/bezier-piece.js +1 -1
  140. package/node/mat/closest-boundary-point/closest-points-on-curve.d.ts +14 -14
  141. package/node/mat/closest-boundary-point/closest-points-on-curve.js +72 -73
  142. package/node/mat/closest-boundary-point/closest-points-on-curve.js.map +1 -1
  143. package/node/mat/closest-boundary-point/cull-bezier-pieces.d.ts +9 -9
  144. package/node/mat/closest-boundary-point/cull-bezier-pieces.js +19 -19
  145. package/node/mat/closest-boundary-point/cull-bezier-pieces.js.map +1 -1
  146. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.d.ts +11 -11
  147. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.js +24 -24
  148. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.js.map +1 -1
  149. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.d.ts +11 -11
  150. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.js +26 -26
  151. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.js.map +1 -1
  152. package/node/mat/closest-boundary-point/get-best-distance-squared.d.ts +8 -8
  153. package/node/mat/closest-boundary-point/get-best-distance-squared.js +24 -24
  154. package/node/mat/closest-boundary-point/get-best-distance-squared.js.map +1 -1
  155. package/node/mat/closest-boundary-point/get-close-boundary-points.d.ts +17 -17
  156. package/node/mat/closest-boundary-point/get-close-boundary-points.js +80 -80
  157. package/node/mat/closest-boundary-point/get-close-boundary-points.js.map +1 -1
  158. package/node/mat/closest-boundary-point/get-closest-boundary-point.d.ts +18 -18
  159. package/node/mat/closest-boundary-point/get-closest-boundary-point.js +40 -40
  160. package/node/mat/closest-boundary-point/get-closest-boundary-point.js.map +1 -1
  161. package/node/mat/corner.d.ts +37 -37
  162. package/node/mat/corner.js +1 -1
  163. package/node/mat/create-new-cp-tree.d.ts +9 -9
  164. package/node/mat/create-new-cp-tree.js +23 -23
  165. package/node/mat/create-new-cp-tree.js.map +1 -1
  166. package/node/mat/elem-type-two-prong.d.ts +3 -3
  167. package/node/mat/elem-type-two-prong.js +1 -1
  168. package/node/mat/find-mat/add-1-prong.d.ts +12 -12
  169. package/node/mat/find-mat/add-1-prong.js +42 -42
  170. package/node/mat/find-mat/add-1-prong.js.map +1 -1
  171. package/node/mat/find-mat/add-2-prong.d.ts +21 -21
  172. package/node/mat/find-mat/add-2-prong.js +192 -192
  173. package/node/mat/find-mat/add-2-prong.js.map +1 -1
  174. package/node/mat/find-mat/add-3-prong.d.ts +19 -19
  175. package/node/mat/find-mat/add-3-prong.js +54 -54
  176. package/node/mat/find-mat/add-3-prong.js.map +1 -1
  177. package/node/mat/find-mat/add-debug-info.d.ts +9 -9
  178. package/node/mat/find-mat/add-debug-info.js +67 -69
  179. package/node/mat/find-mat/add-debug-info.js.map +1 -1
  180. package/node/mat/find-mat/create-get-interesting-points-on-loop.d.ts +11 -11
  181. package/node/mat/find-mat/create-get-interesting-points-on-loop.js +51 -51
  182. package/node/mat/find-mat/create-get-interesting-points-on-loop.js.map +1 -1
  183. package/node/mat/find-mat/create-initial-cp-graph.d.ts +12 -12
  184. package/node/mat/find-mat/create-initial-cp-graph.js +40 -40
  185. package/node/mat/find-mat/create-initial-cp-graph.js.map +1 -1
  186. package/node/mat/find-mat/find-2-prong/add-debug-info.d.ts +8 -8
  187. package/node/mat/find-mat/find-2-prong/add-debug-info.js +21 -21
  188. package/node/mat/find-mat/find-2-prong/add-debug-info.js.map +1 -1
  189. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.d.ts +11 -11
  190. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js +29 -29
  191. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js.map +1 -1
  192. package/node/mat/find-mat/find-2-prong/find-2-prong.d.ts +37 -37
  193. package/node/mat/find-mat/find-2-prong/find-2-prong.js +232 -232
  194. package/node/mat/find-mat/find-2-prong/find-2-prong.js.map +1 -1
  195. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.d.ts +9 -9
  196. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js +39 -39
  197. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js.map +1 -1
  198. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.d.ts +11 -11
  199. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js +37 -37
  200. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js.map +1 -1
  201. package/node/mat/find-mat/find-2-prong/x-for-debugging.d.ts +9 -9
  202. package/node/mat/find-mat/find-2-prong/x-for-debugging.js +1 -1
  203. package/node/mat/find-mat/find-3-prong/calc-better-x.d.ts +19 -19
  204. package/node/mat/find-mat/find-3-prong/calc-better-x.js +36 -36
  205. package/node/mat/find-mat/find-3-prong/calc-better-x.js.map +1 -1
  206. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.d.ts +13 -13
  207. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.js +25 -25
  208. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.js.map +1 -1
  209. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.d.ts +22 -22
  210. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.js +159 -159
  211. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.js.map +1 -1
  212. package/node/mat/find-mat/find-3-prong/find-3-prong.d.ts +16 -16
  213. package/node/mat/find-mat/find-3-prong/find-3-prong.js +76 -76
  214. package/node/mat/find-mat/find-3-prong/find-3-prong.js.map +1 -1
  215. package/node/mat/find-mat/find-3-prong/get-closest-points.d.ts +9 -9
  216. package/node/mat/find-mat/find-3-prong/get-closest-points.js +16 -16
  217. package/node/mat/find-mat/find-3-prong/get-closest-points.js.map +1 -1
  218. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.d.ts +15 -15
  219. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.js +20 -20
  220. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.js.map +1 -1
  221. package/node/mat/find-mat/find-and-add-2-prongs.d.ts +16 -16
  222. package/node/mat/find-mat/find-and-add-2-prongs.js +73 -74
  223. package/node/mat/find-mat/find-and-add-2-prongs.js.map +1 -1
  224. package/node/mat/find-mat/find-and-add-3-prongs.d.ts +13 -13
  225. package/node/mat/find-mat/find-and-add-3-prongs.js +146 -147
  226. package/node/mat/find-mat/find-and-add-3-prongs.js.map +1 -1
  227. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.d.ts +14 -14
  228. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.js +33 -33
  229. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.js.map +1 -1
  230. package/node/mat/find-mat/get-potential-2-prongs.d.ts +4 -4
  231. package/node/mat/find-mat/get-potential-2-prongs.js +16 -16
  232. package/node/mat/find-mat/get-potential-2-prongs.js.map +1 -1
  233. package/node/mat/find-mat/get-sharp-corners.d.ts +4 -4
  234. package/node/mat/find-mat/get-sharp-corners.js +17 -17
  235. package/node/mat/find-mat/get-sharp-corners.js.map +1 -1
  236. package/node/mat/geometry/get-closest-square-distance-to-rect.d.ts +5 -5
  237. package/node/mat/geometry/get-closest-square-distance-to-rect.js +49 -49
  238. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.d.ts +5 -5
  239. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.js +15 -15
  240. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.js.map +1 -1
  241. package/node/mat/get-boundary-piece-beziers.d.ts +11 -11
  242. package/node/mat/get-boundary-piece-beziers.js +58 -58
  243. package/node/mat/get-boundary-piece-beziers.js.map +1 -1
  244. package/node/mat/get-contact-circles-at-interface.d.ts +8 -8
  245. package/node/mat/get-contact-circles-at-interface.js +20 -20
  246. package/node/mat/get-contact-circles-at-interface.js.map +1 -1
  247. package/node/mat/get-largest-vertex.d.ts +4 -4
  248. package/node/mat/get-largest-vertex.js +9 -9
  249. package/node/mat/get-leaves.d.ts +4 -4
  250. package/node/mat/get-leaves.js +12 -12
  251. package/node/mat/get-leaves.js.map +1 -1
  252. package/node/mat/get-neighboring-cps.d.ts +14 -14
  253. package/node/mat/get-neighboring-cps.js +30 -30
  254. package/node/mat/get-neighboring-cps.js.map +1 -1
  255. package/node/mat/get-two-prong-type.d.ts +5 -5
  256. package/node/mat/get-two-prong-type.js +8 -8
  257. package/node/mat/is-another-cp-closeby.d.ts +20 -20
  258. package/node/mat/is-another-cp-closeby.js +55 -55
  259. package/node/mat/is-another-cp-closeby.js.map +1 -1
  260. package/node/mat/simplify-mat-map-only.d.ts +23 -23
  261. package/node/mat/simplify-mat-map-only.js +80 -80
  262. package/node/mat/simplify-mat-map-only.js.map +1 -1
  263. package/node/mat/to-scale-axis/add-debug-info.d.ts +7 -7
  264. package/node/mat/to-scale-axis/add-debug-info.js +13 -13
  265. package/node/mat/to-scale-axis/add-debug-info.js.map +1 -1
  266. package/node/mat/to-scale-axis/cull-non-cycles.d.ts +9 -9
  267. package/node/mat/to-scale-axis/cull-non-cycles.js +51 -51
  268. package/node/mat/to-scale-axis/cull-non-cycles.js.map +1 -1
  269. package/node/mat/to-scale-axis/cull.d.ts +12 -12
  270. package/node/mat/to-scale-axis/cull.js +132 -132
  271. package/node/mat/to-scale-axis/cull.js.map +1 -1
  272. package/node/mat/trim-mat.d.ts +8 -8
  273. package/node/mat/trim-mat.js +16 -16
  274. package/node/mat/trim-mat.js.map +1 -1
  275. package/node/mat.d.ts +22 -22
  276. package/node/mat.js +1 -1
  277. package/node/point-on-shape.d.ts +73 -73
  278. package/node/point-on-shape.js +167 -167
  279. package/node/point-on-shape.js.map +1 -1
  280. package/node/simplify-mat.d.ts +16 -16
  281. package/node/simplify-mat.js +71 -71
  282. package/node/simplify-mat.js.map +1 -1
  283. package/node/svg/get-loop-bounds.d.ts +12 -12
  284. package/node/svg/get-loop-bounds.js +80 -80
  285. package/node/svg/get-loop-bounds.js.map +1 -1
  286. package/node/svg/get-min-y-pos.d.ts +8 -8
  287. package/node/svg/get-min-y-pos.js +9 -9
  288. package/node/svg/get-shape-bounds.d.ts +9 -9
  289. package/node/svg/get-shape-bounds.js +35 -35
  290. package/node/svg/get-shape-bounds.js.map +1 -1
  291. package/node/sweep-line/sweep-line.d.ts +18 -18
  292. package/node/sweep-line/sweep-line.js +72 -72
  293. package/node/sweep-line/sweep-line.js.map +1 -1
  294. package/node/to-scale-axis.d.ts +16 -16
  295. package/node/to-scale-axis.js +74 -73
  296. package/node/to-scale-axis.js.map +1 -1
  297. package/node/traverse-edges.d.ts +10 -10
  298. package/node/traverse-edges.js +21 -21
  299. package/node/traverse-edges.js.map +1 -1
  300. package/node/traverse-vertices.d.ts +12 -12
  301. package/node/traverse-vertices.js +27 -27
  302. package/node/traverse-vertices.js.map +1 -1
  303. package/package.json +29 -24
  304. package/src/circle.ts +3 -3
  305. package/src/compare-curvatures-at-interface.ts +36 -36
  306. package/src/cp-node/clone.ts +6 -6
  307. package/src/cp-node/remove.ts +4 -4
  308. package/src/cp-node.ts +20 -20
  309. package/src/curve.ts +19 -19
  310. package/src/debug/functions/draw-elem/bounding-hull.ts +2 -2
  311. package/src/debug/functions/draw-elem/branch.ts +4 -4
  312. package/src/debug/functions/draw-elem/culls.ts +4 -4
  313. package/src/debug/functions/draw-elem/draw-circle-percent.ts +2 -2
  314. package/src/debug/functions/draw-elem/draw-elem.ts +1 -1
  315. package/src/debug/functions/draw-elem/dull-corner.ts +3 -3
  316. package/src/debug/functions/draw-elem/leaves.ts +4 -4
  317. package/src/debug/functions/draw-elem/loose-bounding-box.ts +2 -2
  318. package/src/debug/functions/draw-elem/mat.ts +4 -4
  319. package/src/debug/functions/draw-elem/max-vertex.ts +2 -2
  320. package/src/debug/functions/draw-elem/min-y.ts +3 -3
  321. package/src/debug/functions/draw-elem/one-prong-at-dull-corner.ts +4 -4
  322. package/src/debug/functions/draw-elem/one-prong.ts +4 -4
  323. package/src/debug/functions/draw-elem/sharp-corner.ts +2 -2
  324. package/src/debug/functions/draw-elem/three-prong.ts +7 -7
  325. package/src/debug/functions/draw-elem/tight-bounding-box.ts +1 -1
  326. package/src/debug/functions/draw-elem/two-prong.ts +1 -1
  327. package/src/debug/functions/draw-elem/vertex.ts +20 -14
  328. package/src/debug/functions/general.ts +3 -3
  329. package/src/debug/functions/three-prong.ts +37 -37
  330. package/src/debug/functions/two-prong.ts +15 -15
  331. package/src/find-mats.ts +19 -19
  332. package/src/get-boundary-bezier-parts-to-next.ts +8 -8
  333. package/src/get-boundary-beziers-to-next.ts +8 -8
  334. package/src/get-branches.ts +7 -7
  335. package/src/get-curve/get-curve-between.ts +21 -21
  336. package/src/get-curve/get-edge-direction.ts +13 -14
  337. package/src/get-interface-ccw.ts +12 -12
  338. package/src/loop/get-max-coordinate.ts +7 -7
  339. package/src/loop.ts +4 -4
  340. package/src/mat/add-to-cp-graph.ts +8 -8
  341. package/src/mat/closest-boundary-point/closest-points-on-curve.ts +5 -6
  342. package/src/mat/closest-boundary-point/cull-bezier-pieces.ts +1 -1
  343. package/src/mat/closest-boundary-point/cull-by-loose-bounding-box.ts +5 -5
  344. package/src/mat/closest-boundary-point/cull-by-tight-boundary-box.ts +5 -5
  345. package/src/mat/closest-boundary-point/get-best-distance-squared.ts +5 -5
  346. package/src/mat/closest-boundary-point/get-close-boundary-points.ts +15 -15
  347. package/src/mat/closest-boundary-point/get-closest-boundary-point.ts +4 -4
  348. package/src/mat/cmp-cp-on-delta.ts +5 -5
  349. package/src/mat/create-new-cp-tree.ts +3 -3
  350. package/src/mat/find-mat/add-1-prong.ts +5 -5
  351. package/src/mat/find-mat/add-2-prong.ts +42 -42
  352. package/src/mat/find-mat/add-3-prong.ts +1 -1
  353. package/src/mat/find-mat/add-debug-info.ts +18 -20
  354. package/src/mat/find-mat/create-get-interesting-points-on-loop.ts +4 -4
  355. package/src/mat/find-mat/create-initial-cp-graph.ts +11 -11
  356. package/src/mat/find-mat/find-2-prong/add-debug-info.ts +4 -4
  357. package/src/mat/find-mat/find-2-prong/cull-bezier-pieces.ts +5 -5
  358. package/src/mat/find-mat/find-2-prong/find-2-prong.ts +27 -27
  359. package/src/mat/find-mat/find-2-prong/find-equidistant-point-on-line.ts +7 -7
  360. package/src/mat/find-mat/find-2-prong/get-initial-bezier-pieces.ts +4 -4
  361. package/src/mat/find-mat/find-3-prong/calc-better-x.ts +4 -4
  362. package/src/mat/find-mat/find-3-prong/calc-initial-3-prong-center.ts +3 -3
  363. package/src/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.ts +37 -37
  364. package/src/mat/find-mat/find-3-prong/find-3-prong.ts +16 -16
  365. package/src/mat/find-mat/find-3-prong/get-closest-points.ts +1 -1
  366. package/src/mat/find-mat/find-and-add-2-prongs-on-all-paths.ts +2 -2
  367. package/src/mat/find-mat/find-and-add-2-prongs.ts +14 -16
  368. package/src/mat/find-mat/find-and-add-3-prongs.ts +19 -19
  369. package/src/mat/find-mat/find-and-add-hole-closing-2-prongs.ts +6 -6
  370. package/src/mat/find-mat/get-potential-2-prongs.ts +4 -4
  371. package/src/mat/find-mat/get-sharp-corners.ts +4 -4
  372. package/src/mat/find-mat/get-total-abs-curvature.ts +1 -1
  373. package/src/mat/geometry/get-closest-squared-distance-to-rotated-rect.ts +3 -3
  374. package/src/mat/get-boundary-piece-beziers.ts +5 -5
  375. package/src/mat/get-contact-circles-at-interface.ts +1 -1
  376. package/src/mat/get-edges-as-array.ts +2 -2
  377. package/src/mat/get-leaves.ts +2 -2
  378. package/src/mat/get-neighboring-cps.ts +1 -1
  379. package/src/mat/is-another-cp-closeby.ts +9 -9
  380. package/src/mat/simplify-mat-map-only.ts +15 -15
  381. package/src/mat/to-scale-axis/add-debug-info.ts +6 -3
  382. package/src/mat/to-scale-axis/add-to-tree.ts +10 -10
  383. package/src/mat/to-scale-axis/calc-groups.ts +19 -19
  384. package/src/mat/to-scale-axis/create-spacial-tree.ts +4 -4
  385. package/src/mat/to-scale-axis/cull-non-cycles.ts +5 -5
  386. package/src/mat/to-scale-axis/cull.ts +5 -5
  387. package/src/mat/to-scale-axis/get-engulfed-vertices.ts +18 -18
  388. package/src/mat/trim-mat.ts +1 -1
  389. package/src/point-on-shape.ts +16 -16
  390. package/src/simplify-mat.ts +10 -10
  391. package/src/svg/get-curvature-at-interface.ts +6 -8
  392. package/src/svg/get-extreme.ts +1 -1
  393. package/src/svg/get-loop-bounds.ts +13 -13
  394. package/src/svg/get-shape-bounds.ts +4 -4
  395. package/src/sweep-line/are-boxes-intersecting.ts +4 -4
  396. package/src/sweep-line/sweep-line.ts +8 -8
  397. package/src/to-scale-axis.ts +18 -17
  398. package/src/traverse-edges.ts +2 -2
  399. package/src/traverse-vertices.ts +2 -2
  400. package/tsconfig.json +0 -1
  401. package/webpack.config.cjs +12 -63
  402. package/browser/index.min.js.LICENSE.txt +0 -2819
  403. package/browser/index.module.js +0 -7149
  404. package/browser/index.module.min.js +0 -2
  405. package/browser/index.module.min.js.LICENSE.txt +0 -2819
package/node/find-mats.js CHANGED
@@ -1,126 +1,123 @@
1
- import { simplifyPaths } from 'flo-boolean';
2
- import { findAndAddAll3Prongs } from './mat/find-mat/find-and-add-3-prongs.js';
3
- import { createInitialCpGraph } from './mat/find-mat/create-initial-cp-graph.js';
4
- ;
5
- import { addDebugInfo1, addDebugInfo2, addDebugInfo3, addDebugInfo4 } from './mat/find-mat/add-debug-info.js';
6
- import { getPotential2Prongs } from './mat/find-mat/get-potential-2-prongs.js';
7
- import { getSharpCorners } from './mat/find-mat/get-sharp-corners.js';
8
- import { findAndAdd2ProngsOnAllPaths } from './mat/find-mat/find-and-add-2-prongs-on-all-paths.js';
9
- import { getInterestingPointsOnLoop } from './mat/find-mat/create-get-interesting-points-on-loop.js';
10
- import { findAndAddHoleClosing2Prongs } from './mat/find-mat/find-and-add-hole-closing-2-prongs.js';
11
- import { getLoopsMetrics } from './loop/get-max-coordinate.js';
12
- /**
13
- * Finds and returns the Medial Axis Transforms (MATs) from the given array of
14
- * bezier loops representing shape boundaries.
15
- *
16
- * @param bezierLoops An array of (possibly intersecting) loops with each loop
17
- * representing one or more piecewise smooth closed curves (i.e. shapes). Each
18
- * loop consists of an array of beziers represented by an array of control
19
- * points with 2,3 or 4 elements corresponding to linear, quadratic and cubic
20
- * beziers respectively. Each point is a two-element array (ordered pair), the
21
- * first of which is the x-coordinate and the second the y-coordinate.
22
- *
23
- * @param maxCurviness The maximum value the 'curviness' of a curve can have
24
- * before an additional MAT point is inserted in between. Defaults to 0.4.
25
- * (Curviness is measured as the total angle in radians between the consecutive
26
- * vectors formed by the ordered control points of th bezier curve). The value
27
- * is clipped in the range `[0.05,3]`.
28
- * @param maxLength The maximum length a curve can have before an additional MAT
29
- * point is inserted. This value is scaled to a reference 1024 x 1024
30
- * grid (e.g. if the shape fits in a 512 x 512 axis-aligned box the value will be
31
- * halved, e.g. from 10 to 5). Together with maxCurviness it represents a
32
- * tolerance for the accuracy of the MAT. Defaults to 4. The value is clipped
33
- * in [1,100].
34
- */
35
- function findMats(bezierLoops, maxCurviness = 0.4, maxLength = 4) {
36
- if (typeof _debug_ !== 'undefined') {
37
- var timingStart = performance.now();
38
- }
39
- let maxCoordinate;
40
- let minBezLength;
41
- ({ maxCurviness, maxLength, maxCoordinate, minBezLength } =
42
- getSizeParams(bezierLoops, maxCurviness, maxLength));
43
- let loopss = simplifyPaths(bezierLoops, maxCoordinate);
44
- let mats = [];
45
- for (let loops of loopss) {
46
- let mat = findMat(loops, minBezLength, maxCurviness, maxLength, maxCoordinate);
47
- if (mat) {
48
- mats.push(mat);
49
- }
50
- }
51
- return mats;
52
- }
53
- function getSizeParams(bezierLoops, maxCurviness, maxLength) {
54
- // Gather some shape metrics
55
- let { maxCoordinate, maxRadius } = getLoopsMetrics(bezierLoops);
56
- let expMax = Math.ceil(Math.log2(maxCoordinate));
57
- let minBezLengthSigBits = 14;
58
- /**
59
- * If a curve is shorter than this value then no points on it will be
60
- * selected for the purpose of finding the MAT.
61
- */
62
- let minBezLength = 2 ** expMax * 2 ** (-minBezLengthSigBits);
63
- // Limit the tolerance to a reasonable level
64
- if (maxCurviness < 0.05) {
65
- maxCurviness = 0.05;
66
- }
67
- if (maxCurviness > 3) {
68
- maxCurviness = 3;
69
- }
70
- // Limit the tolerance to a reasonable level
71
- if (maxLength < 0.1) {
72
- maxLength = 0.1;
73
- }
74
- if (maxLength > 100) {
75
- maxLength = 100;
76
- }
77
- // Adjust length tolerance according to a reference max coordinate
78
- let expMaxRadius = Math.ceil(Math.log2(maxRadius));
79
- let maxLengthSigBits = 10; // 1024 x 1024
80
- maxLength = maxLength * (2 ** expMaxRadius * 2 ** (-maxLengthSigBits));
81
- return { maxCurviness, maxLength, maxCoordinate, minBezLength };
82
- }
83
- /**
84
- * @hidden
85
- * Find the MAT of the given loops.
86
- * @param loops The loops (that as a precondition must be ordered from highest
87
- * (i.e. smallest y-value) topmost point loops to lowest)
88
- */
89
- function findMat(loops, minBezLength, maxCurviness, maxLength, maxCoordinate) {
90
- addDebugInfo1(loops);
91
- // Gets interesting points on the shape, i.e. those that makes sense to use
92
- // for the 2-prong procedure.
93
- let pointsPerLoop = loops.map(getInterestingPointsOnLoop(minBezLength, maxCurviness, maxLength));
94
- let for2ProngsPerLoop = getPotential2Prongs(pointsPerLoop);
95
- let sharpCornersPerLoop = getSharpCorners(pointsPerLoop);
96
- let cpTrees = new Map();
97
- let cpNode = createInitialCpGraph(loops, cpTrees, sharpCornersPerLoop);
98
- findAndAddHoleClosing2Prongs(loops, cpTrees, maxCoordinate);
99
- if (typeof _debug_ !== 'undefined') {
100
- if (_debug_.directives.stopAfterHoleClosers) {
101
- return undefined;
102
- }
103
- }
104
- addDebugInfo2();
105
- cpNode = findAndAdd2ProngsOnAllPaths(loops, cpTrees, for2ProngsPerLoop, maxCoordinate);
106
- addDebugInfo3();
107
- if (typeof _debug_ !== 'undefined') {
108
- if (_debug_.directives.stopAfterTwoProngs) {
109
- return undefined;
110
- }
111
- }
112
- if (cpNode === undefined) {
113
- return undefined;
114
- }
115
- findAndAddAll3Prongs(cpTrees, cpNode, maxCoordinate);
116
- if (typeof _debug_ !== 'undefined') {
117
- if (_debug_.directives.stopAfterThreeProngs) {
118
- return undefined;
119
- }
120
- }
121
- let mat = { cpNode, cpTrees };
122
- addDebugInfo4(mat);
123
- return mat;
124
- }
125
- export { findMats };
1
+ import { simplifyPaths } from 'flo-boolean';
2
+ import { findAndAddAll3Prongs } from './mat/find-mat/find-and-add-3-prongs.js';
3
+ import { createInitialCpGraph } from './mat/find-mat/create-initial-cp-graph.js';
4
+ import { addDebugInfo1, addDebugInfo2, addDebugInfo3, addDebugInfo4 } from './mat/find-mat/add-debug-info.js';
5
+ import { getPotential2Prongs } from './mat/find-mat/get-potential-2-prongs.js';
6
+ import { getSharpCorners } from './mat/find-mat/get-sharp-corners.js';
7
+ import { findAndAdd2ProngsOnAllPaths } from './mat/find-mat/find-and-add-2-prongs-on-all-paths.js';
8
+ import { getInterestingPointsOnLoop } from './mat/find-mat/create-get-interesting-points-on-loop.js';
9
+ import { findAndAddHoleClosing2Prongs } from './mat/find-mat/find-and-add-hole-closing-2-prongs.js';
10
+ import { getLoopsMetrics } from './loop/get-max-coordinate.js';
11
+ /**
12
+ * Finds and returns the Medial Axis Transforms (MATs) from the given array of
13
+ * bezier loops representing shape boundaries.
14
+ *
15
+ * @param bezierLoops An array of (possibly intersecting) loops with each loop
16
+ * representing one or more piecewise smooth closed curves (i.e. shapes). Each
17
+ * loop consists of an array of beziers represented by an array of control
18
+ * points with 2,3 or 4 elements corresponding to linear, quadratic and cubic
19
+ * beziers respectively. Each point is a two-element array (ordered pair), the
20
+ * first of which is the x-coordinate and the second the y-coordinate.
21
+ *
22
+ * @param maxCurviness The maximum value the 'curviness' of a curve can have
23
+ * before an additional MAT point is inserted in between. Defaults to 0.4.
24
+ * (Curviness is measured as the total angle in radians between the consecutive
25
+ * vectors formed by the ordered control points of th bezier curve). The value
26
+ * is clipped in the range `[0.05,3]`.
27
+ * @param maxLength The maximum length a curve can have before an additional MAT
28
+ * point is inserted. This value is scaled to a reference 1024 x 1024
29
+ * grid (e.g. if the shape fits in a 512 x 512 axis-aligned box the value will be
30
+ * halved, e.g. from 10 to 5). Together with maxCurviness it represents a
31
+ * tolerance for the accuracy of the MAT. Defaults to 4. The value is clipped
32
+ * in [1,100].
33
+ */
34
+ function findMats(bezierLoops, maxCurviness = 0.4, maxLength = 4) {
35
+ // if (typeof _debug_ !== 'undefined') { var timingStart = performance.now(); }
36
+ let maxCoordinate;
37
+ let minBezLength;
38
+ ({ maxCurviness, maxLength, maxCoordinate, minBezLength } =
39
+ getSizeParams(bezierLoops, maxCurviness, maxLength));
40
+ const loopss = simplifyPaths(bezierLoops, maxCoordinate);
41
+ const mats = [];
42
+ for (const loops of loopss) {
43
+ const mat = findMat(loops, minBezLength, maxCurviness, maxLength, maxCoordinate);
44
+ if (mat) {
45
+ mats.push(mat);
46
+ }
47
+ }
48
+ return mats;
49
+ }
50
+ function getSizeParams(bezierLoops, maxCurviness, maxLength) {
51
+ // Gather some shape metrics
52
+ const { maxCoordinate, maxRadius } = getLoopsMetrics(bezierLoops);
53
+ const expMax = Math.ceil(Math.log2(maxCoordinate));
54
+ const minBezLengthSigBits = 14;
55
+ /**
56
+ * If a curve is shorter than this value then no points on it will be
57
+ * selected for the purpose of finding the MAT.
58
+ */
59
+ const minBezLength = 2 ** expMax * 2 ** (-minBezLengthSigBits);
60
+ // Limit the tolerance to a reasonable level
61
+ if (maxCurviness < 0.05) {
62
+ maxCurviness = 0.05;
63
+ }
64
+ if (maxCurviness > 3) {
65
+ maxCurviness = 3;
66
+ }
67
+ // Limit the tolerance to a reasonable level
68
+ if (maxLength < 0.1) {
69
+ maxLength = 0.1;
70
+ }
71
+ if (maxLength > 100) {
72
+ maxLength = 100;
73
+ }
74
+ // Adjust length tolerance according to a reference max coordinate
75
+ const expMaxRadius = Math.ceil(Math.log2(maxRadius));
76
+ const maxLengthSigBits = 10; // 1024 x 1024
77
+ maxLength = maxLength * (2 ** expMaxRadius * 2 ** (-maxLengthSigBits));
78
+ return { maxCurviness, maxLength, maxCoordinate, minBezLength };
79
+ }
80
+ /**
81
+ * @hidden
82
+ * Find the MAT of the given loops.
83
+ * @param loops The loops (that as a precondition must be ordered from highest
84
+ * (i.e. smallest y-value) topmost point loops to lowest)
85
+ */
86
+ function findMat(loops, minBezLength, maxCurviness, maxLength, maxCoordinate) {
87
+ addDebugInfo1(loops);
88
+ // Gets interesting points on the shape, i.e. those that makes sense to use
89
+ // for the 2-prong procedure.
90
+ const pointsPerLoop = loops.map(getInterestingPointsOnLoop(minBezLength, maxCurviness, maxLength));
91
+ const for2ProngsPerLoop = getPotential2Prongs(pointsPerLoop);
92
+ const sharpCornersPerLoop = getSharpCorners(pointsPerLoop);
93
+ const cpTrees = new Map();
94
+ let cpNode = createInitialCpGraph(loops, cpTrees, sharpCornersPerLoop);
95
+ findAndAddHoleClosing2Prongs(loops, cpTrees, maxCoordinate);
96
+ if (typeof _debug_ !== 'undefined') {
97
+ if (_debug_.directives.stopAfterHoleClosers) {
98
+ return undefined;
99
+ }
100
+ }
101
+ addDebugInfo2();
102
+ cpNode = findAndAdd2ProngsOnAllPaths(loops, cpTrees, for2ProngsPerLoop, maxCoordinate);
103
+ addDebugInfo3();
104
+ if (typeof _debug_ !== 'undefined') {
105
+ if (_debug_.directives.stopAfterTwoProngs) {
106
+ return undefined;
107
+ }
108
+ }
109
+ if (cpNode === undefined) {
110
+ return undefined;
111
+ }
112
+ findAndAddAll3Prongs(cpTrees, cpNode, maxCoordinate);
113
+ if (typeof _debug_ !== 'undefined') {
114
+ if (_debug_.directives.stopAfterThreeProngs) {
115
+ return undefined;
116
+ }
117
+ }
118
+ const mat = { cpNode, cpTrees };
119
+ addDebugInfo4(mat);
120
+ return mat;
121
+ }
122
+ export { findMats };
126
123
  //# sourceMappingURL=find-mats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-mats.js","sourceRoot":"","sources":["../src/find-mats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-mats.js","sourceRoot":"","sources":["../src/find-mats.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { BezierPiece } from 'flo-bezier3';
2
- import { CpNode } from './cp-node.js';
3
- /**
4
- * Returns the ordered bezier curves from this CpNode to the next CpNode
5
- * on the boundary.
6
- * @param cpNode
7
- */
8
- declare function getBoundaryBezierPartsToNext(cpNode: CpNode): BezierPiece[];
9
- export { getBoundaryBezierPartsToNext };
1
+ import { BezierPiece } from 'flo-bezier3';
2
+ import { CpNode } from './cp-node.js';
3
+ /**
4
+ * Returns the ordered bezier curves from this CpNode to the next CpNode
5
+ * on the boundary.
6
+ * @param cpNode
7
+ */
8
+ declare function getBoundaryBezierPartsToNext(cpNode: CpNode): BezierPiece[];
9
+ export { getBoundaryBezierPartsToNext };
@@ -1,43 +1,43 @@
1
- /**
2
- * Returns the ordered bezier curves from this CpNode to the next CpNode
3
- * on the boundary.
4
- * @param cpNode
5
- */
6
- function getBoundaryBezierPartsToNext(cpNode) {
7
- let cpThis = cpNode;
8
- let cpNext = cpNode.next;
9
- let posThis = cpThis.cp.pointOnShape;
10
- let posNext = cpNext.cp.pointOnShape;
11
- let curveThis = posThis.curve;
12
- let curveNext = posNext.curve;
13
- if (curveThis.loop !== curveNext.loop) {
14
- // It is a hole-closer going over to the other loop - a kind of terminal
15
- // CpNode.
16
- return undefined;
17
- }
18
- let bezierParts = [];
19
- if (curveNext === curveThis) {
20
- bezierParts.push({ ps: posThis.curve.ps, ts: [posThis.t, posNext.t] });
21
- }
22
- else {
23
- bezierParts.push({ ps: posThis.curve.ps, ts: [posThis.t, 1] });
24
- addSkippedBeziers(bezierParts, posThis.curve, posNext.curve, posNext.t);
25
- }
26
- return bezierParts;
27
- }
28
- /**
29
- * @hidden
30
- * Adds pieces of skipped beziers.
31
- */
32
- function addSkippedBeziers(bezierParts, curveStart, curveEnd, t1) {
33
- let curveThis = curveStart;
34
- do {
35
- curveThis = curveThis.next;
36
- let bezierPart = curveThis === curveEnd
37
- ? { ps: curveThis.ps, ts: [0, t1] }
38
- : { ps: curveThis.ps, ts: [0, 1] };
39
- bezierParts.push(bezierPart);
40
- } while (curveThis !== curveEnd);
41
- }
42
- export { getBoundaryBezierPartsToNext };
1
+ /**
2
+ * Returns the ordered bezier curves from this CpNode to the next CpNode
3
+ * on the boundary.
4
+ * @param cpNode
5
+ */
6
+ function getBoundaryBezierPartsToNext(cpNode) {
7
+ const cpThis = cpNode;
8
+ const cpNext = cpNode.next;
9
+ const posThis = cpThis.cp.pointOnShape;
10
+ const posNext = cpNext.cp.pointOnShape;
11
+ const curveThis = posThis.curve;
12
+ const curveNext = posNext.curve;
13
+ if (curveThis.loop !== curveNext.loop) {
14
+ // It is a hole-closer going over to the other loop - a kind of terminal
15
+ // CpNode.
16
+ return undefined;
17
+ }
18
+ const bezierParts = [];
19
+ if (curveNext === curveThis) {
20
+ bezierParts.push({ ps: posThis.curve.ps, ts: [posThis.t, posNext.t] });
21
+ }
22
+ else {
23
+ bezierParts.push({ ps: posThis.curve.ps, ts: [posThis.t, 1] });
24
+ addSkippedBeziers(bezierParts, posThis.curve, posNext.curve, posNext.t);
25
+ }
26
+ return bezierParts;
27
+ }
28
+ /**
29
+ * @hidden
30
+ * Adds pieces of skipped beziers.
31
+ */
32
+ function addSkippedBeziers(bezierParts, curveStart, curveEnd, t1) {
33
+ let curveThis = curveStart;
34
+ do {
35
+ curveThis = curveThis.next;
36
+ const bezierPart = curveThis === curveEnd
37
+ ? { ps: curveThis.ps, ts: [0, t1] }
38
+ : { ps: curveThis.ps, ts: [0, 1] };
39
+ bezierParts.push(bezierPart);
40
+ } while (curveThis !== curveEnd);
41
+ }
42
+ export { getBoundaryBezierPartsToNext };
43
43
  //# sourceMappingURL=get-boundary-bezier-parts-to-next.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-boundary-bezier-parts-to-next.js","sourceRoot":"","sources":["../src/get-boundary-bezier-parts-to-next.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,SAAS,4BAA4B,CAAC,MAAc;IAChD,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,IAAI,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IACrC,IAAI,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IAErC,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAC9B,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAE9B,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;QACnC,wEAAwE;QACxE,UAAU;QACV,OAAO,SAAS,CAAC;KACpB;IAED,IAAI,WAAW,GAAkB,EAAE,CAAC;IAEpC,IAAI,SAAS,KAAK,SAAS,EAAE;QACzB,WAAW,CAAC,IAAI,CACZ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CACvD,CAAC;KACL;SAAM;QACH,WAAW,CAAC,IAAI,CACZ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAC/C,CAAC;QAEF,iBAAiB,CACT,WAAW,EACX,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CAChB,CAAC;KACL;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,WAA+C,EAC/C,UAAkB,EAClB,QAAkB,EAClB,EAAmB;IAEvB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG;QACC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,UAAU,GAAG,SAAS,KAAK,QAAQ;YACnC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACnC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;QAEtC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAChC,QAAQ,SAAS,KAAK,QAAQ,EAAE;AAGrC,CAAC;AAGD,OAAO,EAAE,4BAA4B,EAAE,CAAA"}
1
+ {"version":3,"file":"get-boundary-bezier-parts-to-next.js","sourceRoot":"","sources":["../src/get-boundary-bezier-parts-to-next.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,SAAS,4BAA4B,CAAC,MAAc;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;QACnC,wEAAwE;QACxE,UAAU;QACV,OAAO,SAAS,CAAC;KACpB;IAED,MAAM,WAAW,GAAkB,EAAE,CAAC;IAEtC,IAAI,SAAS,KAAK,SAAS,EAAE;QACzB,WAAW,CAAC,IAAI,CACZ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CACvD,CAAC;KACL;SAAM;QACH,WAAW,CAAC,IAAI,CACZ,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAC/C,CAAC;QAEF,iBAAiB,CACT,WAAW,EACX,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CAChB,CAAC;KACL;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,WAA+C,EAC/C,UAAkB,EAClB,QAAkB,EAClB,EAAmB;IAEvB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG;QACC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,MAAM,UAAU,GAAG,SAAS,KAAK,QAAQ;YACrC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YACnC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;QAEtC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAChC,QAAQ,SAAS,KAAK,QAAQ,EAAE;AAGrC,CAAC;AAGD,OAAO,EAAE,4BAA4B,EAAE,CAAA"}
@@ -1,8 +1,8 @@
1
- import { CpNode } from './cp-node.js';
2
- /**
3
- * Returns the ordered bezier curves from this CpNode to the next CpNode
4
- * on the boundary.
5
- * @param cpNode
6
- */
7
- declare function getBoundaryBeziersToNext(cpNode: CpNode): number[][][];
8
- export { getBoundaryBeziersToNext };
1
+ import { CpNode } from './cp-node.js';
2
+ /**
3
+ * Returns the ordered bezier curves from this CpNode to the next CpNode
4
+ * on the boundary.
5
+ * @param cpNode
6
+ */
7
+ declare function getBoundaryBeziersToNext(cpNode: CpNode): number[][][];
8
+ export { getBoundaryBeziersToNext };
@@ -1,45 +1,45 @@
1
- // qqq import { fromTo, fromTTo1, from0ToT } from 'flo-bezier3';
2
- import { fromTo } from 'flo-bezier3';
3
- /**
4
- * Returns the ordered bezier curves from this CpNode to the next CpNode
5
- * on the boundary.
6
- * @param cpNode
7
- */
8
- function getBoundaryBeziersToNext(cpNode) {
9
- let cpThis = cpNode;
10
- let cpNext = cpNode.next;
11
- let posThis = cpThis.cp.pointOnShape;
12
- let posNext = cpNext.cp.pointOnShape;
13
- let curveThis = posThis.curve;
14
- let curveNext = posNext.curve;
15
- if (curveThis.loop !== curveNext.loop) {
16
- // It is a hole-closer going over to the other loop - a kind of terminal
17
- // CpNode.
18
- return undefined;
19
- }
20
- let beziers = [];
21
- if (curveNext === curveThis) {
22
- beziers.push(fromTo(posThis.curve.ps, posThis.t, posNext.t));
23
- }
24
- else {
25
- beziers.push(fromTo(posThis.curve.ps, posThis.t, 1));
26
- addSkippedBeziers(beziers, posThis.curve, posNext.curve, posNext.t);
27
- }
28
- return beziers;
29
- }
30
- /**
31
- * Adds pieces of skipped beziers.
32
- * @hidden
33
- */
34
- function addSkippedBeziers(beziers, curveStart, curveEnd, t1) {
35
- let curveThis = curveStart;
36
- do {
37
- curveThis = curveThis.next;
38
- let tEnd = curveThis === curveEnd ? t1 : 1;
39
- beziers.push(
40
- // qqq from0ToT(curveThis.ps, tEnd)
41
- fromTo(curveThis.ps, 0, tEnd));
42
- } while (curveThis !== curveEnd);
43
- }
44
- export { getBoundaryBeziersToNext };
1
+ // qqq import { fromTo, fromTTo1, from0ToT } from 'flo-bezier3';
2
+ import { fromTo } from 'flo-bezier3';
3
+ /**
4
+ * Returns the ordered bezier curves from this CpNode to the next CpNode
5
+ * on the boundary.
6
+ * @param cpNode
7
+ */
8
+ function getBoundaryBeziersToNext(cpNode) {
9
+ const cpThis = cpNode;
10
+ const cpNext = cpNode.next;
11
+ const posThis = cpThis.cp.pointOnShape;
12
+ const posNext = cpNext.cp.pointOnShape;
13
+ const curveThis = posThis.curve;
14
+ const curveNext = posNext.curve;
15
+ if (curveThis.loop !== curveNext.loop) {
16
+ // It is a hole-closer going over to the other loop - a kind of terminal
17
+ // CpNode.
18
+ return undefined;
19
+ }
20
+ const beziers = [];
21
+ if (curveNext === curveThis) {
22
+ beziers.push(fromTo(posThis.curve.ps, posThis.t, posNext.t));
23
+ }
24
+ else {
25
+ beziers.push(fromTo(posThis.curve.ps, posThis.t, 1));
26
+ addSkippedBeziers(beziers, posThis.curve, posNext.curve, posNext.t);
27
+ }
28
+ return beziers;
29
+ }
30
+ /**
31
+ * Adds pieces of skipped beziers.
32
+ * @hidden
33
+ */
34
+ function addSkippedBeziers(beziers, curveStart, curveEnd, t1) {
35
+ let curveThis = curveStart;
36
+ do {
37
+ curveThis = curveThis.next;
38
+ const tEnd = curveThis === curveEnd ? t1 : 1;
39
+ beziers.push(
40
+ // qqq from0ToT(curveThis.ps, tEnd)
41
+ fromTo(curveThis.ps, 0, tEnd));
42
+ } while (curveThis !== curveEnd);
43
+ }
44
+ export { getBoundaryBeziersToNext };
45
45
  //# sourceMappingURL=get-boundary-beziers-to-next.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-boundary-beziers-to-next.js","sourceRoot":"","sources":["../src/get-boundary-beziers-to-next.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKrC;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,MAAc;IAC5C,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,IAAI,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IACrC,IAAI,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IAErC,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAC9B,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAE9B,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;QACnC,wEAAwE;QACxE,UAAU;QACV,OAAO,SAAS,CAAC;KACpB;IAED,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,SAAS,KAAK,SAAS,EAAE;QACzB,OAAO,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CACjD,CAAC;KACL;SAAM;QACH,OAAO,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CACzC,CAAC;QAEF,iBAAiB,CACT,OAAO,EACP,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CAChB,CAAC;KACL;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,OAAyB,EACzB,UAAkB,EAClB,QAAkB,EAClB,EAAmB;IAEvB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG;QACC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,IAAI,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI;QACR,oCAAoC;QACpC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAChC,CAAC;KACL,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACrC,CAAC;AAGD,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
1
+ {"version":3,"file":"get-boundary-beziers-to-next.js","sourceRoot":"","sources":["../src/get-boundary-beziers-to-next.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKrC;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,MAAc;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;IAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;QACnC,wEAAwE;QACxE,UAAU;QACV,OAAO,SAAS,CAAC;KACpB;IAED,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,IAAI,SAAS,KAAK,SAAS,EAAE;QACzB,OAAO,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CACjD,CAAC;KACL;SAAM;QACH,OAAO,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CACzC,CAAC;QAEF,iBAAiB,CACT,OAAO,EACP,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CAChB,CAAC;KACL;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,OAAyB,EACzB,UAAkB,EAClB,QAAkB,EAClB,EAAmB;IAEvB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG;QACC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI;QACR,oCAAoC;QACpC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAChC,CAAC;KACL,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACrC,CAAC;AAGD,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
@@ -1,2 +1,2 @@
1
- declare const getBoundingBox_: (a: number[][]) => number[][];
2
- export { getBoundingBox_ };
1
+ declare const getBoundingBox_: (a: number[][]) => number[][];
2
+ export { getBoundingBox_ };
@@ -1,5 +1,5 @@
1
- import { getBoundingBox } from "flo-bezier3";
2
- import { memoize } from "flo-memoize";
3
- const getBoundingBox_ = memoize(getBoundingBox);
4
- export { getBoundingBox_ };
1
+ import { getBoundingBox } from "flo-bezier3";
2
+ import { memoize } from "flo-memoize";
3
+ const getBoundingBox_ = memoize(getBoundingBox);
4
+ export { getBoundingBox_ };
5
5
  //# sourceMappingURL=get-bounding-box-.js.map
@@ -1,12 +1,12 @@
1
- import { CpNode } from './cp-node.js';
2
- /**
3
- * Traverses all edges (depth first) of the given MAT tree starting at the given
4
- * vertex (represented by a [[CpNode]]). Returns the result as an array of
5
- * smooth branches, where smoothness is total or within a given tolerance.
6
- * @param cpNode Any [[CpNode]] representing the start vertex.
7
- * @param tolerance Tolerance given as the degrees difference of the unit
8
- * direction vectors at the interface between curves. A tolerance of zero means
9
- * perfect smoothness is required.
10
- */
11
- declare function getBranches(cpNode: CpNode, tolerance?: number): CpNode[][];
12
- export { getBranches };
1
+ import { CpNode } from './cp-node.js';
2
+ /**
3
+ * Traverses all edges (depth first) of the given MAT tree starting at the given
4
+ * vertex (represented by a [[CpNode]]). Returns the result as an array of
5
+ * smooth branches, where smoothness is total or within a given tolerance.
6
+ * @param cpNode Any [[CpNode]] representing the start vertex.
7
+ * @param tolerance Tolerance given as the degrees difference of the unit
8
+ * direction vectors at the interface between curves. A tolerance of zero means
9
+ * perfect smoothness is required.
10
+ */
11
+ declare function getBranches(cpNode: CpNode, tolerance?: number): CpNode[][];
12
+ export { getBranches };