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
@@ -1,5 +1,5 @@
1
- /** @hidden */
2
- declare var _debug_: Debug;
1
+ /** @internal */
2
+ declare const _debug_: Debug;
3
3
 
4
4
  import { fromTo } from 'flo-bezier3';
5
5
  import { Debug } from '../../../debug/debug.js';
@@ -19,18 +19,18 @@ import { getBoundaryPieceBeziers } from '../../get-boundary-piece-beziers.js';
19
19
  * tolerances.
20
20
  */
21
21
  function find3Prong(δs: CpNode[][], extreme: number) {
22
- let bezierPiecess = δs.map(getBoundaryPieceBeziers);
22
+ const bezierPiecess = δs.map(getBoundaryPieceBeziers);
23
23
 
24
24
  if (typeof _debug_ !== 'undefined') {
25
- let threeProngs = _debug_.generated.elems.threeProng;
25
+ const threeProngs = _debug_.generated.elems.threeProng;
26
26
  threeProngs.push(createEmptyThreeProngForDebugging());
27
27
 
28
- let d = threeProngs[threeProngs.length-1];
28
+ const d = threeProngs[threeProngs.length-1];
29
29
  d.boundaries = [];
30
- for (let bezierPieces of bezierPiecess) {
31
- let boundary: number[][][] = [];
30
+ for (const bezierPieces of bezierPiecess) {
31
+ const boundary: number[][][] = [];
32
32
  d.boundaries.push(boundary);
33
- for (let bezierPiece of bezierPieces) {
33
+ for (const bezierPiece of bezierPieces) {
34
34
  /* qqq
35
35
  let bezier = fromTo(bezierPiece.curve.ps)(
36
36
  bezierPiece.ts[0], bezierPiece.ts[1]
@@ -46,7 +46,7 @@ function find3Prong(δs: CpNode[][], extreme: number) {
46
46
  d.traces = [];
47
47
  }
48
48
 
49
- let candidateThreeProngs = [];
49
+ const candidateThreeProngs = [];
50
50
 
51
51
  // The best candidate amongst the different 'permutations' of the given δs.
52
52
  let threeProng: {
@@ -59,17 +59,17 @@ function find3Prong(δs: CpNode[][], extreme: number) {
59
59
  for (let i=1; i<δs.length-1; i++) {
60
60
  for (let k=0; k<3; k++) {
61
61
  if (typeof _debug_ !== 'undefined') {
62
- let threeProngs = _debug_.generated.elems.threeProng;
63
- let d = threeProngs[threeProngs.length-1];
64
- let trace: number[][] = [];
62
+ const threeProngs = _debug_.generated.elems.threeProng;
63
+ const d = threeProngs[threeProngs.length-1];
64
+ const trace: number[][] = [];
65
65
  d.traces.push(trace);
66
66
  }
67
67
 
68
- let threeProngInfo =
68
+ const threeProngInfo =
69
69
  find3ProngForDelta3s(δs, i, k, bezierPiecess, extreme);
70
70
  if (!threeProngInfo) { continue; }
71
71
 
72
- let { circle, ps, error, δ3s } = threeProngInfo;
72
+ const { circle, ps, error, δ3s } = threeProngInfo;
73
73
 
74
74
  if (typeof _debug_ !== 'undefined') {
75
75
  candidateThreeProngs.push({ circle, ps });
@@ -87,8 +87,8 @@ function find3Prong(δs: CpNode[][], extreme: number) {
87
87
  //threeProng.δ3s = [δs[0], δs[bestIndx+1], δs[δs.length-1]];
88
88
 
89
89
  if (typeof _debug_ !== 'undefined') {
90
- let threeProngs = _debug_.generated.elems.threeProng;
91
- let d = threeProngs[threeProngs.length-1];
90
+ const threeProngs = _debug_.generated.elems.threeProng;
91
+ const d = threeProngs[threeProngs.length-1];
92
92
 
93
93
  d.generated = _debug_.generated;
94
94
  d.circle = threeProng.circle;
@@ -13,7 +13,7 @@ function getClosestPoints(
13
13
  bezierPiece3s: BezierPiece[][]) {
14
14
 
15
15
  return bezierPiece3s.map(bezierPieces => {
16
- let posInfo = getClosestBoundaryPoint(
16
+ const posInfo = getClosestBoundaryPoint(
17
17
  bezierPieces,
18
18
  x,
19
19
  undefined, // curve
@@ -23,8 +23,8 @@ function findAndAdd2ProngsOnAllPaths(
23
23
  let cpNode;
24
24
 
25
25
  for (let k=0; k<for2Prongss.length; k++) {
26
- let for2Prongs = for2Prongss[k];
27
- let _cpNode = findAndAdd2Prongs(loops, cpGraphs, k, for2Prongs, extreme);
26
+ const for2Prongs = for2Prongss[k];
27
+ const _cpNode = findAndAdd2Prongs(loops, cpGraphs, k, for2Prongs, extreme);
28
28
  cpNode = cpNode || _cpNode;
29
29
  }
30
30
 
@@ -1,5 +1,5 @@
1
- /** @hidden */
2
- declare var _debug_: Debug;
1
+ /** @internal */
2
+ declare const _debug_: Debug;
3
3
 
4
4
  import { LlRbTree } from 'flo-ll-rb-tree';
5
5
  import { Debug } from '../../debug/debug.js';
@@ -29,28 +29,26 @@ function findAndAdd2Prongs(
29
29
  for2Prongs: IPointOnShape[],
30
30
  extreme: number) {
31
31
 
32
- let len = for2Prongs.length;
33
- let index = indexLinear(len);
34
- //let index = indexInterlaced(len); // Keep for possible future use.
32
+ const len = for2Prongs.length;
33
+ const index = indexLinear(len);
34
+ //const index = indexInterlaced(len); // Keep for possible future use.
35
35
  let cpNode_;
36
36
 
37
- let bounds = getShapeBounds(loops);
38
- let squaredDiagonalLength =
37
+ const bounds = getShapeBounds(loops);
38
+ const squaredDiagonalLength =
39
39
  (bounds.maxX.p[0] - bounds.minX.p[0])**2 +
40
40
  (bounds.maxY.p[1] - bounds.minY.p[1])**2;
41
41
 
42
42
  for (let i=0; i<len; i++) {
43
- let pos = for2Prongs[index[i]];
43
+ const pos = for2Prongs[index[i]];
44
44
 
45
- let twoProngInfo: { circle: Circle, zs: { pos: IPointOnShape, d: number }[] };
46
-
47
- twoProngInfo = find2Prong(
45
+ const twoProngInfo: { circle: Circle, zs: { pos: IPointOnShape, d: number }[] } = find2Prong(
48
46
  loops, extreme, squaredDiagonalLength, cpGraphs, pos, false, k
49
47
  );
50
48
 
51
49
  if (twoProngInfo) {
52
- let { circle, zs } = twoProngInfo;
53
- let cpNode = add2Prong(cpGraphs, circle, pos, zs, false, extreme);
50
+ const { circle, zs } = twoProngInfo;
51
+ const cpNode = add2Prong(cpGraphs, circle, pos, zs, false, extreme);
54
52
  cpNode_ = cpNode_ || cpNode;
55
53
  }
56
54
 
@@ -71,7 +69,7 @@ function findAndAdd2Prongs(
71
69
  * @param n
72
70
  */
73
71
  function indexLinear(n: number) {
74
- let arr = [];
72
+ const arr = [];
75
73
  for (let i=0; i<n; i++) {
76
74
  arr.push(i);
77
75
  }
@@ -86,8 +84,8 @@ function indexLinear(n: number) {
86
84
  * @param n
87
85
  */
88
86
  function indexInterlaced(n: number) {
89
- let source: { [index:number]: boolean } = {};
90
- let arr = [];
87
+ const source: { [index:number]: boolean } = {};
88
+ const arr = [];
91
89
  // l is the lowest power of 2 so that 2^l > n
92
90
  let l = Math.pow(2, Math.floor(Math.log2(n)));
93
91
 
@@ -1,5 +1,5 @@
1
- /** @hidden */
2
- declare var _debug_: Debug;
1
+ /** @internal */
2
+ declare const _debug_: Debug;
3
3
 
4
4
  import { LlRbTree } from 'flo-ll-rb-tree';
5
5
  import { Debug } from '../../debug/debug.js';
@@ -27,22 +27,22 @@ function findAndAddAll3Prongs(
27
27
  // Don't change this function to be recursive, the call stack may overflow
28
28
  // if there are too many two-prongs.
29
29
 
30
- let visitedEdges = new Map<CpNode, Set<CpNode>>();
30
+ const visitedEdges = new Map<CpNode, Set<CpNode>>();
31
31
 
32
- let edgesToCheck = [{ fromCpNode: undefined as CpNode, cpStart }];
32
+ const edgesToCheck = [{ fromCpNode: undefined as CpNode, cpStart }];
33
33
 
34
34
  while (edgesToCheck.length) {
35
- let { fromCpNode, cpStart } = edgesToCheck.shift();
35
+ const { fromCpNode, cpStart } = edgesToCheck.shift();
36
36
 
37
37
  markEdgeAsTaken(visitedEdges, fromCpNode, cpStart);
38
38
 
39
- for (let cpNode of cpStart.getCpNodesOnCircle()) {
39
+ for (const cpNode of cpStart.getCpNodesOnCircle()) {
40
40
 
41
41
  //if (!PointOnShape.isSharpCorner(cpNode.cp.pointOnShape)) {
42
42
  if (!isPosSharpCorner(cpNode.cp.pointOnShape)) {
43
43
  if (findAndAdd3Prongs(cpGraphs, cpNode, extreme) === undefined) {
44
44
  return; // only for debugging purposes
45
- };
45
+ }
46
46
  }
47
47
 
48
48
  if (hasEdgeBeenTaken(visitedEdges, cpNode, cpNode.next)) {
@@ -89,10 +89,10 @@ function hasEdgeBeenTaken(
89
89
  let cps: Set<CpNode>;
90
90
 
91
91
  cps = visitedEdges.get(cp1);
92
- let takenForward = cps && cps.has(cp2);
92
+ const takenForward = cps && cps.has(cp2);
93
93
 
94
94
  cps = visitedEdges.get(cp2);
95
- let takenBackwards = cps && cps.has(cp1);
95
+ const takenBackwards = cps && cps.has(cp1);
96
96
 
97
97
  return takenForward || takenBackwards;
98
98
  }
@@ -112,11 +112,11 @@ function traverseShape(cpStart: CpNode) {
112
112
  return [cpNode];
113
113
  }
114
114
 
115
- let visitedCps = [];
115
+ const visitedCps = [];
116
116
  do {
117
117
  visitedCps.push(cpNode);
118
118
 
119
- let next = cpNode.next.prevOnCircle;
119
+ const next = cpNode.next.prevOnCircle;
120
120
  cpNode = cpNode === next
121
121
  ? cpNode = cpNode.next.next // Terminal vertex
122
122
  : cpNode = next // Take last exit
@@ -179,14 +179,14 @@ function findAndAdd3Prong(
179
179
  visitedCps : CpNode[],
180
180
  extreme : number) {
181
181
 
182
- let δs = [];
183
- for (let visitedCp of visitedCps) {
182
+ const δs = [];
183
+ for (const visitedCp of visitedCps) {
184
184
  δs.push([visitedCp, visitedCp.next]);
185
185
  }
186
186
 
187
- let threeProng = find3Prong(δs, extreme);
187
+ const threeProng = find3Prong(δs, extreme);
188
188
 
189
- let orders = [];
189
+ const orders = [];
190
190
  for (let i=0; i<3; i++) {
191
191
  orders.push(
192
192
  //PointOnShape.calcOrder(threeProng.circle, threeProng.ps[i])
@@ -194,7 +194,7 @@ function findAndAdd3Prong(
194
194
  );
195
195
  }
196
196
 
197
- let circle = add3Prong(cpGraphs, orders, threeProng);
197
+ const circle = add3Prong(cpGraphs, orders, threeProng);
198
198
 
199
199
  if (typeof _debug_ !== 'undefined') {
200
200
  add3ProngDebugInfo(circle, visitedCps);
@@ -207,9 +207,9 @@ function add3ProngDebugInfo(
207
207
  circle: Circle,
208
208
  visitedCps: CpNode[]) {
209
209
 
210
- let threeProngs = _debug_.generated.elems.threeProng;
211
- let len = threeProngs.length;
212
- let data = threeProngs[len-1];
210
+ const threeProngs = _debug_.generated.elems.threeProng;
211
+ const len = threeProngs.length;
212
+ const data = threeProngs[len-1];
213
213
  data.visitedCps = visitedCps;
214
214
  data.circle = circle;
215
215
  }
@@ -21,19 +21,19 @@ function findAndAddHoleClosing2Prongs(
21
21
  cpTrees: Map<Loop,LlRbTree<CpNode>>,
22
22
  extreme: number) {
23
23
 
24
- let bounds = getShapeBounds(loops);
25
- let squaredDiagonalLength =
24
+ const bounds = getShapeBounds(loops);
25
+ const squaredDiagonalLength =
26
26
  (bounds.maxX.p[0] - bounds.minX.p[0])**2 +
27
27
  (bounds.maxY.p[1] - bounds.minY.p[1])**2;
28
28
 
29
29
  // Find the topmost points on each loop.
30
- let minYs = loops.map(getMinYPos);
30
+ const minYs = loops.map(getMinYPos);
31
31
 
32
32
  // We start at 1 since 0 is the outer (root) loop
33
33
  for (let k=1; k<minYs.length; k++) {
34
- let posSource = minYs[k];
34
+ const posSource = minYs[k];
35
35
 
36
- let holeClosingTwoProng = find2Prong(
36
+ const holeClosingTwoProng = find2Prong(
37
37
  loops, extreme, squaredDiagonalLength, cpTrees, posSource, true, k
38
38
  );
39
39
 
@@ -43,7 +43,7 @@ function findAndAddHoleClosing2Prongs(
43
43
 
44
44
  // TODO important - handle case of n-prong, i.e. more than one antipode
45
45
  // - currently we only handle case of single antipode (the general case)
46
- let { circle, zs: posAntipodes } = holeClosingTwoProng;
46
+ const { circle, zs: posAntipodes } = holeClosingTwoProng;
47
47
 
48
48
  add2Prong(cpTrees, circle, posSource, [posAntipodes[0]], true, extreme);
49
49
  }
@@ -3,12 +3,12 @@ import { IPointOnShape, isPosQuiteSharpCorner } from '../../point-on-shape.js';
3
3
 
4
4
  /** @hidden */
5
5
  function getPotential2Prongs(possPerLoop: IPointOnShape[][]) {
6
- let for2ProngsArray = [];
6
+ const for2ProngsArray = [];
7
7
 
8
- for (let poss of possPerLoop) {
9
- let for2Prongs = [];
8
+ for (const poss of possPerLoop) {
9
+ const for2Prongs = [];
10
10
 
11
- for (let pos of poss) {
11
+ for (const pos of poss) {
12
12
  if (!isPosQuiteSharpCorner(pos)) {
13
13
  for2Prongs.push(pos);
14
14
  }
@@ -3,12 +3,12 @@ import { IPointOnShape, isPosQuiteSharpCorner } from '../../point-on-shape.js';
3
3
 
4
4
  /** @hidden */
5
5
  function getSharpCorners(possPerLoop: IPointOnShape[][]) {
6
- let sharpCornersPerLoop = [];
6
+ const sharpCornersPerLoop = [];
7
7
 
8
- for (let poss of possPerLoop) {
9
- let sharpCorners = [];
8
+ for (const poss of possPerLoop) {
9
+ const sharpCorners = [];
10
10
 
11
- for (let pos of poss) {
11
+ for (const pos of poss) {
12
12
  //if (PointOnShape.isQuiteSharpCorner(pos)) {
13
13
  if (isPosQuiteSharpCorner(pos)) {
14
14
  sharpCorners.push(pos);
@@ -6,7 +6,7 @@ import { getTotalBy } from './get-total-by.js';
6
6
  /**
7
7
  * @hidden
8
8
  */
9
- let getTotalAbsoluteCurvature = getTotalBy(
9
+ const getTotalAbsoluteCurvature = getTotalBy(
10
10
  curve => (
11
11
  totalAbsoluteCurvature(curve.ps, [0,1]) +
12
12
  Math.abs(getCurvatureAtInterface(curve))
@@ -7,14 +7,14 @@ import {
7
7
  * @hidden
8
8
  */
9
9
  function getClosestSquaredDistanceToRotatedRect(ps: number[][], p: number[]) {
10
- let ds = [0,1,2,3].map(i => squaredDistanceBetweenPointAndLineSegment(
10
+ const ds = [0,1,2,3].map(i => squaredDistanceBetweenPointAndLineSegment(
11
11
  p,
12
12
  [ps[i], ps[(i+1) % 4]]
13
13
  )
14
14
  );
15
15
 
16
- let width = squaredDistanceBetween(ps[0], ps[1]);
17
- let height = squaredDistanceBetween(ps[0], ps[3]);
16
+ const width = squaredDistanceBetween(ps[0], ps[1]);
17
+ const height = squaredDistanceBetween(ps[0], ps[3]);
18
18
 
19
19
  if (ds[0] <= height && ds[2] <= height &&
20
20
  ds[1] <= width && ds[3] <= width) {
@@ -14,9 +14,9 @@ import { compareCps } from '../contact-point.js';
14
14
  */
15
15
  function getBoundaryPieceBeziers(cpNodes: CpNode[]): BezierPiece[] {
16
16
  let cpThis = cpNodes[0];
17
- let cpEnd = cpNodes[1];
17
+ const cpEnd = cpNodes[1];
18
18
 
19
- let bezierPieces = [];
19
+ const bezierPieces = [];
20
20
 
21
21
  // As opposed to going around the circle and taking the last exit
22
22
  let goStraight = true;
@@ -29,8 +29,8 @@ function getBoundaryPieceBeziers(cpNodes: CpNode[]): BezierPiece[] {
29
29
 
30
30
  goStraight = false;
31
31
 
32
- let posThis = cpThis .cp.pointOnShape;
33
- let posNext = cpThis.next.cp.pointOnShape;
32
+ const posThis = cpThis .cp.pointOnShape;
33
+ const posNext = cpThis.next.cp.pointOnShape;
34
34
 
35
35
  if (posNext.curve === posThis.curve &&
36
36
  //PointOnShape.isQuiteSharpCorner(posThis) &&
@@ -81,7 +81,7 @@ function addSkippedBeziers(
81
81
  let curveThis = curveStart;
82
82
  do {
83
83
  curveThis = curveThis.next;
84
- let tEnd = curveThis === curveEnd ? t1 : 1;
84
+ const tEnd = curveThis === curveEnd ? t1 : 1;
85
85
  bezierPieces.push({ curve: curveThis, ts: [0, tEnd] });
86
86
  } while (curveThis !== curveEnd);
87
87
  }
@@ -8,7 +8,7 @@ import { IPointOnShape } from '../point-on-shape.js';
8
8
  * @param curve
9
9
  */
10
10
  function getContactCirclesAtInterface(curve: Curve): IPointOnShape[] {
11
- let { isQuiteSharp, isQuiteDull } = getCornerAtEnd(curve);
11
+ const { isQuiteSharp, isQuiteDull } = getCornerAtEnd(curve);
12
12
 
13
13
  if (isQuiteSharp) {
14
14
  return [new PointOnShape(curve, 1)];
@@ -2,9 +2,9 @@ import { CpNode } from '../cp-node.js';
2
2
  import { traverseEdges } from '../traverse-edges.js';
3
3
 
4
4
 
5
- /** @hidden */
5
+ /** @internal */
6
6
  function getEdgesAsArray(cpNode: CpNode) {
7
- let cpNodes: CpNode[] = [];
7
+ const cpNodes: CpNode[] = [];
8
8
 
9
9
  traverseEdges(
10
10
  cpNode,
@@ -3,9 +3,9 @@ import { CpNode } from '../cp-node.js';
3
3
 
4
4
  /** @hidden */
5
5
  function getLeaves(cpNode: CpNode) {
6
- let leaves: CpNode[] = [];
6
+ const leaves: CpNode[] = [];
7
7
 
8
- let cps = cpNode.getAllOnLoop();
8
+ const cps = cpNode.getAllOnLoop();
9
9
  cps.forEach(function(cp) {
10
10
  if (cp.isTerminating()) {
11
11
  leaves.push(cp);
@@ -18,7 +18,7 @@ function getNeighbouringPoints(
18
18
  order: number,
19
19
  order2: number) {
20
20
 
21
- let cps = cpTree.findBounds(
21
+ const cps = cpTree.findBounds(
22
22
  new CpNode({ pointOnShape: pos, circle: undefined, order, order2 }, false, false)
23
23
  );
24
24
 
@@ -48,28 +48,28 @@ function isAnotherCpCloseby(
48
48
  // It seems this can be zero else the ordering should be correct
49
49
  //const DISTANCE_THRESHOLD = 0;
50
50
 
51
- let cpTree = cpTrees.get(pos.curve.loop);
52
- let cpNodes = getNeighbouringPoints(cpTree, pos, order, order2);
51
+ const cpTree = cpTrees.get(pos.curve.loop);
52
+ const cpNodes = getNeighbouringPoints(cpTree, pos, order, order2);
53
53
  if (!cpNodes[0]) { return false }
54
54
 
55
- for (let cpNode of cpNodes) {
56
- let pos2 = cpNode.cp.pointOnShape;
57
- let p1 = pos.p;
58
- let p2 = pos2.p;
55
+ for (const cpNode of cpNodes) {
56
+ const pos2 = cpNode.cp.pointOnShape;
57
+ const p1 = pos.p;
58
+ const p2 = pos2.p;
59
59
 
60
60
  if (distanceBetween(p1,p2) > DISTANCE_THRESHOLD) {
61
61
  continue;
62
62
  }
63
63
 
64
- let v1 = toUnitVector(fromTo(
64
+ const v1 = toUnitVector(fromTo(
65
65
  cpNode.cp.pointOnShape.p,
66
66
  cpNode.cp.circle.center
67
67
  ));
68
- let v2 = toUnitVector(fromTo(
68
+ const v2 = toUnitVector(fromTo(
69
69
  p1,
70
70
  circle.center
71
71
  ));
72
- let cosTheta = dot(v1,v2);
72
+ const cosTheta = dot(v1,v2);
73
73
 
74
74
  if (cosTheta > ANGLE_THRESHOLD) {
75
75
  //console.log(`%c${cosTheta} - ${distanceBetween(p1,p2)}`, `color: ${color}`);
@@ -25,29 +25,29 @@ function simplifyMatMapOnly(
25
25
  hausdorffTolerance = 1e-1,
26
26
  hausdorffSpacing = 1e0) {
27
27
 
28
- let simpleMap: Map<CpNode, { ps: number[][], ts: number[] }> = new Map();
28
+ const simpleMap: Map<CpNode, { ps: number[][], ts: number[] }> = new Map();
29
29
 
30
30
  // Start from a leaf
31
31
  while (!cpNode.isTerminating()) {
32
32
  cpNode = cpNode.next;
33
33
  }
34
34
 
35
- let branches = getBranches(cpNode, anlgeTolerance);
35
+ const branches = getBranches(cpNode, anlgeTolerance);
36
36
 
37
- let canDeletes: CpNode[] = [];
37
+ const canDeletes: CpNode[] = [];
38
38
  for (let k=0; k<branches.length; k++) {
39
- let branch = branches[k];
39
+ const branch = branches[k];
40
40
 
41
41
  // Try to remove some
42
42
  let j = 0;
43
43
  while (j < branch.length) {
44
- let i = j;
44
+ const i = j;
45
45
  while (true) {
46
46
  j++;
47
47
 
48
48
  if (j === branch.length) { break; }
49
49
 
50
- let hd = getTotalHausdorffDistance(i, j, branch, hausdorffSpacing);
50
+ const hd = getTotalHausdorffDistance(i, j, branch, hausdorffSpacing);
51
51
 
52
52
  if (hd > hausdorffTolerance) {
53
53
  break;
@@ -59,17 +59,17 @@ function simplifyMatMapOnly(
59
59
  if (i+1 === j) {
60
60
  // no simplification occured
61
61
  } else {
62
- let branStart = branch[i];
63
- let branEnd = branch[j-1];
62
+ const branStart = branch[i];
63
+ const branEnd = branch[j-1];
64
64
 
65
- let medial = toCubic(getCurveBetween(branStart, branEnd.next));
66
- let rev = medial.slice().reverse();
65
+ const medial = toCubic(getCurveBetween(branStart, branEnd.next));
66
+ const rev = medial.slice().reverse();
67
67
  let curCpNode = branStart;
68
68
  let prevT = 0;
69
69
  while (curCpNode !== branEnd) {
70
- let t = closestPointOnBezier(medial, curCpNode.next.cp.circle.center).t;
70
+ const t = closestPointOnBezier(medial, curCpNode.next.cp.circle.center).t;
71
71
  simpleMap.set(curCpNode, { ps: medial, ts: [prevT, t] });
72
- let oppositeCpNode = curCpNode.nextOnCircle.prev;
72
+ const oppositeCpNode = curCpNode.nextOnCircle.prev;
73
73
  simpleMap.set(oppositeCpNode, { ps: rev, ts: [1-t, 1-prevT] });
74
74
 
75
75
  prevT = t;
@@ -77,7 +77,7 @@ function simplifyMatMapOnly(
77
77
  }
78
78
  simpleMap.set(curCpNode, { ps: medial, ts: [prevT, 1] });
79
79
 
80
- let oppositeCpNode = curCpNode.nextOnCircle.prev;
80
+ const oppositeCpNode = curCpNode.nextOnCircle.prev;
81
81
  simpleMap.set(oppositeCpNode, { ps: rev, ts: [0, 1-prevT] });
82
82
  }
83
83
  }
@@ -93,8 +93,8 @@ function getTotalHausdorffDistance(
93
93
  branch: CpNode[],
94
94
  hausdorffSpacing: number) {
95
95
 
96
- let hds: number[] = [];
97
- let longCurve = getCurveBetween(branch[i], branch[j].next);
96
+ const hds: number[] = [];
97
+ const longCurve = getCurveBetween(branch[i], branch[j].next);
98
98
  for (let m=i; m<j+1; m++) {
99
99
  hds.push(hausdorffDistance(
100
100
  getCurveToNext(branch[m]),
@@ -1,4 +1,4 @@
1
- declare var _debug_: Debug;
1
+ declare const _debug_: Debug;
2
2
 
3
3
  import { Debug } from '../../debug/debug.js';
4
4
  import { Mat } from '../../mat.js';
@@ -8,12 +8,15 @@ import { Mat } from '../../mat.js';
8
8
  * @hidden
9
9
  * @param sat
10
10
  */
11
- function addDebugInfo(sat: Mat, timingStart: number) {
11
+ function addDebugInfo(
12
+ sat: Mat,
13
+ timingStart: number) {
14
+
12
15
  if (typeof _debug_ === 'undefined') { return; }
13
16
 
14
17
  _debug_.generated.elems.sat.push(sat);
15
18
 
16
- let timing = _debug_.generated.timing;
19
+ const timing = _debug_.generated.timing;
17
20
  timing.sats = performance.now() - timingStart;
18
21
  }
19
22
 
@@ -25,7 +25,7 @@ function addToTree(
25
25
  circle: Circle,
26
26
  depth: number) {
27
27
 
28
- let { groups, newLimits } = calcGroups(
28
+ const { groups, newLimits } = calcGroups(
29
29
  s,
30
30
  coordinate,
31
31
  limits,
@@ -34,15 +34,15 @@ function addToTree(
34
34
 
35
35
  // Create new edge if it does not exist yet.
36
36
  if (groups.length === 1 && depth !== DEPTH_LIMIT) {
37
- let group = groups[0];
37
+ const group = groups[0];
38
38
 
39
- if (!tree.trees.get(group)) {
40
- tree.trees.set(group, { trees: new Map(), circles: new Set() } );
39
+ if (!tree.trees!.get(group)) {
40
+ tree.trees!.set(group, { trees: new Map(), circles: new Set() } );
41
41
  }
42
- let t = tree.trees.get(group);
42
+ const t = tree.trees!.get(group)!;
43
43
 
44
44
  // Flip coordinates
45
- let newCoordinate = coordinate ? 0 : 1;
45
+ const newCoordinate = coordinate ? 0 : 1;
46
46
  addToTree(
47
47
  s,
48
48
  t,
@@ -55,11 +55,11 @@ function addToTree(
55
55
  return;
56
56
  }
57
57
 
58
- if (!tree.trees.get(5)) {
59
- tree.trees.set(5, { trees: new Map(), circles: new Set() } );
58
+ if (!tree.trees!.get(5)) {
59
+ tree.trees!.set(5, { trees: new Map(), circles: new Set() } );
60
60
  }
61
- let vertices = tree.trees.get(5).circles;
62
- vertices.add(circle);
61
+ const vertices = tree.trees!.get(5)!.circles;
62
+ vertices!.add(circle);
63
63
  }
64
64
 
65
65