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,160 +1,160 @@
1
- import { fromTo, circumCenter, len, distanceBetween, toUnitVector, rotate90Degrees, cross } from 'flo-vector2d';
2
- import { tangent } from 'flo-bezier3';
3
- import { isPosDullCorner } from '../../../point-on-shape.js';
4
- import { getClosestBoundaryPoint } from '../../closest-boundary-point/get-closest-boundary-point.js';
5
- import { calcInitial3ProngCenter } from './calc-initial-3-prong-center.js';
6
- import { getClosestPoints } from './get-closest-points.js';
7
- import { calcBetterX } from './calc-better-x.js';
8
- import { getCornerAtEnd } from '../../../curve.js';
9
- /** @hidden */
10
- const calcVectorToZeroV_StraightToIt = fromTo;
11
- /**
12
- * @hidden
13
- * Finds a 3-prong using only the 3 given δs.
14
- * @param δs The boundary pieces
15
- * @param idx δ identifier
16
- * @param bezierPiecess
17
- * @param extreme The maximum coordinate value used to calculate floating point
18
- * tolerances.
19
- */
20
- function find3ProngForDelta3s(δs, idx, k, bezierPiecess, extreme) {
21
- const TOLERANCE = extreme * 1e-10;
22
- const MAX_ITERATIONS = 10;
23
- let δs_ = [
24
- δs[0],
25
- δs[idx],
26
- δs[δs.length - 1]
27
- ];
28
- let bezierPieces_ = [
29
- bezierPiecess[0],
30
- bezierPiecess[idx],
31
- bezierPiecess[δs.length - 1]
32
- ];
33
- let δ3ss = [
34
- [δs_[0], δs_[1], δs_[2]],
35
- [δs_[1], δs_[2], δs_[0]],
36
- [δs_[2], δs_[0], δs_[1]],
37
- ];
38
- let bezierPiecess_ = [
39
- [bezierPieces_[0], bezierPieces_[1], bezierPieces_[2]],
40
- [bezierPieces_[1], bezierPieces_[2], bezierPieces_[0]],
41
- [bezierPieces_[2], bezierPieces_[0], bezierPieces_[1]],
42
- ];
43
- let δ3s = δ3ss[k];
44
- let bezierPiece3s = bezierPiecess_[k];
45
- if (δ3s[0][0].isSharp()) {
46
- return undefined;
47
- }
48
- let ps;
49
- let circumCenter_;
50
- let j = 0; // Safeguard for slow convergence
51
- let x = calcInitial3ProngCenter(δ3s, bezierPiece3s);
52
- if (typeof _debug_ !== 'undefined') {
53
- let threeProngs = _debug_.generated.elems.threeProng;
54
- let d = threeProngs[threeProngs.length - 1];
55
- let trace = d.traces[d.traces.length - 1];
56
- trace.push(x);
57
- }
58
- let tolerance = Number.POSITIVE_INFINITY;
59
- while (tolerance > TOLERANCE && j < MAX_ITERATIONS) {
60
- j++;
61
- ps = getClosestPoints(x, bezierPiece3s);
62
- if (!Number.isFinite(x[0]) || !Number.isFinite(x[1])) {
63
- // TODO - the code can be cleaned up and sped up a lot if we don't
64
- // use this function as is but instead use δs[0] and δs[2] as is
65
- // and make δs[1] include all the rest of the beziers around the
66
- // loop. This check, for instance, would be eliminated completely.
67
- return undefined;
68
- }
69
- circumCenter_ = circumCenter(ps.map(x => x.p));
70
- let vectorToZeroV = calcVectorToZeroV_StraightToIt(x, circumCenter_);
71
- if (!Number.isFinite(vectorToZeroV[0]) || !Number.isFinite(vectorToZeroV[1])) {
72
- // TODO - the code can be cleaned up and sped up a lot if we don't
73
- // use this function as is but instead use δs[0] and δs[2] as is
74
- // and make δs[1] include all the rest of the beziers around the
75
- // loop. This check, for instance, would be eliminated completely.
76
- return undefined;
77
- }
78
- let upds = calcBetterX(bezierPiece3s, x, vectorToZeroV);
79
- x = upds.newX;
80
- ps = upds.newPs;
81
- if (typeof _debug_ !== 'undefined') {
82
- let threeProngs = _debug_.generated.elems.threeProng;
83
- let d = threeProngs[threeProngs.length - 1];
84
- let trace = d.traces[d.traces.length - 1];
85
- trace.push(x);
86
- }
87
- let V = len(vectorToZeroV); // The 'potential'
88
- tolerance = Math.abs(V - upds.newV);
89
- }
90
- let radius = (distanceBetween(x, ps[0].p) +
91
- distanceBetween(x, ps[1].p) +
92
- distanceBetween(x, ps[2].p)) / 3;
93
- let circle = { center: x, radius };
94
- //-------------------------------------------------------------------------
95
- // Calculate the unit tangent vector at 3-prong circle points - they should
96
- // be very close to tangent to the boundary piece tangents at those points
97
- // (up to sign). Sharp corners are a common special case.
98
- //-------------------------------------------------------------------------
99
- let totalAngleError = 0;
100
- for (let i = 0; i < 3; i++) {
101
- let p = ps[i];
102
- //----------------------------
103
- // Tangent of circle at point
104
- //----------------------------
105
- let v = toUnitVector(fromTo(p.p, x));
106
- let v1 = rotate90Degrees(v);
107
- //-----------------------------------
108
- // Check if point is on dull crorner
109
- //-----------------------------------
110
- //if (PointOnShape.isDullCorner(p)) {
111
- if (isPosDullCorner(p)) {
112
- //let corner = Curve.getCornerAtEnd(p.curve);
113
- let corner = getCornerAtEnd(p.curve);
114
- let tans = corner.tangents;
115
- let perps = tans.map(rotate90Degrees);
116
- let angleError1 = Math.asin(cross(perps[0], v));
117
- let angleError2 = Math.asin(cross(v, perps[1]));
118
- let angleError = 0;
119
- if (angleError1 > 0) {
120
- angleError += angleError1;
121
- }
122
- if (angleError2 > 0) {
123
- angleError += angleError2;
124
- }
125
- totalAngleError += angleError;
126
- }
127
- else {
128
- //---------------------------
129
- // Tangent of curve at point
130
- //---------------------------
131
- let v2 = toUnitVector(tangent(p.curve.ps, p.t));
132
- // Cross is more numerically stable than Vector.dot at angles a
133
- // multiple of Math.PI **and** is close to the actual angle value
134
- // and can thus just be added to cone method of looking at
135
- // tolerance.
136
- // Should be close to zero and is close to the actual angle.
137
- let cross_ = Math.abs(Math.asin(cross(v1, v2)));
138
- totalAngleError += cross_;
139
- }
140
- }
141
- //-------------------------------------------------------------------------
142
- // Calculate radiusDelta, the difference between the radius and the closest
143
- // point to the 3-prong. It should be around 0. If not, this is not a good
144
- // candidate for the 3-prong.
145
- //-------------------------------------------------------------------------
146
- let closestDs = [];
147
- for (let i = 0; i < bezierPiecess.length; i++) {
148
- let p = getClosestBoundaryPoint(bezierPiecess[i], x, undefined, undefined);
149
- closestDs.push(distanceBetween(p.pos.p, x));
150
- }
151
- let closestD = Math.min(...closestDs);
152
- let radiusDelta = Math.abs(radius - closestD);
153
- // Weights below still need to be optimized.
154
- let W1 = 1;
155
- let W2 = 1;
156
- let error = W1 * radiusDelta + W2 * totalAngleError;
157
- return { ps, circle, error, δ3s };
158
- }
159
- export { find3ProngForDelta3s };
1
+ import { fromTo, circumCenter, len, distanceBetween, toUnitVector, rotate90Degrees, cross } from 'flo-vector2d';
2
+ import { tangent } from 'flo-bezier3';
3
+ import { isPosDullCorner } from '../../../point-on-shape.js';
4
+ import { getClosestBoundaryPoint } from '../../closest-boundary-point/get-closest-boundary-point.js';
5
+ import { calcInitial3ProngCenter } from './calc-initial-3-prong-center.js';
6
+ import { getClosestPoints } from './get-closest-points.js';
7
+ import { calcBetterX } from './calc-better-x.js';
8
+ import { getCornerAtEnd } from '../../../curve.js';
9
+ /** @hidden */
10
+ const calcVectorToZeroV_StraightToIt = fromTo;
11
+ /**
12
+ * @hidden
13
+ * Finds a 3-prong using only the 3 given δs.
14
+ * @param δs The boundary pieces
15
+ * @param idx δ identifier
16
+ * @param bezierPiecess
17
+ * @param extreme The maximum coordinate value used to calculate floating point
18
+ * tolerances.
19
+ */
20
+ function find3ProngForDelta3s(δs, idx, k, bezierPiecess, extreme) {
21
+ const TOLERANCE = extreme * 1e-10;
22
+ const MAX_ITERATIONS = 10;
23
+ const δs_ = [
24
+ δs[0],
25
+ δs[idx],
26
+ δs[δs.length - 1]
27
+ ];
28
+ const bezierPieces_ = [
29
+ bezierPiecess[0],
30
+ bezierPiecess[idx],
31
+ bezierPiecess[δs.length - 1]
32
+ ];
33
+ const δ3ss = [
34
+ [δs_[0], δs_[1], δs_[2]],
35
+ [δs_[1], δs_[2], δs_[0]],
36
+ [δs_[2], δs_[0], δs_[1]],
37
+ ];
38
+ const bezierPiecess_ = [
39
+ [bezierPieces_[0], bezierPieces_[1], bezierPieces_[2]],
40
+ [bezierPieces_[1], bezierPieces_[2], bezierPieces_[0]],
41
+ [bezierPieces_[2], bezierPieces_[0], bezierPieces_[1]],
42
+ ];
43
+ const δ3s = δ3ss[k];
44
+ const bezierPiece3s = bezierPiecess_[k];
45
+ if (δ3s[0][0].isSharp()) {
46
+ return undefined;
47
+ }
48
+ let ps;
49
+ let circumCenter_;
50
+ let j = 0; // Safeguard for slow convergence
51
+ let x = calcInitial3ProngCenter(δ3s, bezierPiece3s);
52
+ if (typeof _debug_ !== 'undefined') {
53
+ const threeProngs = _debug_.generated.elems.threeProng;
54
+ const d = threeProngs[threeProngs.length - 1];
55
+ const trace = d.traces[d.traces.length - 1];
56
+ trace.push(x);
57
+ }
58
+ let tolerance = Number.POSITIVE_INFINITY;
59
+ while (tolerance > TOLERANCE && j < MAX_ITERATIONS) {
60
+ j++;
61
+ ps = getClosestPoints(x, bezierPiece3s);
62
+ if (!Number.isFinite(x[0]) || !Number.isFinite(x[1])) {
63
+ // TODO - the code can be cleaned up and sped up a lot if we don't
64
+ // use this function as is but instead use δs[0] and δs[2] as is
65
+ // and make δs[1] include all the rest of the beziers around the
66
+ // loop. This check, for instance, would be eliminated completely.
67
+ return undefined;
68
+ }
69
+ circumCenter_ = circumCenter(ps.map(x => x.p));
70
+ const vectorToZeroV = calcVectorToZeroV_StraightToIt(x, circumCenter_);
71
+ if (!Number.isFinite(vectorToZeroV[0]) || !Number.isFinite(vectorToZeroV[1])) {
72
+ // TODO - the code can be cleaned up and sped up a lot if we don't
73
+ // use this function as is but instead use δs[0] and δs[2] as is
74
+ // and make δs[1] include all the rest of the beziers around the
75
+ // loop. This check, for instance, would be eliminated completely.
76
+ return undefined;
77
+ }
78
+ const upds = calcBetterX(bezierPiece3s, x, vectorToZeroV);
79
+ x = upds.newX;
80
+ ps = upds.newPs;
81
+ if (typeof _debug_ !== 'undefined') {
82
+ const threeProngs = _debug_.generated.elems.threeProng;
83
+ const d = threeProngs[threeProngs.length - 1];
84
+ const trace = d.traces[d.traces.length - 1];
85
+ trace.push(x);
86
+ }
87
+ const V = len(vectorToZeroV); // The 'potential'
88
+ tolerance = Math.abs(V - upds.newV);
89
+ }
90
+ const radius = (distanceBetween(x, ps[0].p) +
91
+ distanceBetween(x, ps[1].p) +
92
+ distanceBetween(x, ps[2].p)) / 3;
93
+ const circle = { center: x, radius };
94
+ //-------------------------------------------------------------------------
95
+ // Calculate the unit tangent vector at 3-prong circle points - they should
96
+ // be very close to tangent to the boundary piece tangents at those points
97
+ // (up to sign). Sharp corners are a common special case.
98
+ //-------------------------------------------------------------------------
99
+ let totalAngleError = 0;
100
+ for (let i = 0; i < 3; i++) {
101
+ const p = ps[i];
102
+ //----------------------------
103
+ // Tangent of circle at point
104
+ //----------------------------
105
+ const v = toUnitVector(fromTo(p.p, x));
106
+ const v1 = rotate90Degrees(v);
107
+ //-----------------------------------
108
+ // Check if point is on dull crorner
109
+ //-----------------------------------
110
+ //if (PointOnShape.isDullCorner(p)) {
111
+ if (isPosDullCorner(p)) {
112
+ //const corner = Curve.getCornerAtEnd(p.curve);
113
+ const corner = getCornerAtEnd(p.curve);
114
+ const tans = corner.tangents;
115
+ const perps = tans.map(rotate90Degrees);
116
+ const angleError1 = Math.asin(cross(perps[0], v));
117
+ const angleError2 = Math.asin(cross(v, perps[1]));
118
+ let angleError = 0;
119
+ if (angleError1 > 0) {
120
+ angleError += angleError1;
121
+ }
122
+ if (angleError2 > 0) {
123
+ angleError += angleError2;
124
+ }
125
+ totalAngleError += angleError;
126
+ }
127
+ else {
128
+ //---------------------------
129
+ // Tangent of curve at point
130
+ //---------------------------
131
+ const v2 = toUnitVector(tangent(p.curve.ps, p.t));
132
+ // Cross is more numerically stable than Vector.dot at angles a
133
+ // multiple of Math.PI **and** is close to the actual angle value
134
+ // and can thus just be added to cone method of looking at
135
+ // tolerance.
136
+ // Should be close to zero and is close to the actual angle.
137
+ const cross_ = Math.abs(Math.asin(cross(v1, v2)));
138
+ totalAngleError += cross_;
139
+ }
140
+ }
141
+ //-------------------------------------------------------------------------
142
+ // Calculate radiusDelta, the difference between the radius and the closest
143
+ // point to the 3-prong. It should be around 0. If not, this is not a good
144
+ // candidate for the 3-prong.
145
+ //-------------------------------------------------------------------------
146
+ const closestDs = [];
147
+ for (let i = 0; i < bezierPiecess.length; i++) {
148
+ const p = getClosestBoundaryPoint(bezierPiecess[i], x, undefined, undefined);
149
+ closestDs.push(distanceBetween(p.pos.p, x));
150
+ }
151
+ const closestD = Math.min(...closestDs);
152
+ const radiusDelta = Math.abs(radius - closestD);
153
+ // Weights below still need to be optimized.
154
+ const W1 = 1;
155
+ const W2 = 1;
156
+ const error = W1 * radiusDelta + W2 * totalAngleError;
157
+ return { ps, circle, error, δ3s };
158
+ }
159
+ export { find3ProngForDelta3s };
160
160
  //# sourceMappingURL=find-3-prong-for-delta3s.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-3-prong-for-delta3s.js","sourceRoot":"","sources":["../../../../src/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-3-prong-for-delta3s.js","sourceRoot":"","sources":["../../../../src/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- import { CpNode } from '../../../cp-node.js';
