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
@@ -13,17 +13,16 @@ import { isPosSharpCorner } from '../point-on-shape.js';
13
13
  * @param cpNode
14
14
  */
15
15
  function getEdgeDirection(cpNode: CpNode) {
16
+ const circleCenter = cpNode.cp.circle.center;
16
17
 
17
- let circleCenter = cpNode.cp.circle.center;
18
+ const cp1 = cpNode;
19
+ const cp2 = cpNode.nextOnCircle;
18
20
 
19
- let cp1 = cpNode;
20
- let cp2 = cpNode.nextOnCircle;
21
+ const pos1 = cp1.cp.pointOnShape;
22
+ const pos2 = cp2.cp.pointOnShape;
21
23
 
22
- let pos1 = cp1.cp.pointOnShape;
23
- let pos2 = cp2.cp.pointOnShape;
24
-
25
- let p1 = pos1.p;
26
- let p2 = pos2.p;
24
+ const p1 = pos1.p;
25
+ const p2 = pos2.p;
27
26
 
28
27
  let vDir;
29
28
 
@@ -46,20 +45,20 @@ function getEdgeDirection(cpNode: CpNode) {
46
45
  curve2 = pos1.curve;
47
46
  }
48
47
 
49
- let tan1 = toUnitVector(tangent(curve1.ps, 0));
50
- let tan2 = reverse( toUnitVector(tangent(curve2.ps, 1)) );
48
+ const tan1 = toUnitVector(tangent(curve1.ps, 0));
49
+ const tan2 = reverse( toUnitVector(tangent(curve2.ps, 1)) );
51
50
 
52
- let x = dot(tan1, tan2);
51
+ const x = dot(tan1, tan2);
53
52
  // Recall the identities sin(acos(x)) = sqrt(1-x^2), etc. Also
54
53
  // recall the half angle formulas. Then the rotation matrix, R, can
55
54
  // be calculated.
56
- let cosθ = Math.sqrt((1+x)/2);
57
- let sinθ = Math.sqrt((1-x)/2);
55
+ const cosθ = Math.sqrt((1+x)/2);
56
+ const sinθ = Math.sqrt((1-x)/2);
58
57
 
59
58
  vDir = rotate(sinθ, cosθ, tan2);
60
59
  }
61
60
 
