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,15 +1,15 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
2
- import { Loop } from '../../loop.js';
3
- import { CpNode } from '../../cp-node.js';
4
- import { IPointOnShape } from '../../point-on-shape.js';
5
- /**
6
- * @hidden
7
- * Add 2 prongs. See comments on the add2Prong function.
8
- * @param loops
9
- * @param cpGraphs
10
- * @param for2Prongss
11
- * @param extreme The maximum coordinate value used to calculate floating point
12
- * tolerances.
13
- */
14
- declare function findAndAdd2ProngsOnAllPaths(loops: Loop[], cpGraphs: Map<Loop, LlRbTree<CpNode>>, for2Prongss: IPointOnShape[][], extreme: number): CpNode;
15
- export { findAndAdd2ProngsOnAllPaths };
1
+ import { LlRbTree } from 'flo-ll-rb-tree';
2
+ import { Loop } from '../../loop.js';
3
+ import { CpNode } from '../../cp-node.js';
4
+ import { IPointOnShape } from '../../point-on-shape.js';
5
+ /**
6
+ * @hidden
7
+ * Add 2 prongs. See comments on the add2Prong function.
8
+ * @param loops
9
+ * @param cpGraphs
10
+ * @param for2Prongss
11
+ * @param extreme The maximum coordinate value used to calculate floating point
12
+ * tolerances.
13
+ */
14
+ declare function findAndAdd2ProngsOnAllPaths(loops: Loop[], cpGraphs: Map<Loop, LlRbTree<CpNode>>, for2Prongss: IPointOnShape[][], extreme: number): CpNode;
15
+ export { findAndAdd2ProngsOnAllPaths };
@@ -1,21 +1,21 @@
1
- import { findAndAdd2Prongs } from './find-and-add-2-prongs.js';
2
- /**
3
- * @hidden
4
- * Add 2 prongs. See comments on the add2Prong function.
5
- * @param loops
6
- * @param cpGraphs
7
- * @param for2Prongss
8
- * @param extreme The maximum coordinate value used to calculate floating point
9
- * tolerances.
10
- */
11
- function findAndAdd2ProngsOnAllPaths(loops, cpGraphs, for2Prongss, extreme) {
12
- let cpNode;
13
- for (let k = 0; k < for2Prongss.length; k++) {
14
- let for2Prongs = for2Prongss[k];
15
- let _cpNode = findAndAdd2Prongs(loops, cpGraphs, k, for2Prongs, extreme);
16
- cpNode = cpNode || _cpNode;
17
- }
18
- return cpNode;
19
- }
20
- export { findAndAdd2ProngsOnAllPaths };
1
+ import { findAndAdd2Prongs } from './find-and-add-2-prongs.js';
2
+ /**
3
+ * @hidden
4
+ * Add 2 prongs. See comments on the add2Prong function.
5
+ * @param loops
6
+ * @param cpGraphs
7
+ * @param for2Prongss
8
+ * @param extreme The maximum coordinate value used to calculate floating point
9
+ * tolerances.
10
+ */
11
+ function findAndAdd2ProngsOnAllPaths(loops, cpGraphs, for2Prongss, extreme) {
12
+ let cpNode;
13
+ for (let k = 0; k < for2Prongss.length; k++) {
14
+ const for2Prongs = for2Prongss[k];
15
+ const _cpNode = findAndAdd2Prongs(loops, cpGraphs, k, for2Prongs, extreme);
16
+ cpNode = cpNode || _cpNode;
17
+ }
18
+ return cpNode;
19
+ }
20
+ export { findAndAdd2ProngsOnAllPaths };
21
21
  //# sourceMappingURL=find-and-add-2-prongs-on-all-paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-and-add-2-prongs-on-all-paths.js","sourceRoot":"","sources":["../../../src/mat/find-mat/find-and-add-2-prongs-on-all-paths.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D;;;;;;;;GAQG;AACH,SAAS,2BAA2B,CAC5B,KAAa,EACb,QAAoC,EACpC,WAA8B,EAC9B,OAAe;IAEnB,IAAI,MAAM,CAAC;IAEX,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC;KAC9B;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,OAAO,EAAE,2BAA2B,EAAE,CAAA"}