2
- import { Circle } from '../../../circle.js';
3
- import { IPointOnShape } from '../../../point-on-shape.js';
4
- /**
5
- * @hidden
6
- * Find and return a 3-prong from the given boundary piece.
7
- * @param δs A boundary piece
8
- * @param extreme The maximum coordinate value used to calculate floating point
9
- * tolerances.
10
- */
11
- declare function find3Prong(δs: CpNode[][], extreme: number): {
12
- circle: Circle;
13
- ps: IPointOnShape[];
14
- δ3s: CpNode[][];
15
- };
16
- export { find3Prong };
1
+ import { CpNode } from '../../../cp-node.js';
2
+ import { Circle } from '../../../circle.js';
3
+ import { IPointOnShape } from '../../../point-on-shape.js';
4
+ /**
5
+ * @hidden
6
+ * Find and return a 3-prong from the given boundary piece.
7
+ * @param δs A boundary piece
8
+ * @param extreme The maximum coordinate value used to calculate floating point
9
+ * tolerances.
10
+ */
11
+ declare function find3Prong(δs: CpNode[][], extreme: number): {
12
+ circle: Circle;
13
+ ps: IPointOnShape[];
14
+ δ3s: CpNode[][];
15
+ };
16
+ export { find3Prong };
@@ -1,77 +1,77 @@
1
- import { fromTo } from 'flo-bezier3';
2
- import { createEmptyThreeProngForDebugging } from '../../../debug/three-prong-for-debugging.js';
3
- import { find3ProngForDelta3s } from './find-3-prong-for-delta3s.js';
4
- import { getBoundaryPieceBeziers } from '../../get-boundary-piece-beziers.js';
5
- /**
6
- * @hidden
7
- * Find and return a 3-prong from the given boundary piece.
8
- * @param δs A boundary piece
9
- * @param extreme The maximum coordinate value used to calculate floating point
10
- * tolerances.
11
- */
12
- function find3Prong(δs, extreme) {
13
- let bezierPiecess = δs.map(getBoundaryPieceBeziers);
14
- if (typeof _debug_ !== 'undefined') {
15
- let threeProngs = _debug_.generated.elems.threeProng;
16
- threeProngs.push(createEmptyThreeProngForDebugging());
17
- let d = threeProngs[threeProngs.length - 1];
18
- d.boundaries = [];
19
- for (let bezierPieces of bezierPiecess) {
20
- let boundary = [];
21
- d.boundaries.push(boundary);
22
- for (let bezierPiece of bezierPieces) {
23
- /* qqq
24
- let bezier = fromTo(bezierPiece.curve.ps)(
25
- bezierPiece.ts[0], bezierPiece.ts[1]
26
- );
27
- */
28
- const bezier = fromTo(bezierPiece.curve.ps, bezierPiece.ts[0], bezierPiece.ts[1]);
29
- boundary.push(bezier);
30
- }
31
- }
32
- d.traces = [];
33
- }
34
- let candidateThreeProngs = [];
35
- // The best candidate amongst the different 'permutations' of the given δs.
36
- let threeProng;
37
- let bestIndx = undefined;
38
- let smallestError = Number.POSITIVE_INFINITY;
39
- for (let i = 1; i < δs.length - 1; i++) {
40
- for (let k = 0; k < 3; k++) {
41
- if (typeof _debug_ !== 'undefined') {
42
- let threeProngs = _debug_.generated.elems.threeProng;
43
- let d = threeProngs[threeProngs.length - 1];
44
- let trace = [];
45
- d.traces.push(trace);
46
- }
47
- let threeProngInfo = find3ProngForDelta3s(δs, i, k, bezierPiecess, extreme);
48
- if (!threeProngInfo) {
49
- continue;
50
- }
51
- let { circle, ps, error, δ3s } = threeProngInfo;
52
- if (typeof _debug_ !== 'undefined') {
53
- candidateThreeProngs.push({ circle, ps });
54
- }
55
- if (error < smallestError) {
56
- smallestError = error;
57
- bestIndx = i - 1;
58
- threeProng = { circle, ps, δ3s };
59
- }
60
- }
61
- }
62
- //threeProng.δ3s = [δs[0], δs[bestIndx+1], δs[δs.length-1]];
63
- if (typeof _debug_ !== 'undefined') {
64
- let threeProngs = _debug_.generated.elems.threeProng;
65
- let d = threeProngs[threeProngs.length - 1];
66
- d.generated = _debug_.generated;
67
- d.circle = threeProng.circle;
68
- d.poss = threeProng.ps;
69
- d.cp3ss = threeProng.δ3s;
70
- d.cpss = δs;
71
- d.bestIndx = bestIndx;
72
- d.candidateThreeProngs = candidateThreeProngs;
73
- }
74
- return threeProng;
75
- }
76
- export { find3Prong };
1
+ import { fromTo } from 'flo-bezier3';
2
+ import { createEmptyThreeProngForDebugging } from '../../../debug/three-prong-for-debugging.js';
3
+ import { find3ProngForDelta3s } from './find-3-prong-for-delta3s.js';
4
+ import { getBoundaryPieceBeziers } from '../../get-boundary-piece-beziers.js';
5
+ /**
6
+ * @hidden
7
+ * Find and return a 3-prong from the given boundary piece.
8
+ * @param δs A boundary piece
9
+ * @param extreme The maximum coordinate value used to calculate floating point
10
+ * tolerances.
11
+ */
12
+ function find3Prong(δs, extreme) {
13
+ const bezierPiecess = δs.map(getBoundaryPieceBeziers);
14
+ if (typeof _debug_ !== 'undefined') {
15
+ const threeProngs = _debug_.generated.elems.threeProng;
16
+ threeProngs.push(createEmptyThreeProngForDebugging());
17
+ const d = threeProngs[threeProngs.length - 1];
18
+ d.boundaries = [];
19
+ for (const bezierPieces of bezierPiecess) {
20
+ const boundary = [];
21
+ d.boundaries.push(boundary);
22
+ for (const bezierPiece of bezierPieces) {
23
+ /* qqq
24
+ let bezier = fromTo(bezierPiece.curve.ps)(
25
+ bezierPiece.ts[0], bezierPiece.ts[1]
26
+ );
27
+ */
28
+ const bezier = fromTo(bezierPiece.curve.ps, bezierPiece.ts[0], bezierPiece.ts[1]);
29
+ boundary.push(bezier);
30
+ }
31
+ }
32
+ d.traces = [];
33
+ }
34
+ const candidateThreeProngs = [];
35
+ // The best candidate amongst the different 'permutations' of the given δs.
36
+ let threeProng;
37
+ let bestIndx = undefined;
38
+ let smallestError = Number.POSITIVE_INFINITY;
39
+ for (let i = 1; i < δs.length - 1; i++) {
40
+ for (let k = 0; k < 3; k++) {
41
+ if (typeof _debug_ !== 'undefined') {
42
+ const threeProngs = _debug_.generated.elems.threeProng;
43
+ const d = threeProngs[threeProngs.length - 1];
44
+ const trace = [];
45
+ d.traces.push(trace);
46
+ }
47
+ const threeProngInfo = find3ProngForDelta3s(δs, i, k, bezierPiecess, extreme);
48
+ if (!threeProngInfo) {
49
+ continue;
50
+ }
51
+ const { circle, ps, error, δ3s } = threeProngInfo;
52
+ if (typeof _debug_ !== 'undefined') {
53
+ candidateThreeProngs.push({ circle, ps });
54
+ }
55
+ if (error < smallestError) {
56
+ smallestError = error;
57
+ bestIndx = i - 1;
58
+ threeProng = { circle, ps, δ3s };
59
+ }
60
+ }
61
+ }
62
+ //threeProng.δ3s = [δs[0], δs[bestIndx+1], δs[δs.length-1]];
63
+ if (typeof _debug_ !== 'undefined') {
64
+ const threeProngs = _debug_.generated.elems.threeProng;
65
+ const d = threeProngs[threeProngs.length - 1];
66
+ d.generated = _debug_.generated;
67
+ d.circle = threeProng.circle;
68
+ d.poss = threeProng.ps;
69
+ d.cp3ss = threeProng.δ3s;
70
+ d.cpss = δs;
71
+ d.bestIndx = bestIndx;
72
+ d.candidateThreeProngs = candidateThreeProngs;
73
+ }
74
+ return threeProng;
75
+ }
76
+ export { find3Prong };
77
77
  //# sourceMappingURL=find-3-prong.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-3-prong.js","sourceRoot":"","sources":["../../../../src/mat/find-mat/find-3-prong/find-3-prong.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-3-prong.js","sourceRoot":"","sources":["../../../../src/mat/find-mat/find-3-prong/find-3-prong.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { BezierPiece } from '../../bezier-piece.js';
