flo-mat 4.1.5 → 5.0.2

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 (356) hide show
  1. package/__tests__/closest-boundary-point/get-endpoint-info.spec.ts +140 -0
  2. package/__tests__/closest-boundary-point/root-interval-to-distance-squared-interval.spec.ts +87 -0
  3. package/__tests__/cp-node/fs/get-all-on-loop-by-loop.spec.ts +55 -0
  4. package/__tests__/cp-node/fs/get-angle-between-mat-curves.spec.ts +39 -3
  5. package/__tests__/cp-node/fs/get-boundary-bezier-parts-to-next.spec.ts +87 -3
  6. package/__tests__/cp-node/fs/get-boundary-beziers-between.spec.ts +68 -3
  7. package/__tests__/cp-node/fs/get-boundary-beziers-to-next.spec.ts +41 -3
  8. package/__tests__/cp-node/fs/get-boundary-distance-to-next.spec.ts +20 -3
  9. package/__tests__/cp-node/fs/get-branch-beziers.spec.ts +42 -3
  10. package/__tests__/cp-node/fs/get-branch.spec.ts +60 -3
  11. package/__tests__/cp-node/fs/get-cp-node-ordering.spec.ts +19 -3
  12. package/__tests__/cp-node/fs/get-distance-to-next.spec.ts +37 -4
  13. package/__tests__/cp-node/fs/get-edge-direction.spec.ts +50 -3
  14. package/__tests__/cp-node/fs/get-first-exit.spec.ts +78 -3
  15. package/__tests__/cp-node/fs/get-hole-closers.spec.ts +32 -3
  16. package/__tests__/cp-node/fs/get-implied-boundary-bezier-between.spec.ts +48 -3
  17. package/__tests__/cp-node/fs/get-mat-curve-between.spec.ts +77 -3
  18. package/__tests__/cp-node/fs/get-mat-curve-to-next.spec.ts +17 -4
  19. package/__tests__/cp-node/fs/get-mat-curves-between.spec.ts +38 -3
  20. package/__tests__/cp-node/fs/get-salience.spec.ts +68 -3
  21. package/__tests__/cp-node/fs/get-vertex-forward-children.spec.ts +40 -3
  22. package/__tests__/cp-node/fs/insert-cp-node.spec.ts +87 -3
  23. package/__tests__/cp-node/fs/is-special.spec.ts +1 -1
  24. package/__tests__/cp-node/fs/remove-cp-node.spec.ts +42 -3
  25. package/__tests__/find-2-prong/calc-seperation-tolerance.spec.ts +46 -0
  26. package/__tests__/find-2-prong/get-medial/get-closest-points.spec.ts +1 -1
  27. package/__tests__/floyd-warshall/get-graph.spec.ts +100 -0
  28. package/__tests__/get-mats-with-hole.ts +28 -0
  29. package/__tests__/get-mats1.spec.ts +61 -0
  30. package/__tests__/get-mats1.ts +75 -67
  31. package/__tests__/helpers/cp-node-by-id.ts +27 -0
  32. package/__tests__/helpers/expect-point-close.ts +42 -0
  33. package/__tests__/mat/hausdorff-distance-one-sided-exceeds.spec.ts +129 -0
  34. package/__tests__/mat/simplify-mat.spec.ts +85 -0
  35. package/__tests__/reconstruct-from-mat/reconstruct-from-mat.spec.ts +39 -0
  36. package/__tests__/specific-cases/test-svgs/achispado.svg +14 -0
  37. package/__tests__/utils/get-beziers-from-tangents.spec.ts +142 -0
  38. package/browser/index.js +12985 -9965
  39. package/browser/index.min.js +1 -1
  40. package/node/closest-boundary-point/cull-curve-pieces.d.ts +21 -0
  41. package/node/closest-boundary-point/cull-curve-pieces.js +40 -0
  42. package/node/closest-boundary-point/cull-curve-pieces.js.map +1 -0
  43. package/node/closest-boundary-point/get-close-boundary-points-certified.js +5 -2
  44. package/node/closest-boundary-point/get-close-boundary-points-certified.js.map +1 -1
  45. package/node/closest-boundary-point/get-endpoint-info.d.ts +39 -0
  46. package/node/closest-boundary-point/get-endpoint-info.js +78 -0
  47. package/node/closest-boundary-point/get-endpoint-info.js.map +1 -0
  48. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js +5 -19
  49. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js.map +1 -1
  50. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.d.ts +17 -5
  51. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.js +37 -50
  52. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.js.map +1 -1
  53. package/node/corner/get-corner.d.ts +18 -1
  54. package/node/corner/get-corner.js +8 -1
  55. package/node/corner/get-corner.js.map +1 -1
  56. package/node/corner/get-interface-ccw.js.map +1 -1
  57. package/node/cp-node/cp-node.d.ts +4 -3
  58. package/node/cp-node/fs/get-all-on-loop-by-loop.js +0 -4
  59. package/node/cp-node/fs/get-all-on-loop-by-loop.js.map +1 -1
  60. package/node/cp-node/fs/get-angle-between-mat-curves.js +6 -4
  61. package/node/cp-node/fs/get-angle-between-mat-curves.js.map +1 -1
  62. package/node/cp-node/fs/get-boundary-beziers-between.d.ts +6 -4
  63. package/node/cp-node/fs/get-boundary-beziers-between.js +6 -4
  64. package/node/cp-node/fs/get-boundary-beziers-between.js.map +1 -1
  65. package/node/cp-node/fs/get-branch-beziers.d.ts +2 -1
  66. package/node/cp-node/fs/get-branch-beziers.js +3 -2
  67. package/node/cp-node/fs/get-branch-beziers.js.map +1 -1
  68. package/node/cp-node/fs/get-branch.js +1 -2
  69. package/node/cp-node/fs/get-branch.js.map +1 -1
  70. package/node/cp-node/fs/get-distance-to-next.js +4 -2
  71. package/node/cp-node/fs/get-distance-to-next.js.map +1 -1
  72. package/node/cp-node/fs/get-first-exit.d.ts +7 -3
  73. package/node/cp-node/fs/get-first-exit.js +13 -11
  74. package/node/cp-node/fs/get-first-exit.js.map +1 -1
  75. package/node/cp-node/fs/get-implied-boundary-bezier-between.d.ts +9 -1
  76. package/node/cp-node/fs/get-implied-boundary-bezier-between.js +11 -55
  77. package/node/cp-node/fs/get-implied-boundary-bezier-between.js.map +1 -1
  78. package/node/cp-node/fs/get-mat-curve-between.d.ts +4 -3
  79. package/node/cp-node/fs/get-mat-curve-between.js +5 -49
  80. package/node/cp-node/fs/get-mat-curve-between.js.map +1 -1
  81. package/node/cp-node/fs/get-mat-curve-to-next.d.ts +1 -1
  82. package/node/cp-node/fs/get-mat-curves-between.d.ts +8 -0
  83. package/node/cp-node/fs/get-mat-curves-between.js +9 -2
  84. package/node/cp-node/fs/get-mat-curves-between.js.map +1 -1
  85. package/node/cp-node/fs/get-real-prong-count.d.ts +2 -1
  86. package/node/cp-node/fs/get-real-prong-count.js +11 -5
  87. package/node/cp-node/fs/get-real-prong-count.js.map +1 -1
  88. package/node/cp-node/fs/get-salience.d.ts +10 -0
  89. package/node/cp-node/fs/get-salience.js +17 -1
  90. package/node/cp-node/fs/get-salience.js.map +1 -1
  91. package/node/cp-node/fs/is-fully-terminating.d.ts +4 -2
  92. package/node/cp-node/fs/is-fully-terminating.js +6 -15
  93. package/node/cp-node/fs/is-fully-terminating.js.map +1 -1
  94. package/node/cp-node/fs/is-on-same-loop.d.ts +1 -1
  95. package/node/cp-node/fs/is-special.d.ts +7 -0
  96. package/node/cp-node/fs/is-special.js +9 -2
  97. package/node/cp-node/fs/is-special.js.map +1 -1
  98. package/node/cp-node/fs/is-vertex.d.ts +1 -1
  99. package/node/cp-node/fs/traverse-edges.d.ts +7 -3
  100. package/node/cp-node/fs/traverse-edges.js +7 -3
  101. package/node/cp-node/fs/traverse-edges.js.map +1 -1
  102. package/node/cp-node/stringification/from-stringifyable.d.ts +2 -2
  103. package/node/cp-node/stringification/from-stringifyable.js +1 -1
  104. package/node/cp-node/stringification/from-stringifyable.js.map +1 -1
  105. package/node/cp-node/stringification/to-stringifyable.d.ts +3 -3
  106. package/node/cp-node/stringification/to-stringifyable.js +3 -3
  107. package/node/debug/debug.d.ts +26 -3
  108. package/node/debug/debug.js +16 -5
  109. package/node/debug/debug.js.map +1 -1
  110. package/node/find-2-prong/add-2-prong.js +1 -7
  111. package/node/find-2-prong/add-2-prong.js.map +1 -1
  112. package/node/find-2-prong/calc-seperation-tolerance.d.ts +28 -5
  113. package/node/find-2-prong/calc-seperation-tolerance.js +32 -89
  114. package/node/find-2-prong/calc-seperation-tolerance.js.map +1 -1
  115. package/node/find-2-prong/find-2-prong.js +8 -10
  116. package/node/find-2-prong/find-2-prong.js.map +1 -1
  117. package/node/find-2-prong/find-and-add-2-prongs.js +2 -2
  118. package/node/find-2-prong/find-and-add-2-prongs.js.map +1 -1
  119. package/node/find-2-prong/get-medial/get-antipodal-points.d.ts +1 -2
  120. package/node/find-2-prong/get-medial/get-antipodal-points.js +2 -3
  121. package/node/find-2-prong/get-medial/get-antipodal-points.js.map +1 -1
  122. package/node/find-2-prong/get-medial/get-closest-points.d.ts +1 -8
  123. package/node/find-2-prong/get-medial/get-closest-points.js +4 -40
  124. package/node/find-2-prong/get-medial/get-closest-points.js.map +1 -1
  125. package/node/find-2-prong/reduce-radius.d.ts +1 -1
  126. package/node/find-2-prong/reduce-radius.js +6 -3
  127. package/node/find-2-prong/reduce-radius.js.map +1 -1
  128. package/node/find-3-prong/calc-better-x.js +1 -1
  129. package/node/find-3-prong/calc-better-x.js.map +1 -1
  130. package/node/find-3-prong/find-3-prong-for-delta3s.d.ts +3 -2
  131. package/node/find-3-prong/find-3-prong-for-delta3s.js +35 -41
  132. package/node/find-3-prong/find-3-prong-for-delta3s.js.map +1 -1
  133. package/node/find-3-prong/find-3-prong.js +3 -1
  134. package/node/find-3-prong/find-3-prong.js.map +1 -1
  135. package/node/find-3-prong/find-and-add-3-prongs.js +16 -0
  136. package/node/find-3-prong/find-and-add-3-prongs.js.map +1 -1
  137. package/node/find-mat/create-initial-cp-tree.js +2 -2
  138. package/node/find-mat/create-initial-cp-tree.js.map +1 -1
  139. package/node/find-mat/find-mat.js +3 -4
  140. package/node/find-mat/find-mat.js.map +1 -1
  141. package/node/find-mat/find-mats.d.ts +6 -12
  142. package/node/find-mat/find-mats.js +10 -27
  143. package/node/find-mat/find-mats.js.map +1 -1
  144. package/node/find-mat/get-dull-corners-on-loop.js +2 -2
  145. package/node/find-mat/get-dull-corners-on-loop.js.map +1 -1
  146. package/node/find-mat/get-for-1-prongs-on-loop.js +36 -8
  147. package/node/find-mat/get-for-1-prongs-on-loop.js.map +1 -1
  148. package/node/find-mat/get-meta.d.ts +14 -4
  149. package/node/find-mat/get-meta.js +30 -24
  150. package/node/find-mat/get-meta.js.map +1 -1
  151. package/node/find-mat/get-sharp-corners.js +2 -2
  152. package/node/find-mat/get-sharp-corners.js.map +1 -1
  153. package/node/find-mat/mat-options.d.ts +2 -2
  154. package/node/floyd-warshall/get-graph.d.ts +12 -1
  155. package/node/floyd-warshall/get-graph.js +41 -38
  156. package/node/floyd-warshall/get-graph.js.map +1 -1
  157. package/node/geometry/get-bounding-box-.d.ts +16 -2
  158. package/node/geometry/get-bounding-box-.js +5 -2
  159. package/node/geometry/get-bounding-box-.js.map +1 -1
  160. package/node/geometry/get-closest-square-distance-to-rect.d.ts +3 -0
  161. package/node/geometry/get-closest-square-distance-to-rect.js +7 -5
  162. package/node/geometry/get-closest-square-distance-to-rect.js.map +1 -1
  163. package/node/geometry/get-closest-squared-distance-to-rotated-rect.d.ts +4 -0
  164. package/node/geometry/get-closest-squared-distance-to-rotated-rect.js +11 -5
  165. package/node/geometry/get-closest-squared-distance-to-rotated-rect.js.map +1 -1
  166. package/node/get-medial-points/double-double/dd-get-medial-point-coeffs-bez3.js +1 -2
  167. package/node/get-medial-points/double-double/dd-get-medial-point-coeffs-bez3.js.map +1 -1
  168. package/node/index.d.ts +3 -2
  169. package/node/index.js +2 -1
  170. package/node/index.js.map +1 -1
  171. package/node/mat/clone-mat.d.ts +9 -0
  172. package/node/mat/clone-mat.js +17 -0
  173. package/node/mat/clone-mat.js.map +1 -0
  174. package/node/mat/clone-meta.d.ts +12 -0
  175. package/node/mat/clone-meta.js +24 -0
  176. package/node/mat/clone-meta.js.map +1 -0
  177. package/node/mat/get-boundary-piece-beziers.d.ts +5 -0
  178. package/node/mat/get-boundary-piece-beziers.js +7 -93
  179. package/node/mat/get-boundary-piece-beziers.js.map +1 -1
  180. package/node/mat/get-largest-3-prong.d.ts +6 -0
  181. package/node/mat/get-largest-3-prong.js +8 -5
  182. package/node/mat/get-largest-3-prong.js.map +1 -1
  183. package/node/mat/get-largest-vertex.d.ts +15 -1
  184. package/node/mat/get-largest-vertex.js +20 -7
  185. package/node/mat/get-largest-vertex.js.map +1 -1
  186. package/node/mat/hausdorff-distance-one-sided-exceeds.d.ts +79 -0
  187. package/node/mat/hausdorff-distance-one-sided-exceeds.js +251 -0
  188. package/node/mat/hausdorff-distance-one-sided-exceeds.js.map +1 -0
  189. package/node/mat/mat-meta.d.ts +0 -6
  190. package/node/mat/simplify-mat.d.ts +25 -8
  191. package/node/mat/simplify-mat.js +182 -53
  192. package/node/mat/simplify-mat.js.map +1 -1
  193. package/node/mat/trim-mat.d.ts +4 -2
  194. package/node/mat/trim-mat.js +3 -1
  195. package/node/mat/trim-mat.js.map +1 -1
  196. package/node/point-on-shape/get-boundary-tangent-line.d.ts +19 -0
  197. package/node/point-on-shape/get-boundary-tangent-line.js +33 -0
  198. package/node/point-on-shape/get-boundary-tangent-line.js.map +1 -0
  199. package/node/point-on-shape/get-osculating-circle.d.ts +6 -4
  200. package/node/point-on-shape/get-osculating-circle.js +6 -4
  201. package/node/point-on-shape/get-osculating-circle.js.map +1 -1
  202. package/node/point-on-shape/get-pos-corner.js +2 -2
  203. package/node/point-on-shape/get-pos-corner.js.map +1 -1
  204. package/node/reconstruct-from-mat/reconstruct-from-mat.js +20 -80
  205. package/node/reconstruct-from-mat/reconstruct-from-mat.js.map +1 -1
  206. package/node/reconstruct-from-mat/remove-sat-induced-trivial-3prongs.d.ts +4 -0
  207. package/node/reconstruct-from-mat/remove-sat-induced-trivial-3prongs.js +4 -0
  208. package/node/reconstruct-from-mat/remove-sat-induced-trivial-3prongs.js.map +1 -1
  209. package/node/sat/cull.d.ts +7 -6
  210. package/node/sat/cull.js +13 -16
  211. package/node/sat/cull.js.map +1 -1
  212. package/node/sat/get-sat-culls.d.ts +12 -2
  213. package/node/sat/get-sat-culls.js +21 -16
  214. package/node/sat/get-sat-culls.js.map +1 -1
  215. package/node/svg/get-shape-bounds.d.ts +1 -12
  216. package/node/svg/get-shape-bounds.js +2 -3
  217. package/node/svg/get-shape-bounds.js.map +1 -1
  218. package/node/sweep-line/sweep-line.js.map +1 -1
  219. package/node/utils/get-beziers-from-tangents.d.ts +28 -0
  220. package/node/utils/get-beziers-from-tangents.js +92 -0
  221. package/node/utils/get-beziers-from-tangents.js.map +1 -0
  222. package/node/vertex/remove-vertex.d.ts +5 -3
  223. package/node/vertex/remove-vertex.js +5 -3
  224. package/node/vertex/remove-vertex.js.map +1 -1
  225. package/package.json +9 -9
  226. package/qv-infinite-loop.md +120 -0
  227. package/src/closest-boundary-point/cull-curve-pieces.ts +49 -0
  228. package/src/closest-boundary-point/get-close-boundary-points-certified.ts +5 -2
  229. package/src/closest-boundary-point/get-endpoint-info.ts +96 -0
  230. package/src/closest-boundary-point/get-potential-closest-points-on-curve-certified.ts +5 -23
  231. package/src/closest-boundary-point/root-interval-to-distance-squared-interval.ts +42 -60
  232. package/src/corner/get-corner.ts +10 -1
  233. package/src/corner/get-interface-ccw.ts +2 -2
  234. package/src/cp-node/cp-node.ts +4 -3
  235. package/src/cp-node/fs/get-all-on-loop-by-loop.ts +0 -4
  236. package/src/cp-node/fs/get-angle-between-mat-curves.ts +6 -4
  237. package/src/cp-node/fs/get-boundary-beziers-between.ts +10 -8
  238. package/src/cp-node/fs/get-branch-beziers.ts +3 -2
  239. package/src/cp-node/fs/get-branch.ts +1 -2
  240. package/src/cp-node/fs/get-distance-to-next.ts +4 -2
  241. package/src/cp-node/fs/get-first-exit.ts +15 -14
  242. package/src/cp-node/fs/get-implied-boundary-bezier-between.ts +17 -69
  243. package/src/cp-node/fs/get-mat-curve-between.ts +9 -67
  244. package/src/cp-node/fs/get-mat-curves-between.ts +9 -2
  245. package/src/cp-node/fs/get-real-prong-count.ts +11 -7
  246. package/src/cp-node/fs/get-salience.ts +15 -2
  247. package/src/cp-node/fs/is-fully-terminating.ts +6 -18
  248. package/src/cp-node/fs/is-on-same-loop.ts +2 -2
  249. package/src/cp-node/fs/is-special.ts +11 -6
  250. package/src/cp-node/fs/is-vertex.ts +1 -1
  251. package/src/cp-node/fs/traverse-edges.ts +8 -4
  252. package/src/cp-node/stringification/from-stringifyable.ts +75 -75
  253. package/src/cp-node/stringification/to-stringifyable.ts +3 -3
  254. package/src/debug/debug.ts +44 -8
  255. package/src/find-2-prong/add-2-prong.ts +2 -9
  256. package/src/find-2-prong/calc-seperation-tolerance.ts +34 -115
  257. package/src/find-2-prong/find-2-prong.ts +9 -11
  258. package/src/find-2-prong/find-and-add-2-prongs.ts +2 -2
  259. package/src/find-2-prong/get-medial/get-antipodal-points.ts +1 -3
  260. package/src/find-2-prong/get-medial/get-closest-points.ts +6 -51
  261. package/src/find-2-prong/reduce-radius.ts +6 -4
  262. package/src/find-3-prong/calc-better-x.ts +2 -2
  263. package/src/find-3-prong/find-3-prong-for-delta3s.ts +197 -214
  264. package/src/find-3-prong/find-3-prong.ts +54 -51
  265. package/src/find-3-prong/find-and-add-3-prongs.ts +20 -1
  266. package/src/find-mat/create-initial-cp-tree.ts +2 -2
  267. package/src/find-mat/find-mat.ts +4 -6
  268. package/src/find-mat/find-mats.ts +83 -105
  269. package/src/find-mat/get-dull-corners-on-loop.ts +2 -2
  270. package/src/find-mat/get-for-1-prongs-on-loop.ts +40 -8
  271. package/src/find-mat/get-meta.ts +34 -39
  272. package/src/find-mat/get-sharp-corners.ts +2 -2
  273. package/src/find-mat/mat-options.ts +2 -2
  274. package/src/floyd-warshall/get-graph.ts +46 -47
  275. package/src/geometry/get-bounding-box-.ts +5 -2
  276. package/src/geometry/get-closest-square-distance-to-rect.ts +7 -7
  277. package/src/geometry/get-closest-squared-distance-to-rotated-rect.ts +12 -10
  278. package/src/get-medial-points/double-double/dd-get-medial-point-coeffs-bez3.ts +1 -2
  279. package/src/index.ts +3 -2
  280. package/src/mat/clone-mat.ts +9 -3
  281. package/src/mat/clone-meta.ts +8 -0
  282. package/src/mat/get-boundary-piece-beziers.ts +16 -117
  283. package/src/mat/get-largest-3-prong.ts +9 -6
  284. package/src/mat/get-largest-vertex.ts +25 -9
  285. package/src/mat/hausdorff-distance-one-sided-exceeds.ts +314 -0
  286. package/src/mat/mat-meta.ts +0 -9
  287. package/src/mat/simplify-mat.ts +254 -116
  288. package/src/mat/trim-mat.ts +6 -4
  289. package/src/point-on-shape/get-boundary-tangent-line.ts +36 -0
  290. package/src/point-on-shape/get-osculating-circle.ts +7 -5
  291. package/src/point-on-shape/get-pos-corner.ts +2 -2
  292. package/src/reconstruct-from-mat/reconstruct-from-mat.ts +22 -111
  293. package/src/reconstruct-from-mat/remove-sat-induced-trivial-3prongs.ts +4 -0
  294. package/src/sat/cull.ts +16 -20
  295. package/src/sat/get-sat-culls.ts +28 -23
  296. package/src/svg/get-shape-bounds.ts +2 -3
  297. package/src/sweep-line/sweep-line.ts +1 -1
  298. package/src/utils/get-beziers-from-tangents.ts +110 -0
  299. package/src/utils/map-map.ts +1 -1
  300. package/src/vertex/remove-vertex.ts +5 -3
  301. package/__tests__/cp-node/fs/get-distance-between.spec.ts +0 -7
  302. package/__tests__/cp-node/fs/get-terminating-on-circle.spec.ts +0 -24
  303. package/__tests__/cp-node/fs/is-single-3-prong.spec.ts +0 -17
  304. package/__tests__/cp-node/fs/iterate-all-on-loop.spec.ts +0 -17
  305. package/__tests__/cp-node/fs/traverse-all-forward.spec.ts +0 -14
  306. package/node/closest-boundary-point/cull-bezier-pieces-1.d.ts +0 -9
  307. package/node/closest-boundary-point/cull-bezier-pieces-1.js +0 -17
  308. package/node/closest-boundary-point/cull-bezier-pieces-1.js.map +0 -1
  309. package/node/closest-boundary-point/cull-by-loose-bounding-box.d.ts +0 -13
  310. package/node/closest-boundary-point/cull-by-loose-bounding-box.js +0 -27
  311. package/node/closest-boundary-point/cull-by-loose-bounding-box.js.map +0 -1
  312. package/node/closest-boundary-point/cull-by-tight-boundary-box.d.ts +0 -11
  313. package/node/closest-boundary-point/cull-by-tight-boundary-box.js +0 -27
  314. package/node/closest-boundary-point/cull-by-tight-boundary-box.js.map +0 -1
  315. package/node/cp-node/fs/find-first.d.ts +0 -10
  316. package/node/cp-node/fs/find-first.js +0 -19
  317. package/node/cp-node/fs/find-first.js.map +0 -1
  318. package/node/debug/functions/check-ordering.d.ts +0 -4
  319. package/node/debug/functions/check-ordering.js +0 -43
  320. package/node/debug/functions/check-ordering.js.map +0 -1
  321. package/node/find-2-prong/cull-bezier-pieces.d.ts +0 -13
  322. package/node/find-2-prong/cull-bezier-pieces.js +0 -43
  323. package/node/find-2-prong/cull-bezier-pieces.js.map +0 -1
  324. package/node/floyd-warshall/get-hole-closer-pairs.d.ts +0 -8
  325. package/node/floyd-warshall/get-hole-closer-pairs.js +0 -27
  326. package/node/floyd-warshall/get-hole-closer-pairs.js.map +0 -1
  327. package/node/utils/dual-set.d.ts +0 -27
  328. package/node/utils/dual-set.js +0 -55
  329. package/node/utils/dual-set.js.map +0 -1
  330. package/node/utils/tri-map.d.ts +0 -27
  331. package/node/utils/tri-map.js +0 -49
  332. package/node/utils/tri-map.js.map +0 -1
  333. package/src/closest-boundary-point/cull-bezier-pieces-1.ts +0 -36
  334. package/src/closest-boundary-point/cull-by-loose-bounding-box.ts +0 -42
  335. package/src/closest-boundary-point/cull-by-tight-boundary-box.ts +0 -43
  336. package/src/closest-boundary-point/get-p-from-box.ts +0 -14
  337. package/src/cp-node/fs/add-distance-from.ts +0 -49
  338. package/src/cp-node/fs/get-distance-between.ts +0 -16
  339. package/src/cp-node/fs/get-terminating-on-circle.ts +0 -24
  340. package/src/cp-node/fs/is-single-3-prong.ts +0 -15
  341. package/src/cp-node/fs/iterate-all-on-loop.ts +0 -15
  342. package/src/cp-node/fs/traverse-all-forward.ts +0 -24
  343. package/src/debug/functions/draw/draw-beziers-as-single-path.ts +0 -40
  344. package/src/debug/functions/draw/draw-disk.ts +0 -34
  345. package/src/debug/functions/draw/xmlns.ts +0 -5
  346. package/src/find-2-prong/cull-bezier-pieces.ts +0 -61
  347. package/src/find-2-prong/find-and-add-2-prong.ts +0 -30
  348. package/src/find-2-prong/get-medial/get-closest-points-d.ts +0 -213
  349. package/src/find-2-prong/x-for-debugging.ts +0 -13
  350. package/src/floyd-warshall/get-hole-closer-pairs.ts +0 -35
  351. package/src/mat/get-two-prong-type.ts +0 -13
  352. package/src/point-on-shape/is-pos-dull-corner.ts +0 -18
  353. package/src/point-on-shape/is-pos-quite-dull-corner.ts +0 -18
  354. package/src/point-on-shape/is-pos-quite-sharp-corner.ts +0 -18
  355. package/src/point-on-shape/pos-to-human-string.ts +0 -18
  356. package/src/sweep-line/are-boxes-intersecting.ts +0 -37
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hausdorff-distance-one-sided-exceeds.js","sourceRoot":"","sources":["../../src/mat/hausdorff-distance-one-sided-exceeds.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,10 @@
1
1
  import type { Loop } from 'flo-boolean';