62
- let v = translate(
61
+ const v = translate(
63
62
  toUnitVector(vDir),
64
63
  circleCenter
65
64
  );
@@ -27,14 +27,14 @@ import { compareCurvaturesAtInterface } from "./compare-curvatures-at-interface.
27
27
  */
28
28
  // TODO - improve and make at least 46-bitlength precondition
29
29
  function getInterfaceCcw(psI: number[][], psO: number[][]) {
30
- let lenI = psI.length;
30
+ const lenI = psI.length;
31
31
 
32
32
  // second last control point of incoming curve
33
- let p0 = psI[lenI-2];
33
+ const p0 = psI[lenI-2];
34
34
  // last control point of incoming curve / first control point of outgoing
35
- let p1 = psO[0];
35
+ const p1 = psO[0];
36
36
  // second control point of outgoing curve
37
- let p2 = psO[1];
37
+ const p2 = psO[1];
38
38
 
39
39
  /*
40
40
  if (typeof _bez_debug_ !== 'undefined') {
@@ -63,18 +63,18 @@ function getInterfaceCcw(psI: number[][], psO: number[][]) {
63
63
  */
64
64
 
65
65
  // Max one bit can be added in the calculations below due to bit-alignment
66
- let xE = p1[0] - p0[0]; // tangent x-coordinate
67
- let yE = p1[1] - p0[1]; // tangent y-coordinate
68
- let xS = p2[0] - p1[0]; // tangent x-coordinate
69
- let yS = p2[1] - p1[1]; // tangent y-coordinate
66
+ const xE = p1[0] - p0[0]; // tangent x-coordinate
67
+ const yE = p1[1] - p0[1]; // tangent y-coordinate
68
+ const xS = p2[0] - p1[0]; // tangent x-coordinate
69
+ const yS = p2[1] - p1[1]; // tangent y-coordinate
70
70
 
71
71
  // If the tangent is to be found at t === 0 or t === 1 then using a basic
72
72
  // property of bezier curves we can find the tangents easily as below
73
73
 
74
74
  // (non-normalized) tangent of incoming curve at t === 1
75
- let tangentAtEnd = [xE,yE];
75
+ const tangentAtEnd = [xE,yE];
76
76
  // (non-normalized) tangent of outgoing curve at t === 0
77
- let tangentAtStart = [xS,yS];
77
+ const tangentAtStart = [xS,yS];
78
78
 
79
79
  // The cross calculated below will have a max bitlength of
80
80
  // (2*(maxBitLength+1))+1 === e.g. (2*(25+1)) + 1 === 53
@@ -82,7 +82,7 @@ function getInterfaceCcw(psI: number[][], psO: number[][]) {
82
82
  //let crossTangents = cross(tangentAtEnd, tangentAtStart);
83
83
 
84
84
  // The cross below is exact by adaptive infinite precision
85
- let crossTangents = orient2d(p0, p1, p2);
85
+ const crossTangents = orient2d(p0, p1, p2);
86
86
 
87
87
  if (crossTangents !== 0) {
88
88
  return crossTangents;
@@ -91,7 +91,7 @@ function getInterfaceCcw(psI: number[][], psO: number[][]) {
91
91
  // The dot calculated below will have a max bitlength of
92
92
  // (2*(maxBitLength+1))+1 === e.g. (2*(25+1)) + 1 === 53
93
93
  // If the preconditions are met it is exact
94
- let dotTangents = dot(tangentAtEnd, tangentAtStart);
94
+ const dotTangents = dot(tangentAtEnd, tangentAtStart);
95
95
  if (dotTangents > 0) {
96
96
  // Curves go in same direction at interface - neither clock or
97
97
  // anti-clockwise.
@@ -17,10 +17,10 @@ function getLoopsMetrics(loops: number[][][][]): {
17
17
  let minY = Number.POSITIVE_INFINITY;
18
18
  let maxY = Number.NEGATIVE_INFINITY;
19
19
 
20
- for (let loop of loops) { for (let ps of loop) { for (let p of ps) {
21
- let x = p[0];
22
- let y = p[1];
23
- let c = max(abs(x), abs(y));
20
+ for (const loop of loops) { for (const ps of loop) { for (const p of ps) {
21
+ const x = p[0];
22
+ const y = p[1];
23
+ const c = max(abs(x), abs(y));
24
24
  if (c > maxCoordinate) { maxCoordinate = c; }
25
25
  if (x < minX) { minX = x; }
26
26
  if (x > maxX) { maxX = x; }
@@ -28,9 +28,9 @@ function getLoopsMetrics(loops: number[][][][]): {
28
28
  if (y > maxY) { maxY = y; }
29
29
  } } }
30
30
 
31
- let width = maxX - minX;
32
- let height = maxY - minY;
33
- let maxRadius = max(width, height);
31
+ const width = maxX - minX;
32
+ const height = maxY - minY;
33
+ const maxRadius = max(width, height);
34
34
 
35
35
  return { maxCoordinate, maxRadius };
36
36
  }
package/src/loop.ts CHANGED
@@ -17,9 +17,9 @@ interface Loop {
17
17
  * @param beziers A pre-ordered array of bezier curves to add initially.
18
18
  */
19
19
  function loopFromBeziers(beziers: number[][][] = []) {
20
- let curves: Curve[] = [];
20
+ const curves: Curve[] = [];
21
21
 
22
- let loop: Loop = {
22
+ const loop: Loop = {
23
23
  beziers,
24
24
  curves
25
25
  };
@@ -30,7 +30,7 @@ function loopFromBeziers(beziers: number[][][] = []) {
30
30
 
31
31
  for (let i=0; i<beziers.length; i++) {
32
32
 
33
- let curve: Curve = {
33
+ const curve: Curve = {
34
34
  loop,
35
35
  ps: beziers[i],
36
36
  prev,
@@ -45,7 +45,7 @@ function loopFromBeziers(beziers: number[][][] = []) {
45
45
  }
46
46
 
47
47
  // close loop
48
- let lastCurve = curves[curves.length-1];
48
+ const lastCurve = curves[curves.length-1];
49
49
  curves[0].prev = lastCurve;
50
50
  lastCurve.next = curves[0];
51
51
 
@@ -23,16 +23,16 @@ function addToCpGraph(
23
23
  poss : IPointOnShape[],
24
24
  neighbors? : CpNode[][]) {
25
25
 
26
- let newCps = poss.map((pos, i) => {
27
- let cpTree = cpTrees.get(pos.curve.loop);
26
+ const newCps = poss.map((pos, i) => {
27
+ const cpTree = cpTrees.get(pos.curve.loop);
28
28
 
29
- let newCp_: ContactPoint = { pointOnShape: pos, circle, order: orders[i], order2: 0 };
29
+ const newCp_: ContactPoint = { pointOnShape: pos, circle, order: orders[i], order2: 0 };
30
30
 
31
- let neighboringCp = neighbors
31
+ const neighboringCp = neighbors
32
32
  ? neighbors[i]
33
33
  : getNeighbouringPoints(cpTree, pos, orders[i], 0);
34
34
 
35
- let newCp = CpNode.insert(
35
+ const newCp = CpNode.insert(
36
36
  false,
37
37
  false,
38
38
  cpTree,
@@ -43,10 +43,10 @@ function addToCpGraph(
43
43
  return newCp;
44
44
  });
45
45
 
46
- let len = poss.length;
46
+ const len = poss.length;
47
47
  for (let i=0; i<len; i++) {
48
- let indxPrev = i === 0 ? len-1 : i-1;
49
- let indxNext = i === len-1 ? 0 : i+1;
48
+ const indxPrev = i === 0 ? len-1 : i-1;
49
+ const indxNext = i === len-1 ? 0 : i+1;
50
50
 
51
51
  newCps[i].prevOnCircle = newCps[indxPrev];
52
52
  newCps[i].nextOnCircle = newCps[indxNext];
@@ -33,8 +33,7 @@ function closestPointsOnCurve(
33
33
  : _poly;
34
34
 
35
35
  // let roots: Omit<RootInterval,'multiplicity'>[] = allRootsMultiWithErrBounds(
36
- let roots: Omit<RootInterval,'multiplicity'>[];
37
- roots = allRootsCertified(poly, tS, tE);
36
+ const roots: Omit<RootInterval,'multiplicity'>[] = allRootsCertified(poly, tS, tE);
38
37
 
39
38
  // Also test the endpoints
40
39
  let push0 = true;
@@ -64,12 +63,12 @@ function closestPointsOnCurve(
64
63
  roots.push({ tS: tE, tE: tE });
65
64
  }
66
65
 
67
- let ps = roots.map(
66
+ const ps = roots.map(
68
67
  root => {
69
- let tS = root.tS;
70
- let tE = root.tE;
68
+ const tS = root.tS;
69
+ const tE = root.tE;
71
70
  // TODO - tS, tE should always stay within [0,1] - modify findRootsMulti
72
- let t = tS < 0
71
+ const t = tS < 0
73
72
  ? 0
74
73
  : tE > 1 ? 1 : (tS + tE)/2;
75
74
  // TODO - why does evalDeCasteljau not work here?
@@ -17,7 +17,7 @@ function cullBezierPieces(
17
17
  const CULL_THRESHOLD = 0;
18
18
 
19
19
  if (bezierPieces.length > CULL_THRESHOLD) {
20
- let bestSquaredDistance = getBestDistanceSquared(
20
+ const bestSquaredDistance = getBestDistanceSquared(
21
21
  bezierPieces, p
22
22
  );
23
23
  bezierPieces = cullByLooseBoundingBox(
@@ -16,15 +16,15 @@ function cullByLooseBoundingBox(
16
16
  p: number[],
17
17
  dSquared: number) {
18
18
 
19
- let candidateBezierPieces = [];
19
+ const candidateBezierPieces = [];
20
20
 
21
21
  for (let i=0; i<bezierPieces.length; i++) {
22
- let bezierPiece = bezierPieces[i];
23
- let ps = bezierPiece.curve.ps;
22
+ const bezierPiece = bezierPieces[i];
23
+ const ps = bezierPiece.curve.ps;
24
24
 
25
- let boundingBox = getBoundingBox_(ps);
25
+ const boundingBox = getBoundingBox_(ps);
26
26
 
27
- let d = getClosestSquareDistanceToRect(
27
+ const d = getClosestSquareDistanceToRect(
28
28
  boundingBox,
29
29
  p
30
30
  );
@@ -20,14 +20,14 @@ function cullByTightBoundingBox(
20
20
  p: number[],
21
21
  bestSquaredDistance: number) {
22
22
 
23
- let candidateBezierPieces = [];
23
+ const candidateBezierPieces = [];
24
24
 
25
25
  for (let i=0; i<bezierPieces.length; i++) {
26
- let bezierPiece = bezierPieces[i];
27
- let ps = bezierPiece.curve.ps;
26
+ const bezierPiece = bezierPieces[i];
27
+ const ps = bezierPiece.curve.ps;
28
28
 
29
- let tightBoundingBox = getBoundingBoxTight_(ps);
30
- let d = getClosestSquaredDistanceToRotatedRect(
29
+ const tightBoundingBox = getBoundingBoxTight_(ps);
30
+ const d = getClosestSquaredDistanceToRotatedRect(
31
31
  tightBoundingBox,
32
32
  p
33
33
  );
@@ -14,14 +14,14 @@ function getBestDistanceSquared(
14
14
 
15
15
  let bestSquaredDistance = Number.POSITIVE_INFINITY;
16
16
  for (let i=0; i<bezierPieces.length; i++) {
17
- let bezierPiece = bezierPieces[i];
17
+ const bezierPiece = bezierPieces[i];
18
18
 
19
- let ps = bezierPiece.curve.ps;
19
+ const ps = bezierPiece.curve.ps;
20
20
 
21
- let p1 = evalDeCasteljau(ps, bezierPiece.ts[0]);
22
- let p2 = evalDeCasteljau(ps, bezierPiece.ts[1]);
21
+ const p1 = evalDeCasteljau(ps, bezierPiece.ts[0]);
22
+ const p2 = evalDeCasteljau(ps, bezierPiece.ts[1]);
23
23
 
24
- let d = Math.min(
24
+ const d = Math.min(
25
25
  squaredDistanceBetween(p, p1),
26
26
  squaredDistanceBetween(p, p2)
27
27
  );
@@ -21,20 +21,20 @@ function getCloseBoundaryPoints(
21
21
  y: IPointOnShape,
22
22
  distance: number) {
23
23
 
24
- let touchedCurve = y.curve;
25
- let t = y.t;
26
- let p_ = y.p;
24
+ const touchedCurve = y.curve;
25
+ const t = y.t;
26
+ const p_ = y.p;
27
27
 
28
28
  bezierPieces = cullBezierPieces(bezierPieces, point);
29
29
 
30
30
  // TODO - integrate with is-another-cp-closeby - we MUST check angle too!
31
- let DISTANCE_TOLERANCE = 1e-9;
32
- let posInfos: { pos: IPointOnShape; d: number }[] = [];
31
+ const DISTANCE_TOLERANCE = 1e-9;
32
+ const posInfos: { pos: IPointOnShape; d: number }[] = [];
33
33
  for (let i=0; i<bezierPieces.length; i++) {
34
- let bezierPiece = bezierPieces[i];
34
+ const bezierPiece = bezierPieces[i];
35
35
 
36
36
  // TOOD - important - should be able to return multiple points
37
- let ps = closestPointsOnCurve(
37
+ const ps = closestPointsOnCurve(
38
38
  bezierPiece.curve,
39
39
  point,
40
40
  bezierPiece.ts,
@@ -45,8 +45,8 @@ function getCloseBoundaryPoints(
45
45
  //if (ps === undefined) { continue; }
46
46
 
47
47
  for (let j=0; j<ps.length; j++) {
48
- let p = ps[j];
49
- let d = distanceBetween(p.p, point);
48
+ const p = ps[j];
49
+ const d = distanceBetween(p.p, point);
50
50
 
51
51
  let curve = bezierPiece.curve;
52
52
  let t_= p.t;
@@ -67,23 +67,23 @@ function getCloseBoundaryPoints(
67
67
  // TODO - in future remove all these checks and join n-prongs when they
68
68
  // are being added - much simpler and more symmetric. Remeber order when
69
69
  // comparing closeness!
70
- let indexesToCheck: number[] = [];
70
+ const indexesToCheck: number[] = [];
71
71
  for (let i=0; i<posInfos.length; i++) {
72
- let pi = posInfos[i];
72
+ const pi = posInfos[i];
73
73
  // Only check if they are close to the edges. Why??
74
74
  //if (pi.pos.t < 1e-2 || 1-pi.pos.t < 1e-2) {
75
75
  indexesToCheck.push(i);
76
76
  //}
77
77
  }
78
- let indexesToRemove: number[] = [];
78
+ const indexesToRemove: number[] = [];
79
79
  for (let i=0; i<indexesToCheck.length; i++) {
80
80
  for (let j=i+1; j<indexesToCheck.length; j++) {
81
81
  if (i === j) { continue; }
82
- let p1 = posInfos[indexesToCheck[i]].pos.p;
83
- let p2 = posInfos[indexesToCheck[j]].pos.p;
82
+ const p1 = posInfos[indexesToCheck[i]].pos.p;
83
+ const p2 = posInfos[indexesToCheck[j]].pos.p;
84
84
  // Below checks for source point too - similar to
85
85
  // isAnotherCpCloseBy
86
- let p3 = p_;
86
+ const p3 = p_;
87
87
  if ((Math.abs(p1[0] - p2[0]) < 1e-6 &&
88
88
  Math.abs(p1[1] - p2[1]) < 1e-6) ||
89
89
 
@@ -27,9 +27,9 @@ function getClosestBoundaryPoint(
27
27
  let bestDistance = Number.POSITIVE_INFINITY;
28
28
  let posInfo: { pos: IPointOnShape; d: number };
29
29
  for (let i=0; i<bezierPieces.length; i++) {
30
- let bezierPiece = bezierPieces[i];
30
+ const bezierPiece = bezierPieces[i];
31
31
 
32
- let ps = closestPointsOnCurve(
32
+ const ps = closestPointsOnCurve(
33
33
  bezierPiece.curve,
34
34
  point,
35
35
  bezierPiece.ts,
@@ -37,11 +37,11 @@ function getClosestBoundaryPoint(
37
37
  t
38
38
  );
39
39
 
40
- let p = getObjClosestTo(point, ps, p => p.p)
40
+ const p = getObjClosestTo(point, ps, p => p.p)
41
41
 
42
42
  if (p === undefined) { continue; }
43
43
 
44
- let d = distanceBetween(p.p, point);
44
+ const d = distanceBetween(p.p, point);
45
45
 
46
46
  let curve = bezierPiece.curve;
47
47
  let t_= p.t;
@@ -20,12 +20,12 @@ function cmpCpOnδ(
20
20
  return 1;
21
21
  }
22
22
 
23
- let cpBef = δ[0].cp;
24
- let cpAft = δ[1].cp;
23
+ const cpBef = δ[0].cp;
24
+ const cpAft = δ[1].cp;
25
25
 
26
- let cmp = compareCps(cpBef, cpAft);
27
- let cmpPrev = compareCps(cpBef, cp);
28
- let cmpNext = compareCps(cp, cpAft);
26
+ const cmp = compareCps(cpBef, cpAft);
27
+ const cmpPrev = compareCps(cpBef, cp);
28
+ const cmpNext = compareCps(cp, cpAft);
29
29
 
30
30
  if (cmp < 0) {
31
31
  if (cmpPrev > 0 || cmpNext > 0) {
@@ -8,14 +8,14 @@ import { Loop } from '../loop.js';
8
8
  * @param cpNode
9
9
  */
10
10
  function createNewCpTree(cpNode: CpNode) {
11
- let newCpTrees: Map<Loop,LlRbTree<CpNode>> = new Map();
11
+ const newCpTrees: Map<Loop,LlRbTree<CpNode>> = new Map();
12
12
 
13
- let cps = cpNode.getAllOnLoop();
13
+ const cps = cpNode.getAllOnLoop();
14
14
 
15
15
  cps.forEach(f);
16
16
 
17
17
  function f(cpNode: CpNode) {
18
- let loop = cpNode.cp.pointOnShape.curve.loop;
18
+ const loop = cpNode.cp.pointOnShape.curve.loop;
19
19
  let cpTree = newCpTrees.get(loop);
20
20
  if (!cpTree) {
21
21
  // qqq cpTree = new LlRbTree(CpNode.comparator, [], true);
@@ -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';
@@ -44,10 +44,10 @@ function add1Prong(
44
44
  }
45
45
 
46
46
  //let circle = PointOnShape.getOsculatingCircle(maxOsculatingCircleRadius, pos);
47
- let circle = getOsculatingCircle(maxOsculatingCircleRadius, pos);
47
+ const circle = getOsculatingCircle(maxOsculatingCircleRadius, pos);
48
48
 
49
- //let order = PointOnShape.calcOrder(circle, pos);
50
- let order = calcPosOrder(circle, pos);
49
+ //const order = PointOnShape.calcOrder(circle, pos);
50
+ const order = calcPosOrder(circle, pos);
51
51
  // Make sure there isn't already a ContactPoint close by - it can cause
52
52
  // floating point stability issues.
53
53
  if (isAnotherCpCloseby(cpGraphs, pos, circle, order, 0, 1000, 'magenta')) {
@@ -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 { exponent } from 'big-float-ts';
@@ -34,8 +34,8 @@ function add2Prong(
34
34
  extreme : number): CpNode {
35
35
 
36
36
  //let orderSource = PointOnShape.calcOrder(circle, posSource);
37
- let orderSource = calcPosOrder(circle, posSource);
38
- let orderAntipodes = posAntipodes.map(
37
+ const orderSource = calcPosOrder(circle, posSource);
38
+ const orderAntipodes = posAntipodes.map(
39
39
  posAntipode => {
40
40
  //console.log(circle.center)
41
41
  //return PointOnShape.calcOrder(circle, posAntipode.pos);
@@ -58,8 +58,8 @@ function add2Prong(
58
58
 
59
59
  let isCloseByAntipodes = false;
60
60
  for (let i=0; i<posAntipodes.length; i++) {
61
- let posAntipode = posAntipodes[i];
62
- let orderAntipode = orderAntipodes[i];
61
+ const posAntipode = posAntipodes[i];
62
+ const orderAntipode = orderAntipodes[i];
63
63
 
64
64
  if (isAnotherCpCloseby(cpGraphs, posAntipode.pos, circle, orderAntipode, 0, extreme, 'red')) {
65
65
  isCloseByAntipodes = true;
@@ -80,22 +80,22 @@ function add2Prong(
80
80
  }
81
81
 
82
82
  // Antipode
83
- let newCpAntipodes: CpNode[] = [];
84
- let cpAntipodes: ContactPoint[] = [];
85
- let cpTreeAntipodes: LlRbTree<CpNode>[] = [];
86
- let deltaAntipodes: CpNode[][] = [];
87
- let loopAntipodes: Loop[] = [];
83
+ const newCpAntipodes: CpNode[] = [];
84
+ const cpAntipodes: ContactPoint[] = [];
85
+ const cpTreeAntipodes: LlRbTree<CpNode>[] = [];
86
+ const deltaAntipodes: CpNode[][] = [];
87
+ const loopAntipodes: Loop[] = [];
88
88
  for (let i=0; i<posAntipodes.length; i++) {
89
- let posAntipode = posAntipodes[i];
90
- let orderAntipode = orderAntipodes[i];
89
+ const posAntipode = posAntipodes[i];
90
+ const orderAntipode = orderAntipodes[i];
91
91
 
92
- let cpAntipode: ContactPoint = { pointOnShape: posAntipode.pos, circle, order: orderAntipode, order2: 0 };
92
+ const cpAntipode: ContactPoint = { pointOnShape: posAntipode.pos, circle, order: orderAntipode, order2: 0 };
93
93
  cpAntipodes.push(cpAntipode);
94
- let loopAntipode = posAntipode.pos.curve.loop;
94
+ const loopAntipode = posAntipode.pos.curve.loop;
95
95
  loopAntipodes.push(loopAntipode);
96
- let cpTreeAntipode = cpGraphs.get(loopAntipode);
96
+ const cpTreeAntipode = cpGraphs.get(loopAntipode);
97
97
  cpTreeAntipodes.push(cpTreeAntipode);
98
- let deltaAntipode = getNeighbouringPoints(
98
+ const deltaAntipode = getNeighbouringPoints(
99
99
  cpTreeAntipode, posAntipode.pos, orderAntipode, 0
100
100
  );
101
101
  deltaAntipodes.push(deltaAntipode);
@@ -111,13 +111,13 @@ function add2Prong(
111
111
 
112
112
 
113
113
  // Source
114
- let cpSource: ContactPoint = { pointOnShape: posSource, circle, order: orderSource, order2: 0 };
115
- let loopSource = posSource.curve.loop;
116
- let cpTreeSource = cpGraphs.get(loopSource);
117
- let deltaSource = getNeighbouringPoints(
114
+ const cpSource: ContactPoint = { pointOnShape: posSource, circle, order: orderSource, order2: 0 };
115
+ const loopSource = posSource.curve.loop;
116
+ const cpTreeSource = cpGraphs.get(loopSource);
117
+ const deltaSource = getNeighbouringPoints(
118
118
  cpTreeSource, posSource, orderSource, 0
119
119
  );
120
- let newCpSource = CpNode.insert(
120
+ const newCpSource = CpNode.insert(
121
121
  holeClosing,
122
122
  false,
123
123
  cpTreeSource,
@@ -134,19 +134,19 @@ function add2Prong(
134
134
  newCpAntipodes[0].prevOnCircle = newCpSource;
135
135
  newCpAntipodes[0].nextOnCircle = newCpSource;
136
136
  } else {
137
- let cpNodes = newCpAntipodes.slice();
137
+ const cpNodes = newCpAntipodes.slice();
138
138
  cpNodes.push(newCpSource);
139
139
 
140
140
  // Order points according to their angle with the x-axis
141
141
  cpNodes.sort(byAngle(circle));
142
142
 
143
143
  for (let i=0; i<cpNodes.length; i++) {
144
- let iNext = (i+1 === cpNodes.length) ? 0 : i+1;
145
- let iPrev = (i === 0) ? cpNodes.length-1 : i-1;
144
+ const iNext = (i+1 === cpNodes.length) ? 0 : i+1;
145
+ const iPrev = (i === 0) ? cpNodes.length-1 : i-1;
146
146
 
147
- let cpNodeCurr = cpNodes[i];
148
- let cpNodeNext = cpNodes[iNext];
149
- let cpNodePrev = cpNodes[iPrev];
147
+ const cpNodeCurr = cpNodes[i];
148
+ const cpNodeNext = cpNodes[iNext];
149
+ const cpNodePrev = cpNodes[iPrev];
150
150
 
151
151
  cpNodeCurr.nextOnCircle = cpNodeNext;
152
152
  cpNodeCurr.prevOnCircle = cpNodePrev;
@@ -157,11 +157,11 @@ function add2Prong(
157
157
  if (holeClosing) {
158
158
  // TODO - important - take care of case where there are more than 1 antipode
159
159
  // Duplicate ContactPoints
160
- let cpB2: ContactPoint = { pointOnShape: posAntipodes[0].pos, circle, order: cpAntipodes[0].order, order2: +1 };
161
- let newCpB2Node = CpNode.insert(true, false, cpTreeAntipodes[0], cpB2, newCpAntipodes[0]);
160
+ const cpB2: ContactPoint = { pointOnShape: posAntipodes[0].pos, circle, order: cpAntipodes[0].order, order2: +1 };
161
+ const newCpB2Node = CpNode.insert(true, false, cpTreeAntipodes[0], cpB2, newCpAntipodes[0]);
162
162
 
163
- let cpB1: ContactPoint = { pointOnShape: posSource, circle, order: cpSource.order, order2: -1 };
164
- let newCpB1Node = CpNode.insert(true, false, cpTreeSource, cpB1, newCpSource.prev);
163
+ const cpB1: ContactPoint = { pointOnShape: posSource, circle, order: cpSource.order, order2: -1 };
164
+ const newCpB1Node = CpNode.insert(true, false, cpTreeSource, cpB1, newCpSource.prev);
165
165
 
166
166
  // Connect graph
167
167
  newCpB1Node.prevOnCircle = newCpB2Node;
@@ -185,7 +185,7 @@ function add2Prong(
185
185
  elems = _debug_.generated.elems['twoProng_regular'];
186
186
  }
187
187
 
188
- let elem = elems[elems.length-1];
188
+ const elem = elems[elems.length-1];
189
189
 
190
190
  if (!newCpSource) { console.log('asas')}
191
191
  elem.cpNode = newCpSource;
@@ -230,10 +230,10 @@ function getSize(x: number, y: number) {
230
230
 
231
231
  /** @hidden */
232
232
  function byAngle(circle: Circle) {
233
- let c = circle.center;
234
- let r = circle.radius;
233
+ const c = circle.center;
234
+ const r = circle.radius;
235
235
 
236
- let exp = exponent(r);
236
+ const exp = exponent(r);
237
237
 
238
238
  return function(_a: CpNode, _b: CpNode) {
239
239
  let a = _a.cp.pointOnShape.p;
@@ -244,14 +244,14 @@ function byAngle(circle: Circle) {
244
244
  b = [b[0]-c[0], b[1]-c[1]];
245
245
 
246
246
  // Scale
247
- let ax = scale(a[0], exp);
248
- let ay = scale(a[1], exp);
249
- let bx = scale(b[0], exp);
250
- let by = scale(b[1], exp);
247
+ const ax = scale(a[0], exp);
248
+ const ay = scale(a[1], exp);
249
+ const bx = scale(b[0], exp);
250
+ const by = scale(b[1], exp);
251
251
 
252
252
  // Get 'size'
253
- let sa = getSize(ax, ay);
254
- let sb = getSize(bx, by);
253
+ const sa = getSize(ax, ay);
254
+ const sb = getSize(bx, by);
255
255
 
256
256
  return sb - sa;
257
257
  }
@@ -24,7 +24,7 @@ function add3Prong(
24
24
  δ3s: CpNode[][]
25
25
  }) {
26
26
 
27
- let { circle, ps: poss, δ3s } = threeProng;
27
+ const { circle, ps: poss, δ3s } = threeProng;
28
28
 
29
29
  // Keep for possible future debugging.
30
30
  /*