2
- /**
3
- * @hidden
4
- * @param x
5
- * @param bezierPiece3s
6
- * @param extreme
7
- */
8
- declare function getClosestPoints(x: number[], bezierPiece3s: BezierPiece[][]): import("../../../point-on-shape.js").IPointOnShape[];
9
- export { getClosestPoints };
1
+ import { BezierPiece } from '../../bezier-piece.js';
2
+ /**
3
+ * @hidden
4
+ * @param x
5
+ * @param bezierPiece3s
6
+ * @param extreme
7
+ */
8
+ declare function getClosestPoints(x: number[], bezierPiece3s: BezierPiece[][]): import("../../../point-on-shape.js").IPointOnShape[];
9
+ export { getClosestPoints };
@@ -1,17 +1,17 @@
1
- import { getClosestBoundaryPoint } from '../../closest-boundary-point/get-closest-boundary-point.js';
2
- /**
3
- * @hidden
4
- * @param x
5
- * @param bezierPiece3s
6
- * @param extreme
7
- */
8
- function getClosestPoints(x, bezierPiece3s) {
9
- return bezierPiece3s.map(bezierPieces => {
10
- let posInfo = getClosestBoundaryPoint(bezierPieces, x, undefined, // curve
11
- undefined // t
12
- );
13
- return posInfo ? posInfo.pos : undefined;
14
- });
15
- }
16
- export { getClosestPoints };
1
+ import { getClosestBoundaryPoint } from '../../closest-boundary-point/get-closest-boundary-point.js';
2
+ /**
3
+ * @hidden
4
+ * @param x
5
+ * @param bezierPiece3s
6
+ * @param extreme
7
+ */
8
+ function getClosestPoints(x, bezierPiece3s) {
9
+ return bezierPiece3s.map(bezierPieces => {
10
+ const posInfo = getClosestBoundaryPoint(bezierPieces, x, undefined, // curve
11
+ undefined // t
12
+ );
13
+ return posInfo ? posInfo.pos : undefined;
14
+ });
15
+ }
16
+ export { getClosestPoints };
17
17
  //# sourceMappingURL=get-closest-points.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-closest-points.js","sourceRoot":"","sources":["../../../../src/mat/find-mat/find-3-prong/get-closest-points.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AAGrG;;;;;GAKG;AACH,SAAS,gBAAgB,CACjB,CAAW,EACX,aAA8B;IAElC,OAAO,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;QACpC,IAAI,OAAO,GAAG,uBAAuB,CAC7B,YAAY,EACZ,CAAC,EACD,SAAS,EAAE,QAAQ;QACnB,SAAS,CAAE,IAAI;SACtB,CAAC;QAEF,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"get-closest-points.js","sourceRoot":"","sources":["../../../../src/mat/find-mat/find-3-prong/get-closest-points.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AAGrG;;;;;GAKG;AACH,SAAS,gBAAgB,CACjB,CAAW,EACX,aAA8B;IAElC,OAAO,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;QACpC,MAAM,OAAO,GAAG,uBAAuB,CAC/B,YAAY,EACZ,CAAC,EACD,SAAS,EAAE,QAAQ;QACnB,SAAS,CAAE,IAAI;SACtB,CAAC;QAEF,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}