2
2
  import type { CpNode } from '../cp-node/cp-node.js';
3
- import type { Curve } from 'flo-boolean';
4
3
  import { RbTree } from 'flo-ll-rb-tree';
5
4
  interface MatMeta {
6
5
  /** The minimum power of 2 such that `2**maxCoordPowerOf2 >= "the max coordinate"` */
7
6
  readonly maxCoordPowerOf2: number;
8
7
  readonly squaredDiagonalLength: number;
9
- readonly looseBoundingBoxes: number[][][];
10
- readonly tightBoundingBoxes: number[][][];
11
- readonly boundingHulls: number[][][];
12
- readonly sharpCorners: Curve[];
13
- readonly dullCorners: Curve[];
14
8
  readonly loops: Loop[];
15
9
  /**
16
10
  * Primarily for internal use. A tree structure storing the
@@ -3,14 +3,31 @@ import type { Mat } from './mat.js';
3
3
  * Returns a new simplified MAT of the given one by replacing the piecewise
4
4
  * quad beziers composing the MAT with fewer ones to within a given tolerance.
5
5
  *
6
- * @param cpNode a representation of the MAT
7
- * @param anlgeTolerance tolerance given as the degrees difference of the unit
8
- * direction vectors at the interface between curves. A tolerance of zero means
9
- * perfect smoothness is required - defaults to 15
10
- * @param hausdorffTolerance the approximate maximum Hausdorff Distance tolerance -
11
- * defaults to `2**-3`
12
- * @param maxIterations the max iterations of the Hausdorff Distance calculation,
13
- * defaults to `50`
6
+ * * the vertices of the simplified MAT are a subset of those of the given one
7
+ * (so the endpoints of each new curve are endpoints of existing ones) and all
8
+ * 'special' vertices (leaves, 3-prongs and higher, hole-closers) are kept
9
+ * * each branch is simplified Douglas-Peucker style: the single curve from the
10
+ * start to the end of a span of edges is tried and, if some edge deviates from
11
+ * it by more than the tolerance, the span is split at the vertex of worst
12
+ * deviation and both halves are tried in turn; this is `O(n log n)` (in the
13
+ * number of edges `n` of a branch) Hausdorff distance checks as opposed to the
14
+ * `O(n²)` of greedily extending spans one vertex at a time
15
+ * * the deviation of an edge from the single curve is checked first by cheap
16
+ * sampled *lower* bounds (which already find most splits) and only then by
17
+ * the certified `hausdorffDistanceOneSidedExceeds`
18
+ * * the tolerance is a certified upper bound on the one-sided Hausdorff
19
+ * distance from the original MAT curves to the simplified ones (up to
20
+ * floating point roundoff)
21
+ *
22
+ * @param mat the MAT to simplify (it is not modified)
23
+ * @param hausdorffTolerance the maximum one-sided Hausdorff distance (in
24
+ * coordinate units) from the original to the simplified MAT - defaults to
25
+ * `2**-3`
26
+ * @param maxIterations the max bisections of each Hausdorff distance check
27
+ * (see `hausdorffDistanceOneSidedExceeds`) after which the check conservatively
28
+ * fails (so that the span is split rather than accepted) - defaults to `1000`;
29
+ * lower values trade simplification quality for a bound on the time spent on
30
+ * curves that are only just within tolerance
14
31
  */
15
32
  declare function simplifyMat(mat: Mat, hausdorffTolerance?: number, maxIterations?: number): Mat;
16
33
  export { simplifyMat };
@@ -1,84 +1,213 @@
1
- import { hausdorffDistanceOneSided } from 'flo-bezier3';
1
+ import { evalDeCasteljau } from 'flo-bezier3';
2
2
  import { removeVertex } from '../vertex/remove-vertex.js';
3
3
  import { getBranches } from './get-branches.js';
4
4
  import { getMatCurveToNext } from '../cp-node/fs/get-mat-curve-to-next.js';
5
5
  import { getMatCurveBetween } from '../cp-node/fs/get-mat-curve-between.js';
6
6
  import { createNewCpTrees } from './create-new-cp-trees.js';
7
7
  import { clone } from '../cp-node/fs/clone.js';
8
- import { findFirst } from '../cp-node/fs/find-first.js';
9
8
  import { isTerminating } from '../cp-node/fs/is-terminating.js';
10
- import { isVertex } from '../cp-node/fs/is-vertex.js';
9
+ import { isSpecial } from '../cp-node/fs/is-special.js';
11
10
  import { getProngCount } from '../cp-node/fs/get-prong-count.js';
12
- const { max } = Math;
13
- // FUTURE could be made faster by binary "search" on hausdorff curves?
11
+ import { distanceToCurves, hausdorffDistanceOneSidedExceeds } from './hausdorff-distance-one-sided-exceeds.js';
12
+ const { abs } = Math;
13
+ /**
14
+ * Spans of at least this many edges whose worst vertex lies within
15
+ * `END_FRACTION` of either end are additionally split at their middle - this
16
+ * guards against the degenerate case where each split peels off only a few
17
+ * edges at an end (making the recursion depth, and the total work, quadratic
18
+ * in the branch length) at the cost of at most one extra curve per occurrence.
19
+ *
20
+ * @internal
21
+ */
22
+ const MIN_EDGES_FOR_BALANCED_SPLIT = 32;
23
+ /** @internal */
24
+ const END_FRACTION = 1 / 8;
14
25
  /**
15
26
  * Returns a new simplified MAT of the given one by replacing the piecewise
16
27
  * quad beziers composing the MAT with fewer ones to within a given tolerance.
17
28
  *
18
- * @param cpNode a representation of the MAT
19
- * @param anlgeTolerance tolerance given as the degrees difference of the unit
20
- * direction vectors at the interface between curves. A tolerance of zero means
21
- * perfect smoothness is required - defaults to 15
22
- * @param hausdorffTolerance the approximate maximum Hausdorff Distance tolerance -
23
- * defaults to `2**-3`
24
- * @param maxIterations the max iterations of the Hausdorff Distance calculation,
25
- * defaults to `50`
29
+ * * the vertices of the simplified MAT are a subset of those of the given one
30
+ * (so the endpoints of each new curve are endpoints of existing ones) and all
31
+ * 'special' vertices (leaves, 3-prongs and higher, hole-closers) are kept
32
+ * * each branch is simplified Douglas-Peucker style: the single curve from the
33
+ * start to the end of a span of edges is tried and, if some edge deviates from
34
+ * it by more than the tolerance, the span is split at the vertex of worst
35
+ * deviation and both halves are tried in turn; this is `O(n log n)` (in the
36
+ * number of edges `n` of a branch) Hausdorff distance checks as opposed to the
37
+ * `O(n²)` of greedily extending spans one vertex at a time
38
+ * * the deviation of an edge from the single curve is checked first by cheap
39
+ * sampled *lower* bounds (which already find most splits) and only then by
40
+ * the certified `hausdorffDistanceOneSidedExceeds`
41
+ * * the tolerance is a certified upper bound on the one-sided Hausdorff
42
+ * distance from the original MAT curves to the simplified ones (up to
43
+ * floating point roundoff)
44
+ *
45
+ * @param mat the MAT to simplify (it is not modified)
46
+ * @param hausdorffTolerance the maximum one-sided Hausdorff distance (in
47
+ * coordinate units) from the original to the simplified MAT - defaults to
48
+ * `2**-3`
49
+ * @param maxIterations the max bisections of each Hausdorff distance check
50
+ * (see `hausdorffDistanceOneSidedExceeds`) after which the check conservatively
51
+ * fails (so that the span is split rather than accepted) - defaults to `1000`;
52
+ * lower values trade simplification quality for a bound on the time spent on
53
+ * curves that are only just within tolerance
26
54
  */
27
- function simplifyMat(mat, hausdorffTolerance = 2 ** -3, maxIterations = 50) {
55
+ function simplifyMat(mat, hausdorffTolerance = 2 ** -3, maxIterations = 1000) {
28
56
  let cpNode = clone(mat.cpNode);
29
- // Start from a leaf
57
+ // The clone gets its own `cpTrees` (removing vertices below must not
58
+ // touch the trees of the given `mat`) - they are kept up to date by
59
+ // `removeVertex`.
60
+ const meta = { ...mat.meta, cpTrees: createNewCpTrees(cpNode) };
61
+ // Start from a leaf (which is never removed so it can be returned)
30
62
  while (!isTerminating(cpNode)) {
31
63
  cpNode = cpNode.next;
32
64
  }
33
65
  const branches = getBranches(cpNode);
34
- const canDeletes = new Set();
66
+ const toRemove = [];
35
67
  for (let k = 0; k < branches.length; k++) {
36
- const branch = branches[k];
37
- // Try to remove some
38
- let j = 0;
39
- while (j < branch.length) {
40
- const i = j;
41
- while (true) {
42
- j++;
43
- if (j === branch.length) {
44
- break;
45
- }
46
- const hd = getTotalHausdorffDistance(i, j, branch, maxIterations);
47
- if (hd > hausdorffTolerance) {
48
- break;
68
+ simplifyBranch(branches[k], hausdorffTolerance, maxIterations, toRemove);
69
+ }
70
+ for (const cpNode of toRemove) {
71
+ removeVertex(cpNode, meta);
72
+ }
73
+ return { cpNode, meta };
74
+ }
75
+ /**
76
+ * Simplifies the given branch by adding the `CpNode`s of the vertices that
77
+ * can be removed to `toRemove`.
78
+ *
79
+ * * edge `k` of the branch runs from `branch[k]` to `branch[k].next`; vertex
80
+ * `k` (for `0 < k < branch.length`) is the interior vertex `branch[k]` between
81
+ * edges `k-1` and `k`
82
+ * * a span of edges `i..j` is simplified to the single curve from the start
83
+ * of edge `i` to the end of edge `j`, removing the interior vertices `i+1..j`
84
+ *
85
+ * @internal
86
+ */
87
+ function simplifyBranch(branch, tolerance, maxIterations, toRemove) {
88
+ const n = branch.length; // the number of edges
89
+ if (n < 2) {
90
+ return;
91
+ }
92
+ // the MAT curves of the edges of the branch - computed once per branch
93
+ const curves = branch.map(getMatCurveToNext);
94
+ const vertexPoints = branch.map(cpNode => cpNode.pointOnShape.circle.center);
95
+ // The spans still to be processed; interior vertices that cannot be
96
+ // removed must be kept so the branch is pre-split there: the 'special'
97
+ // ones (e.g. hole-closers) and those whose circle carries more than 2
98
+ // `CpNode`s (e.g. a 2-prong having a terminating sharp corner contact,
99
+ // which `getBranch` passes through but `removeVertex` cannot remove).
100
+ const spans = [];
101
+ let a = 0;
102
+ for (let k = 1; k < n; k++) {
103
+ if (isSpecial(branch[k]) || getProngCount(branch[k]) !== 2) {
104
+ spans.push([a, k - 1]);
105
+ a = k;
106
+ }
107
+ }
108
+ spans.push([a, n - 1]);
109
+ while (spans.length > 0) {
110
+ const [i, j] = spans.pop();
111
+ if (j <= i) {
112
+ continue;
113
+ } // a single edge - nothing to remove
114
+ const longCurves = getMatCurveBetween(branch[i], branch[j].next);
115
+ //------------------------------------------------------------------
116
+ // 1. Cheap pass: sampled lower bounds on the deviation of each edge -
117
+ // the interior vertices and the piece midpoints.
118
+ //------------------------------------------------------------------
119
+ let worstD = 0;
120
+ let worstV = -1;
121
+ for (let k = i; k <= j; k++) {
122
+ if (k > i) {
123
+ const d = distanceToCurves(vertexPoints[k], longCurves);
124
+ if (d > worstD) {
125
+ worstD = d;
126
+ worstV = k;
49
127
  }
50
- else {
51
- canDeletes.add(branch[j]);
128
+ }
129
+ const pieces = curves[k];
130
+ for (let m = 0; m < pieces.length; m++) {
131
+ const d = distanceToCurves(evalDeCasteljau(pieces[m], 0.5), longCurves);
132
+ if (d > worstD) {
133
+ worstD = d;
134
+ worstV = getSplitVertexForEdge(i, j, k, m, pieces.length);
52
135
  }
53
136
  }
54
- if (i + 1 === j) {
55
- continue; // no simplification occured
137
+ }
138
+ if (worstD > tolerance) {
139
+ split(spans, i, j, worstV);
140
+ continue;
141
+ }
142
+ //------------------------------------------------------------------
143
+ // 2. Certified pass - split at the first edge found to exceed the
144
+ // tolerance.
145
+ //------------------------------------------------------------------
146
+ let splitV = -1;
147
+ outer: for (let k = i; k <= j; k++) {
148
+ const pieces = curves[k];
149
+ for (let m = 0; m < pieces.length; m++) {
150
+ if (hausdorffDistanceOneSidedExceeds(pieces[m], longCurves, tolerance, maxIterations)) {
151
+ splitV = getSplitVertexForEdge(i, j, k, m, pieces.length);
152
+ break outer;
153
+ }
56
154
  }
57
155
  }
58
- }
59
- // cpNode = findFirst(cpNode_ => isTerminating(cpNode_) ? cpNode_ : undefined, cpNode)!;
60
- cpNode = findFirst(isTerminating, cpNode);
61
- for (const cpNode of canDeletes) {
62
- if (!isVertex(cpNode => (getProngCount(cpNode) !== 2) &&
63
- !cpNode.isHoleClosing)(cpNode)) {
64
- removeVertex(cpNode, mat.meta);
156
+ if (splitV !== -1) {
157
+ split(spans, i, j, splitV);
158
+ continue;
65
159
  }
66
- }
67
- return {
68
- cpNode,
69
- meta: {
70
- ...mat.meta,
71
- cpTrees: createNewCpTrees(cpNode)
160
+ //------------------------------------------------------------------
161
+ // 3. Accept the span.
162
+ //------------------------------------------------------------------
163
+ for (let k = i + 1; k <= j; k++) {
164
+ toRemove.push(branch[k]);
72
165
  }
73
- };
166
+ }
167
+ }
168
+ /**
169
+ * Returns the vertex (in `(i,j]`) at which to split the span of edges `i..j`
170
+ * given that piece `m` (of `numPieces`) of edge `k` deviates too much: one of
171
+ * the edge's two endpoint vertices - the one on the side of the piece if the
172
+ * edge has 2 pieces, else the one nearer the middle of the span (for a more
173
+ * balanced recursion).
174
+ *
175
+ * @internal
176
+ */
177
+ function getSplitVertexForEdge(i, j, k, m, numPieces) {
178
+ const canUseStart = k > i;
179
+ const canUseEnd = k + 1 <= j;
180
+ if (!canUseStart) {
181
+ return k + 1;
182
+ }
183
+ if (!canUseEnd) {
184
+ return k;
185
+ }
186
+ if (numPieces === 2) {
187
+ return m === 0 ? k : k + 1;
188
+ }
189
+ const mid = (i + 1 + j) / 2; // middle of the interior vertices `i+1..j`
190
+ return abs(k - mid) <= abs(k + 1 - mid) ? k : k + 1;
74
191
  }
75
- function getTotalHausdorffDistance(i, j, branch, hausdorffSpacing) {
76
- const hds = [];
77
- const longCurve = getMatCurveBetween(branch[i], branch[j].next);
78
- for (; i < j + 1; i++) {
79
- hds.push(hausdorffDistanceOneSided(getMatCurveToNext(branch[i]), longCurve, hausdorffSpacing));
192
+ /**
193
+ * Splits the span of edges `i..j` at the vertex `v` (in `(i,j]`) and pushes
194
+ * the resulting spans (for very long spans with `v` near an end also split at
195
+ * the middle - see `MIN_EDGES_FOR_BALANCED_SPLIT`).
196
+ *
197
+ * @internal
198
+ */
199
+ function split(spans, i, j, v) {
200
+ const numEdges = j - i + 1;
201
+ if (numEdges >= MIN_EDGES_FOR_BALANCED_SPLIT) {
202
+ const margin = numEdges * END_FRACTION;
203
+ if (v - i < margin || j + 1 - v < margin) {
204
+ const vMid = (i + j + 1) >>> 1; // an interior vertex near the middle
205
+ const [v1, v2] = v < vMid ? [v, vMid] : [vMid, v];
206
+ spans.push([v2, j], [v1, v2 - 1], [i, v1 - 1]);
207
+ return;
208
+ }
80
209
  }
81
- return max(...hds);
210
+ spans.push([v, j], [i, v - 1]);
82
211
  }
83
212
  export { simplifyMat };
84
213
  //# sourceMappingURL=simplify-mat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simplify-mat.js","sourceRoot":"","sources":["../../src/mat/simplify-mat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simplify-mat.js","sourceRoot":"","sources":["../../src/mat/simplify-mat.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,9 @@ import type { Mat } from './mat.js';
3
3
  * Trims the given Medial Axis Transform so that only cycles remain. Similar to
4
4
  * toScaleAxis(mat, Infinity).
5
5
  *
6
- * @param mat The MAT to trim.
6
+ * * returns `undefined` if the MAT has no cycles (i.e. the shape has no holes)
7
+ *
8
+ * @param mat The MAT to trim (it is not modified).
7
9
  */
8
- declare function trimMat(mat: Mat): Mat;
10
+ declare function trimMat(mat: Mat): Mat | undefined;
9
11
  export { trimMat };
@@ -5,7 +5,9 @@ import { clone } from '../cp-node/fs/clone.js';
5
5
  * Trims the given Medial Axis Transform so that only cycles remain. Similar to
6
6
  * toScaleAxis(mat, Infinity).
7
7
  *
8
- * @param mat The MAT to trim.
8
+ * * returns `undefined` if the MAT has no cycles (i.e. the shape has no holes)
9
+ *
10
+ * @param mat The MAT to trim (it is not modified).
9
11
  */
10
12
  function trimMat(mat) {
11
13
  // FUTURE - clone entire `Mat` instead (the function already exists)
@@ -1 +1 @@
1
- {"version":3,"file":"trim-mat.js","sourceRoot":"","sources":["../../src/mat/trim-mat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG/C;;;;;GAKG;AACH,SAAS,OAAO,CAAC,GAAQ;IACrB,oEAAoE;IACpE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,SAAU,CAAC;IAAC,CAAC;IAEnC,OAAO;QACH,MAAM;QACN,IAAI,EAAE;YACF,GAAG,GAAG,CAAC,IAAI;YACX,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC;SACpC;KACJ,CAAA;AACL,CAAC;AAGD,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"trim-mat.js","sourceRoot":"","sources":["../../src/mat/trim-mat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG/C;;;;;;;GAOG;AACH,SAAS,OAAO,CAAC,GAAQ;IACrB,oEAAoE;IACpE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;IAElC,OAAO;QACH,MAAM;QACN,IAAI,EAAE;YACF,GAAG,GAAG,CAAC,IAAI;YACX,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC;SACpC;KACJ,CAAA;AACL,CAAC;AAGD,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { PointOnShape } from './point-on-shape.js';
2
+ /**
3
+ * Returns a line segment starting at the given point on the shape boundary and
4
+ * being tangent to the boundary at that point.
5
+ *
6
+ * * the returned line is of the form `[p, p + tangent]` where `p` is the
7
+ * point on the shape (the tangent is not normalized)
8
+ * * if the point falls on the boundary between two curves then the curve
9
+ * the point starts (if `fromElseTo` is `true`) or ends (if `fromElseTo` is
10
+ * `false`) is used
11
+ *
12
+ * @param pos the point on the shape
13
+ * @param fromElseTo `true` if the tangent is to be taken as leaving the point,
14
+ * `false` if it is to be taken as arriving at the point
15
+ *
16
+ * @internal
17
+ */
18
+ declare function getBoundaryTangentLine(pos: PointOnShape, fromElseTo: boolean): number[][];
19
+ export { getBoundaryTangentLine };
@@ -0,0 +1,33 @@
1
+ import { tangent } from 'flo-bezier3';
2
+ import { translate } from 'flo-vector2d';
3
+ /**
4
+ * Returns a line segment starting at the given point on the shape boundary and
5
+ * being tangent to the boundary at that point.
6
+ *
7
+ * * the returned line is of the form `[p, p + tangent]` where `p` is the
8
+ * point on the shape (the tangent is not normalized)
9
+ * * if the point falls on the boundary between two curves then the curve
10
+ * the point starts (if `fromElseTo` is `true`) or ends (if `fromElseTo` is
11
+ * `false`) is used
12
+ *
13
+ * @param pos the point on the shape
14
+ * @param fromElseTo `true` if the tangent is to be taken as leaving the point,
15
+ * `false` if it is to be taken as arriving at the point
16
+ *
17
+ * @internal
18
+ */
19
+ function getBoundaryTangentLine(pos, fromElseTo) {
20
+ let { curve, t } = pos;
21
+ const { p } = pos;
22
+ if (fromElseTo && t === 1) {
23
+ t = 0;
24
+ curve = curve.next;
25
+ }
26
+ if (!fromElseTo && t === 0) {
27
+ t = 1;
28
+ curve = curve.prev;
29
+ }
30
+ return [p, translate(p, tangent(curve.ps, t))];
31
+ }
32
+ export { getBoundaryTangentLine };
33
+ //# sourceMappingURL=get-boundary-tangent-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-boundary-tangent-line.js","sourceRoot":"","sources":["../../src/point-on-shape/get-boundary-tangent-line.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC;;;;;;;;;;;;;;;GAeG;AACH,SAAS,sBAAsB,CACvB,GAAiB,EACjB,UAAmB;IAEvB,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IACvB,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAElB,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAAC,CAAC;IACzD,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IAAC,CAAC;IAE1D,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAGD,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
@@ -1,11 +1,13 @@
1
1
  import type { PrePointOnShape } from './point-on-shape.js';
2
2
  /**
3
- * Returns the osculating circle at this point of the curve.
3
+ * Returns the osculating circle at this point of the curve as
4
+ * `[center, radius]`.
4
5
  *
5
- * @param minCurvature if not `Infinity` then the circle radius will be limited
6
- * to this value
6
+ * @param maxOsculatingCircleRadius the circle radius will be limited to this
7
+ * value (i.e. the curvature is taken to be at least its reciprocal)
7
8
  * @param pos the `PointOnShape` identifying the point
8
- * @param useMaxRadius
9
+ * @param norm the (not necessarily unit) normal at the point pointing towards
10
+ * the center of the circle
9
11
  */
10
12
  declare function getOsculatingCircle(maxOsculatingCircleRadius: number, pos: PrePointOnShape, norm: number[]): [number[], number];
11
13
  export { getOsculatingCircle };
@@ -1,12 +1,14 @@
1
1
  import { ddCurvature } from 'flo-bezier3';
2
2
  const { sqrt } = Math;
3
3
  /**
4
- * Returns the osculating circle at this point of the curve.
4
+ * Returns the osculating circle at this point of the curve as
5
+ * `[center, radius]`.
5
6
  *
6
- * @param minCurvature if not `Infinity` then the circle radius will be limited
7
- * to this value
7
+ * @param maxOsculatingCircleRadius the circle radius will be limited to this
8
+ * value (i.e. the curvature is taken to be at least its reciprocal)
8
9
  * @param pos the `PointOnShape` identifying the point
9
- * @param useMaxRadius
10
+ * @param norm the (not necessarily unit) normal at the point pointing towards
11
+ * the center of the circle
10
12
  */
11
13
  function getOsculatingCircle(maxOsculatingCircleRadius, pos, norm) {
12
14
  const { curve, p, t } = pos;
@@ -1 +1 @@
1
- {"version":3,"file":"get-osculating-circle.js","sourceRoot":"","sources":["../../src/point-on-shape/get-osculating-circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAGtB;;;;;;;GAOG;AACH,SAAS,mBAAmB,CACpB,yBAAiC,EACjC,GAAoB,EACpB,IAAc;IAElB,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAErB,MAAM,YAAY,GAAG,CAAC,GAAC,yBAAyB,CAAC;IAEjD,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,GAAC,CAAC,CAAC;IAElB,OAAO;QACH,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAC,KAAK,CAAC;QAClC,CAAC,GAAC,CAAC;KACN,CAAC;AACN,CAAC;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
1
+ {"version":3,"file":"get-osculating-circle.js","sourceRoot":"","sources":["../../src/point-on-shape/get-osculating-circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAGtB;;;;;;;;;GASG;AACH,SAAS,mBAAmB,CACpB,yBAAiC,EACjC,GAAoB,EACpB,IAAc;IAElB,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;IAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IAErB,MAAM,YAAY,GAAG,CAAC,GAAC,yBAAyB,CAAC;IAEjD,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAC,EAAE,GAAG,EAAE,GAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,GAAC,CAAC,CAAC;IAElB,OAAO;QACH,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAC,KAAK,CAAC;QAClC,CAAC,GAAC,CAAC;KACN,CAAC;AACN,CAAC;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -1,11 +1,11 @@
1
1
  import { memoize } from 'flo-memoize';
2
- import { getCorner } from "../corner/get-corner.js";
2
+ import { getCorner$ } from "../corner/get-corner.js";
3
3
  /**
4
4
  * @internal
5
5
  */
6
6
  const getPosCorner$ = memoize(function (pos) {
7
7
  const { t, curve } = pos;
8
- return getCorner(t === 1 ? curve.ps : curve.prev.ps, t === 1 ? curve.next.ps : curve.ps);
8
+ return getCorner$(t === 1 ? curve.ps : curve.prev.ps, t === 1 ? curve.next.ps : curve.ps);
9
9
  });
10
10
  export { getPosCorner$ };
11
11
  //# sourceMappingURL=get-pos-corner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-pos-corner.js","sourceRoot":"","sources":["../../src/point-on-shape/get-pos-corner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD;;GAEG;AACH,MAAM,aAAa,GAAG,OAAO,CAAC,UACtB,GAA+B;IAEnC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAEzB,OAAO,SAAS,CACZ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAClC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CACrC,CAAC;AACN,CAAC,CAAC,CAAC;AAGH,OAAO,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"get-pos-corner.js","sourceRoot":"","sources":["../../src/point-on-shape/get-pos-corner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD;;GAEG;AACH,MAAM,aAAa,GAAG,OAAO,CAAC,UACtB,GAA+B;IAEnC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAEzB,OAAO,UAAU,CACb,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAClC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CACrC,CAAC;AACN,CAAC,CAAC,CAAC;AAGH,OAAO,EAAE,aAAa,EAAE,CAAA"}