1
+ {"version":3,"file":"find-and-add-2-prongs-on-all-paths.js","sourceRoot":"","sources":["../../../src/mat/find-mat/find-and-add-2-prongs-on-all-paths.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D;;;;;;;;GAQG;AACH,SAAS,2BAA2B,CAC5B,KAAa,EACb,QAAoC,EACpC,WAA8B,EAC9B,OAAe;IAEnB,IAAI,MAAM,CAAC;IAEX,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC;KAC9B;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,OAAO,EAAE,2BAA2B,EAAE,CAAA"}
@@ -1,16 +1,16 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
2
- import { Loop } from '../../loop.js';
3
- import { CpNode } from '../../cp-node.js';
4
- import { IPointOnShape } from '../../point-on-shape.js';
5
- /**
6
- * @hidden
7
- * Find and add two-prongs.
8
- * @param loops
9
- * @param cpGraphs
10
- * @param k
11
- * @param for2Prongs
12
- * @param extreme The maximum coordinate value used to calculate floating point
13
- * tolerances.
14
- */
15
- declare function findAndAdd2Prongs(loops: Loop[], cpGraphs: Map<Loop, LlRbTree<CpNode>>, k: number, for2Prongs: IPointOnShape[], extreme: number): CpNode;
16
- export { findAndAdd2Prongs };
1
+ import { LlRbTree } from 'flo-ll-rb-tree';
2
+ import { Loop } from '../../loop.js';
3
+ import { CpNode } from '../../cp-node.js';
4
+ import { IPointOnShape } from '../../point-on-shape.js';
5
+ /**
6
+ * @hidden
7
+ * Find and add two-prongs.
8
+ * @param loops
9
+ * @param cpGraphs
10
+ * @param k
11
+ * @param for2Prongs
12
+ * @param extreme The maximum coordinate value used to calculate floating point
13
+ * tolerances.
14
+ */
15
+ declare function findAndAdd2Prongs(loops: Loop[], cpGraphs: Map<Loop, LlRbTree<CpNode>>, k: number, for2Prongs: IPointOnShape[], extreme: number): CpNode;
16
+ export { findAndAdd2Prongs };
@@ -1,75 +1,74 @@
1
- import { getShapeBounds } from '../../svg/get-shape-bounds.js';
2
- import { find2Prong } from './find-2-prong/find-2-prong.js';
3
- import { add2Prong } from './add-2-prong.js';
4
- /**
5
- * @hidden
6
- * Find and add two-prongs.
7
- * @param loops
8
- * @param cpGraphs
9
- * @param k
10
- * @param for2Prongs
11
- * @param extreme The maximum coordinate value used to calculate floating point
12
- * tolerances.
13
- */
14
- function findAndAdd2Prongs(loops, cpGraphs, k, for2Prongs, extreme) {
15
- let len = for2Prongs.length;
16
- let index = indexLinear(len);
17
- //let index = indexInterlaced(len); // Keep for possible future use.
18
- let cpNode_;
19
- let bounds = getShapeBounds(loops);
20
- let squaredDiagonalLength = (bounds.maxX.p[0] - bounds.minX.p[0]) ** 2 +
21
- (bounds.maxY.p[1] - bounds.minY.p[1]) ** 2;
22
- for (let i = 0; i < len; i++) {
23
- let pos = for2Prongs[index[i]];
24
- let twoProngInfo;
25
- twoProngInfo = find2Prong(loops, extreme, squaredDiagonalLength, cpGraphs, pos, false, k);
26
- if (twoProngInfo) {
27
- let { circle, zs } = twoProngInfo;
28
- let cpNode = add2Prong(cpGraphs, circle, pos, zs, false, extreme);
29
- cpNode_ = cpNode_ || cpNode;
30
- }
31
- if (typeof _debug_ !== 'undefined') {
32
- if (i + 1 === _debug_.directives.stopAfterTwoProngsNum) {
33
- return undefined;
34
- }
35
- }
36
- }
37
- return cpNode_;
38
- }
39
- /**
40
- * @hidden
41
- * Simple linear array indexing.
42
- * @param n
43
- */
44
- function indexLinear(n) {
45
- let arr = [];
46
- for (let i = 0; i < n; i++) {
47
- arr.push(i);
48
- }
49
- return arr;
50
- }
51
- /**
52
- * @hidden
53
- * Creates a kind of interlaced index vector.
54
- * @param n
55
- */
56
- function indexInterlaced(n) {
57
- let source = {};
58
- let arr = [];
59
- // l is the lowest power of 2 so that 2^l > n
60
- let l = Math.pow(2, Math.floor(Math.log2(n)));
61
- while (l >= 1) {
62
- let k = 0;
63
- while (k < n) {
64
- if (!source[k]) {
65
- arr.push(k);
66
- source[k] = true;
67
- }
68
- k = k + l;
69
- }
70
- l = l / 2;
71
- }
72
- return arr;
73
- }
74
- export { findAndAdd2Prongs };
1
+ import { getShapeBounds } from '../../svg/get-shape-bounds.js';
2
+ import { find2Prong } from './find-2-prong/find-2-prong.js';
3
+ import { add2Prong } from './add-2-prong.js';
4
+ /**
5
+ * @hidden
6
+ * Find and add two-prongs.
7
+ * @param loops
8
+ * @param cpGraphs
9
+ * @param k
10
+ * @param for2Prongs
11
+ * @param extreme The maximum coordinate value used to calculate floating point
12
+ * tolerances.
13
+ */
14
+ function findAndAdd2Prongs(loops, cpGraphs, k, for2Prongs, extreme) {
15
+ const len = for2Prongs.length;
16
+ const index = indexLinear(len);
17
+ //const index = indexInterlaced(len); // Keep for possible future use.
18
+ let cpNode_;
19
+ const bounds = getShapeBounds(loops);
20
+ const squaredDiagonalLength = (bounds.maxX.p[0] - bounds.minX.p[0]) ** 2 +
21
+ (bounds.maxY.p[1] - bounds.minY.p[1]) ** 2;
22
+ for (let i = 0; i < len; i++) {
23
+ const pos = for2Prongs[index[i]];
24
+ const twoProngInfo = find2Prong(loops, extreme, squaredDiagonalLength, cpGraphs, pos, false, k);
25
+ if (twoProngInfo) {
26
+ const { circle, zs } = twoProngInfo;
27
+ const cpNode = add2Prong(cpGraphs, circle, pos, zs, false, extreme);
28
+ cpNode_ = cpNode_ || cpNode;
29
+ }
30
+ if (typeof _debug_ !== 'undefined') {
31
+ if (i + 1 === _debug_.directives.stopAfterTwoProngsNum) {
32
+ return undefined;
33
+ }
34
+ }
35
+ }
36
+ return cpNode_;
37
+ }
38
+ /**
39
+ * @hidden
40
+ * Simple linear array indexing.
41
+ * @param n
42
+ */
43
+ function indexLinear(n) {
44
+ const arr = [];
45
+ for (let i = 0; i < n; i++) {
46
+ arr.push(i);
47
+ }
48
+ return arr;
49
+ }
50
+ /**
51
+ * @hidden
52
+ * Creates a kind of interlaced index vector.
53
+ * @param n
54
+ */
55
+ function indexInterlaced(n) {
56
+ const source = {};
57
+ const arr = [];
58
+ // l is the lowest power of 2 so that 2^l > n
59
+ let l = Math.pow(2, Math.floor(Math.log2(n)));
60
+ while (l >= 1) {
61
+ let k = 0;
62
+ while (k < n) {
63
+ if (!source[k]) {
64
+ arr.push(k);
65
+ source[k] = true;
66
+ }
67
+ k = k + l;
68
+ }
69
+ l = l / 2;
70
+ }
71
+ return arr;
72
+ }
73
+ export { findAndAdd2Prongs };
75
74
  //# sourceMappingURL=find-and-add-2-prongs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-and-add-2-prongs.js","sourceRoot":"","sources":["../../../src/mat/find-mat/find-and-add-2-prongs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-and-add-2-prongs.js","sourceRoot":"","sources":["../../../src/mat/find-mat/find-and-add-2-prongs.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
2
- import { CpNode } from '../../cp-node.js';
3
- import { Loop } from '../../loop.js';
4
- /**
5
- * @hidden
6
- * Finds and adds all 3-prongs.
7
- * @param cpGraphs
8
- * @param cpStart The CpNode to start traversing from.
9
- * @param extreme The maximum coordinate value used to calculate floating point
10
- * tolerances.
11
- */
12
- declare function findAndAddAll3Prongs(cpGraphs: Map<Loop, LlRbTree<CpNode>>, cpStart: CpNode, extreme: number): void;
13
- export { findAndAddAll3Prongs };
1
+ import { LlRbTree } from 'flo-ll-rb-tree';
2
+ import { CpNode } from '../../cp-node.js';
3
+ import { Loop } from '../../loop.js';
4
+ /**
5
+ * @hidden
6
+ * Finds and adds all 3-prongs.
7
+ * @param cpGraphs
8
+ * @param cpStart The CpNode to start traversing from.
9
+ * @param extreme The maximum coordinate value used to calculate floating point
10
+ * tolerances.
11
+ */
12
+ declare function findAndAddAll3Prongs(cpGraphs: Map<Loop, LlRbTree<CpNode>>, cpStart: CpNode, extreme: number): void;
13
+ export { findAndAddAll3Prongs };
@@ -1,148 +1,147 @@
1
- import { calcPosOrder, isPosSharpCorner } from '../../point-on-shape.js';
2
- import { find3Prong } from './find-3-prong/find-3-prong.js';
3
- import { add3Prong } from '../find-mat/add-3-prong.js';
4
- /**
5
- * @hidden
6
- * Finds and adds all 3-prongs.
7
- * @param cpGraphs
8
- * @param cpStart The CpNode to start traversing from.
9
- * @param extreme The maximum coordinate value used to calculate floating point
10
- * tolerances.
11
- */
12
- function findAndAddAll3Prongs(cpGraphs, cpStart, extreme) {
13
- // Don't change this function to be recursive, the call stack may overflow
14
- // if there are too many two-prongs.
15
- let visitedEdges = new Map();
16
- let edgesToCheck = [{ fromCpNode: undefined, cpStart }];
17
- while (edgesToCheck.length) {
18
- let { fromCpNode, cpStart } = edgesToCheck.shift();
19
- markEdgeAsTaken(visitedEdges, fromCpNode, cpStart);
20
- for (let cpNode of cpStart.getCpNodesOnCircle()) {
21
- //if (!PointOnShape.isSharpCorner(cpNode.cp.pointOnShape)) {
22
- if (!isPosSharpCorner(cpNode.cp.pointOnShape)) {
23
- if (findAndAdd3Prongs(cpGraphs, cpNode, extreme) === undefined) {
24
- return; // only for debugging purposes
25
- }
26
- ;
27
- }
28
- if (hasEdgeBeenTaken(visitedEdges, cpNode, cpNode.next)) {
29
- continue; // We already visited this edge
30
- }
31
- edgesToCheck.push({ fromCpNode: cpStart, cpStart: cpNode.next });
32
- }
33
- }
34
- }
35
- /**
36
- * @hidden
37
- * Marks the given edge as already taken.
38
- */
39
- function markEdgeAsTaken(visitedEdges, cp1, cp2) {
40
- if (cp1 === undefined) {
41
- return;
42
- }
43
- f(cp1, cp2);
44
- f(cp2, cp1);
45
- function f(cp1, cp2) {
46
- let visited = visitedEdges.get(cp1);
47
- if (!visited) {
48
- visited = new Set();
49
- visitedEdges.set(cp1, visited);
50
- }
51
- visited.add(cp2);
52
- }
53
- }
54
- /** @hidden */
55
- function hasEdgeBeenTaken(visitedEdges, cp1, cp2) {
56
- let cps;
57
- cps = visitedEdges.get(cp1);
58
- let takenForward = cps && cps.has(cp2);
59
- cps = visitedEdges.get(cp2);
60
- let takenBackwards = cps && cps.has(cp1);
61
- return takenForward || takenBackwards;
62
- }
63
- /**
64
- * @hidden
65
- * Traverses the shape from the given ContactPoint going around contact circles
66
- * so that only a piece of the shape is traversed and returns the visited
67
- * CpNodes (starting from the given CpNode).
68
- * @param cpStart The ContactPoint from where to start the traversal.
69
- */
70
- function traverseShape(cpStart) {
71
- let cpNode = cpStart;
72
- if (cpNode === cpNode.next.prevOnCircle) {
73
- return [cpNode];
74
- }
75
- let visitedCps = [];
76
- do {
77
- visitedCps.push(cpNode);
78
- let next = cpNode.next.prevOnCircle;
79
- cpNode = cpNode === next
80
- ? cpNode = cpNode.next.next // Terminal vertex
81
- : cpNode = next; // Take last exit
82
- } while (cpNode !== cpStart);
83
- return visitedCps;
84
- }
85
- /**
86
- * @hidden
87
- * Starting from some ContactPoint, traverses the shape going around Vertices
88
- * and if more than two Vertices have been visited in total then recursively
89
- * adds 3-prongs until only one or two Vertices have been visited.
90
- *
91
- * This process further subdivides the shape.
92
- * @param cpGraphs
93
- * @param cpStart The ContactPoint from where to start the process.
94
- * @param extreme The maximum coordinate value used to calculate floating point
95
- * tolerances.
96
- */
97
- let ii = 0;
98
- function findAndAdd3Prongs(cpGraphs, cpStart, extreme) {
99
- let visitedCps;
100
- do {
101
- visitedCps = traverseShape(cpStart);
102
- if (visitedCps.length > 2) {
103
- findAndAdd3Prong(cpGraphs, visitedCps, extreme);
104
- ii++;
105
- }
106
- if (typeof _debug_ !== 'undefined') {
107
- if (ii === _debug_.directives.stopAfterThreeProngsNum) {
108
- return undefined;
109
- }
110
- }
111
- } while (visitedCps.length > 2);
112
- return visitedCps;
113
- }
114
- /**
115
- * @hidden
116
- * Finds and add a 3-prong MAT circle to the given shape.
117
- * @param cpGraphs
118
- * @param visitedCps
119
- * @param extreme The maximum coordinate value used to calculate floating point
120
- * tolerances.
121
- */
122
- function findAndAdd3Prong(cpGraphs, visitedCps, extreme) {
123
- let δs = [];
124
- for (let visitedCp of visitedCps) {
125
- δs.push([visitedCp, visitedCp.next]);
126
- }
127
- let threeProng = find3Prong(δs, extreme);
128
- let orders = [];
129
- for (let i = 0; i < 3; i++) {
130
- orders.push(
131
- //PointOnShape.calcOrder(threeProng.circle, threeProng.ps[i])
132
- calcPosOrder(threeProng.circle, threeProng.ps[i]));
133
- }
134
- let circle = add3Prong(cpGraphs, orders, threeProng);
135
- if (typeof _debug_ !== 'undefined') {
136
- add3ProngDebugInfo(circle, visitedCps);
137
- }
138
- }
139
- /** @hidden */
140
- function add3ProngDebugInfo(circle, visitedCps) {
141
- let threeProngs = _debug_.generated.elems.threeProng;
142
- let len = threeProngs.length;
143
- let data = threeProngs[len - 1];
144
- data.visitedCps = visitedCps;
145
- data.circle = circle;
146
- }
147
- export { findAndAddAll3Prongs };
1
+ import { calcPosOrder, isPosSharpCorner } from '../../point-on-shape.js';
2
+ import { find3Prong } from './find-3-prong/find-3-prong.js';
3
+ import { add3Prong } from '../find-mat/add-3-prong.js';
4
+ /**
5
+ * @hidden
6
+ * Finds and adds all 3-prongs.
7
+ * @param cpGraphs
8
+ * @param cpStart The CpNode to start traversing from.
9
+ * @param extreme The maximum coordinate value used to calculate floating point
10
+ * tolerances.
11
+ */
12
+ function findAndAddAll3Prongs(cpGraphs, cpStart, extreme) {
13
+ // Don't change this function to be recursive, the call stack may overflow
14
+ // if there are too many two-prongs.
15
+ const visitedEdges = new Map();
16
+ const edgesToCheck = [{ fromCpNode: undefined, cpStart }];
17
+ while (edgesToCheck.length) {
18
+ const { fromCpNode, cpStart } = edgesToCheck.shift();
19
+ markEdgeAsTaken(visitedEdges, fromCpNode, cpStart);
20
+ for (const cpNode of cpStart.getCpNodesOnCircle()) {
21
+ //if (!PointOnShape.isSharpCorner(cpNode.cp.pointOnShape)) {
22
+ if (!isPosSharpCorner(cpNode.cp.pointOnShape)) {
23
+ if (findAndAdd3Prongs(cpGraphs, cpNode, extreme) === undefined) {
24
+ return; // only for debugging purposes
25
+ }
26
+ }
27
+ if (hasEdgeBeenTaken(visitedEdges, cpNode, cpNode.next)) {
28
+ continue; // We already visited this edge
29
+ }
30
+ edgesToCheck.push({ fromCpNode: cpStart, cpStart: cpNode.next });
31
+ }
32
+ }
33
+ }
34
+ /**
35
+ * @hidden
36
+ * Marks the given edge as already taken.
37
+ */
38
+ function markEdgeAsTaken(visitedEdges, cp1, cp2) {
39
+ if (cp1 === undefined) {
40
+ return;
41
+ }
42
+ f(cp1, cp2);
43
+ f(cp2, cp1);
44
+ function f(cp1, cp2) {
45
+ let visited = visitedEdges.get(cp1);
46
+ if (!visited) {
47
+ visited = new Set();
48
+ visitedEdges.set(cp1, visited);
49
+ }
50
+ visited.add(cp2);
51
+ }
52
+ }
53
+ /** @hidden */
54
+ function hasEdgeBeenTaken(visitedEdges, cp1, cp2) {
55
+ let cps;
56
+ cps = visitedEdges.get(cp1);
57
+ const takenForward = cps && cps.has(cp2);
58
+ cps = visitedEdges.get(cp2);
59
+ const takenBackwards = cps && cps.has(cp1);
60
+ return takenForward || takenBackwards;
61
+ }
62
+ /**
63
+ * @hidden
64
+ * Traverses the shape from the given ContactPoint going around contact circles
65
+ * so that only a piece of the shape is traversed and returns the visited
66
+ * CpNodes (starting from the given CpNode).
67
+ * @param cpStart The ContactPoint from where to start the traversal.
68
+ */
69
+ function traverseShape(cpStart) {
70
+ let cpNode = cpStart;
71
+ if (cpNode === cpNode.next.prevOnCircle) {
72
+ return [cpNode];
73
+ }
74
+ const visitedCps = [];
75
+ do {
76
+ visitedCps.push(cpNode);
77
+ const next = cpNode.next.prevOnCircle;
78
+ cpNode = cpNode === next
79
+ ? cpNode = cpNode.next.next // Terminal vertex
80
+ : cpNode = next; // Take last exit
81
+ } while (cpNode !== cpStart);
82
+ return visitedCps;
83
+ }
84
+ /**
85
+ * @hidden
86
+ * Starting from some ContactPoint, traverses the shape going around Vertices
87
+ * and if more than two Vertices have been visited in total then recursively
88
+ * adds 3-prongs until only one or two Vertices have been visited.
89
+ *
90
+ * This process further subdivides the shape.
91
+ * @param cpGraphs
92
+ * @param cpStart The ContactPoint from where to start the process.
93
+ * @param extreme The maximum coordinate value used to calculate floating point
94
+ * tolerances.
95
+ */
96
+ let ii = 0;
97
+ function findAndAdd3Prongs(cpGraphs, cpStart, extreme) {
98
+ let visitedCps;
99
+ do {
100
+ visitedCps = traverseShape(cpStart);
101
+ if (visitedCps.length > 2) {
102
+ findAndAdd3Prong(cpGraphs, visitedCps, extreme);
103
+ ii++;
104
+ }
105
+ if (typeof _debug_ !== 'undefined') {
106
+ if (ii === _debug_.directives.stopAfterThreeProngsNum) {
107
+ return undefined;
108
+ }
109
+ }
110
+ } while (visitedCps.length > 2);
111
+ return visitedCps;
112
+ }
113
+ /**
114
+ * @hidden
115
+ * Finds and add a 3-prong MAT circle to the given shape.
116
+ * @param cpGraphs
117
+ * @param visitedCps
118
+ * @param extreme The maximum coordinate value used to calculate floating point
119
+ * tolerances.
120
+ */
121
+ function findAndAdd3Prong(cpGraphs, visitedCps, extreme) {
122
+ const δs = [];
123
+ for (const visitedCp of visitedCps) {
124
+ δs.push([visitedCp, visitedCp.next]);
125
+ }
126
+ const threeProng = find3Prong(δs, extreme);
127
+ const orders = [];
128
+ for (let i = 0; i < 3; i++) {
129
+ orders.push(
130
+ //PointOnShape.calcOrder(threeProng.circle, threeProng.ps[i])
131
+ calcPosOrder(threeProng.circle, threeProng.ps[i]));
132
+ }
133
+ const circle = add3Prong(cpGraphs, orders, threeProng);
134
+ if (typeof _debug_ !== 'undefined') {
135
+ add3ProngDebugInfo(circle, visitedCps);
136
+ }
137
+ }
138
+ /** @hidden */
139
+ function add3ProngDebugInfo(circle, visitedCps) {
140
+ const threeProngs = _debug_.generated.elems.threeProng;
141
+ const len = threeProngs.length;
142
+ const data = threeProngs[len - 1];
143
+ data.visitedCps = visitedCps;
144
+ data.circle = circle;
145
+ }
146
+ export { findAndAddAll3Prongs };
148
147
  //# sourceMappingURL=find-and-add-3-prongs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-and-add-3-prongs.js","sourceRoot":"","sources":["../../../src/mat/find-mat/find-and-add-3-prongs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-and-add-3-prongs.js","sourceRoot":"","sources":["../../../src/mat/find-mat/find-and-add-3-prongs.ts"],"names":[],"mappings":"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"}