flo-mat 2.0.5 → 3.0.1

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 (653) hide show
  1. package/.quokka +4 -0
  2. package/browser/index.js +18411 -14618
  3. package/browser/index.min.js +1 -1
  4. package/node/closest-boundary-point/cull-bezier-pieces.d.ts +9 -0
  5. package/node/closest-boundary-point/cull-bezier-pieces.js +17 -0
  6. package/node/closest-boundary-point/cull-bezier-pieces.js.map +1 -0
  7. package/node/{mat/closest-boundary-point → closest-boundary-point}/cull-by-loose-bounding-box.d.ts +2 -2
  8. package/node/{mat/closest-boundary-point → closest-boundary-point}/cull-by-loose-bounding-box.js +2 -2
  9. package/node/closest-boundary-point/cull-by-loose-bounding-box.js.map +1 -0
  10. package/node/{mat/closest-boundary-point → closest-boundary-point}/cull-by-tight-boundary-box.d.ts +2 -2
  11. package/node/{mat/closest-boundary-point → closest-boundary-point}/cull-by-tight-boundary-box.js +1 -1
  12. package/node/closest-boundary-point/cull-by-tight-boundary-box.js.map +1 -0
  13. package/node/closest-boundary-point/dd-deflate-with-running-error.d.ts +25 -0
  14. package/node/closest-boundary-point/dd-deflate-with-running-error.js +68 -0
  15. package/node/closest-boundary-point/dd-deflate-with-running-error.js.map +1 -0
  16. package/node/closest-boundary-point/foot-and-endpoint-info.d.ts +10 -0
  17. package/node/closest-boundary-point/foot-and-endpoint-info.js +2 -0
  18. package/node/closest-boundary-point/foot-and-endpoint-info.js.map +1 -0
  19. package/node/{mat/closest-boundary-point → closest-boundary-point}/get-best-distance-squared.d.ts +2 -2
  20. package/node/{mat/closest-boundary-point → closest-boundary-point}/get-best-distance-squared.js +2 -3
  21. package/node/closest-boundary-point/get-best-distance-squared.js.map +1 -0
  22. package/node/closest-boundary-point/get-close-boundary-points-certified.d.ts +15 -0
  23. package/node/closest-boundary-point/get-close-boundary-points-certified.js +40 -0
  24. package/node/closest-boundary-point/get-close-boundary-points-certified.js.map +1 -0
  25. package/node/closest-boundary-point/get-closest-boundary-point-certified.d.ts +15 -0
  26. package/node/closest-boundary-point/get-closest-boundary-point-certified.js +42 -0
  27. package/node/closest-boundary-point/get-closest-boundary-point-certified.js.map +1 -0
  28. package/node/closest-boundary-point/get-p-from-box.d.ts +3 -0
  29. package/node/closest-boundary-point/get-p-from-box.js +11 -0
  30. package/node/closest-boundary-point/get-p-from-box.js.map +1 -0
  31. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.d.ts +12 -0
  32. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js +93 -0
  33. package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js.map +1 -0
  34. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.d.ts +13 -0
  35. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.js +58 -0
  36. package/node/closest-boundary-point/root-interval-to-distance-squared-interval.js.map +1 -0
  37. package/node/{contact-point.d.ts → contact-point/contact-point.d.ts} +3 -3
  38. package/node/{contact-point.js → contact-point/contact-point.js} +1 -5
  39. package/node/contact-point/contact-point.js.map +1 -0
  40. package/node/{compare-curvatures-at-interface.js → corner/compare-curvatures-at-interface.js} +2 -2
  41. package/node/corner/compare-curvatures-at-interface.js.map +1 -0
  42. package/node/{mat → corner}/corner.d.ts +1 -1
  43. package/node/{mat → corner}/corner.js.map +1 -1
  44. package/node/corner/get-corner.d.ts +15 -0
  45. package/node/{curve.js → corner/get-corner.js} +6 -17
  46. package/node/corner/get-corner.js.map +1 -0
  47. package/node/{get-interface-ccw.js → corner/get-interface-ccw.js} +18 -33
  48. package/node/corner/get-interface-ccw.js.map +1 -0
  49. package/node/cp-node/clone.d.ts +1 -1
  50. package/node/cp-node/clone.js +6 -4
  51. package/node/cp-node/clone.js.map +1 -1
  52. package/node/cp-node/cp-node.d.ts +196 -0
  53. package/node/cp-node/cp-node.js +249 -0
  54. package/node/cp-node/cp-node.js.map +1 -0
  55. package/node/cp-node/create-cp-node.d.ts +4 -0
  56. package/node/cp-node/create-cp-node.js +8 -0
  57. package/node/cp-node/create-cp-node.js.map +1 -0
  58. package/node/cp-node/enhance-cp-node.d.ts +24 -0
  59. package/node/cp-node/enhance-cp-node.js +20 -0
  60. package/node/cp-node/enhance-cp-node.js.map +1 -0
  61. package/node/{get-boundary-bezier-parts-to-next.js → cp-node/get-boundary-bezier-parts-to-next.js} +1 -1
  62. package/node/cp-node/get-boundary-bezier-parts-to-next.js.map +1 -0
  63. package/node/{get-boundary-beziers-to-next.d.ts → cp-node/get-boundary-beziers-to-next.d.ts} +1 -1
  64. package/node/{get-boundary-beziers-to-next.js → cp-node/get-boundary-beziers-to-next.js} +1 -1
  65. package/node/cp-node/get-boundary-beziers-to-next.js.map +1 -0
  66. package/node/cp-node/get-cp-node-ordering.d.ts +8 -0
  67. package/node/cp-node/get-cp-node-ordering.js +12 -0
  68. package/node/cp-node/get-cp-node-ordering.js.map +1 -0
  69. package/node/{get-curve-to-next.js → cp-node/get-curve-to-next.js} +1 -1
  70. package/node/cp-node/get-curve-to-next.js.map +1 -0
  71. package/node/cp-node/remove.d.ts +1 -1
  72. package/node/cp-node/traverse-cp.d.ts +12 -0
  73. package/node/cp-node/traverse-cp.js +26 -0
  74. package/node/cp-node/traverse-cp.js.map +1 -0
  75. package/node/{traverse-edges.js → cp-node/traverse-edges.js} +4 -3
  76. package/node/cp-node/traverse-edges.js.map +1 -0
  77. package/node/{traverse-vertices.js → cp-node/traverse-vertices.js} +4 -3
  78. package/node/cp-node/traverse-vertices.js.map +1 -0
  79. package/node/{curve.d.ts → curve/curve.d.ts} +4 -17
  80. package/node/curve/curve.js +14 -0
  81. package/node/curve/curve.js.map +1 -0
  82. package/node/debug/cp-node-for-debugging.d.ts +2 -2
  83. package/node/debug/debug-elem-types.d.ts +8 -8
  84. package/node/debug/debug.d.ts +6 -6
  85. package/node/debug/debug.js +2 -2
  86. package/node/debug/debug.js.map +1 -1
  87. package/node/debug/functions/draw-elem/bounding-hull.d.ts +2 -2
  88. package/node/debug/functions/draw-elem/bounding-hull.js +3 -3
  89. package/node/debug/functions/draw-elem/bounding-hull.js.map +1 -1
  90. package/node/debug/functions/draw-elem/branch.d.ts +2 -2
  91. package/node/debug/functions/draw-elem/branch.js +4 -3
  92. package/node/debug/functions/draw-elem/branch.js.map +1 -1
  93. package/node/debug/functions/draw-elem/culls.d.ts +2 -2
  94. package/node/debug/functions/draw-elem/culls.js +2 -2
  95. package/node/debug/functions/draw-elem/culls.js.map +1 -1
  96. package/node/debug/functions/draw-elem/draw-circle-percent.d.ts +1 -1
  97. package/node/debug/functions/draw-elem/draw-circle-percent.js +1 -1
  98. package/node/debug/functions/draw-elem/draw-circle-percent.js.map +1 -1
  99. package/node/debug/functions/draw-elem/draw-elem.d.ts +3 -3
  100. package/node/debug/functions/draw-elem/draw-elem.js +3 -3
  101. package/node/debug/functions/draw-elem/draw-elem.js.map +1 -1
  102. package/node/debug/functions/draw-elem/dull-corner.d.ts +3 -3
  103. package/node/debug/functions/draw-elem/dull-corner.js +3 -4
  104. package/node/debug/functions/draw-elem/dull-corner.js.map +1 -1
  105. package/node/debug/functions/draw-elem/leaves.d.ts +2 -2
  106. package/node/debug/functions/draw-elem/leaves.js +1 -1
  107. package/node/debug/functions/draw-elem/leaves.js.map +1 -1
  108. package/node/debug/functions/draw-elem/loop.d.ts +2 -2
  109. package/node/debug/functions/draw-elem/loop.js +1 -2
  110. package/node/debug/functions/draw-elem/loop.js.map +1 -1
  111. package/node/debug/functions/draw-elem/loops.d.ts +1 -1
  112. package/node/debug/functions/draw-elem/loops.js +0 -1
  113. package/node/debug/functions/draw-elem/loops.js.map +1 -1
  114. package/node/debug/functions/draw-elem/loose-bounding-box.d.ts +2 -2
  115. package/node/debug/functions/draw-elem/loose-bounding-box.js +3 -3
  116. package/node/debug/functions/draw-elem/loose-bounding-box.js.map +1 -1
  117. package/node/debug/functions/draw-elem/mat.d.ts +3 -3
  118. package/node/debug/functions/draw-elem/mat.js +9 -7
  119. package/node/debug/functions/draw-elem/mat.js.map +1 -1
  120. package/node/debug/functions/draw-elem/max-vertex.d.ts +2 -2
  121. package/node/debug/functions/draw-elem/max-vertex.js +1 -1
  122. package/node/debug/functions/draw-elem/max-vertex.js.map +1 -1
  123. package/node/debug/functions/draw-elem/min-y.d.ts +3 -3
  124. package/node/debug/functions/draw-elem/min-y.js +2 -6
  125. package/node/debug/functions/draw-elem/min-y.js.map +1 -1
  126. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.d.ts +2 -2
  127. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js +2 -2
  128. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js.map +1 -1
  129. package/node/debug/functions/draw-elem/one-prong.d.ts +2 -2
  130. package/node/debug/functions/draw-elem/one-prong.js +6 -11
  131. package/node/debug/functions/draw-elem/one-prong.js.map +1 -1
  132. package/node/debug/functions/draw-elem/sharp-corner.d.ts +3 -3
  133. package/node/debug/functions/draw-elem/sharp-corner.js +3 -4
  134. package/node/debug/functions/draw-elem/sharp-corner.js.map +1 -1
  135. package/node/debug/functions/draw-elem/three-prong.d.ts +2 -2
  136. package/node/debug/functions/draw-elem/three-prong.js +8 -10
  137. package/node/debug/functions/draw-elem/three-prong.js.map +1 -1
  138. package/node/debug/functions/draw-elem/tight-bounding-box.d.ts +2 -2
  139. package/node/debug/functions/draw-elem/tight-bounding-box.js +3 -3
  140. package/node/debug/functions/draw-elem/tight-bounding-box.js.map +1 -1
  141. package/node/debug/functions/draw-elem/two-prong.d.ts +2 -2
  142. package/node/debug/functions/draw-elem/two-prong.js +7 -8
  143. package/node/debug/functions/draw-elem/two-prong.js.map +1 -1
  144. package/node/debug/functions/draw-elem/vertex.d.ts +4 -3
  145. package/node/debug/functions/draw-elem/vertex.js +11 -9
  146. package/node/debug/functions/draw-elem/vertex.js.map +1 -1
  147. package/node/debug/functions/general.d.ts +8 -8
  148. package/node/debug/functions/general.js +8 -8
  149. package/node/debug/functions/general.js.map +1 -1
  150. package/node/debug/functions/three-prong.d.ts +2 -2
  151. package/node/debug/functions/three-prong.js +10 -13
  152. package/node/debug/functions/three-prong.js.map +1 -1
  153. package/node/debug/functions/two-prong.d.ts +16 -5
  154. package/node/debug/functions/two-prong.js +56 -58
  155. package/node/debug/functions/two-prong.js.map +1 -1
  156. package/node/debug/three-prong-for-debugging.d.ts +6 -6
  157. package/node/debug/three-prong-for-debugging.js +1 -1
  158. package/node/debug/three-prong-for-debugging.js.map +1 -1
  159. package/node/debug/two-prong-for-debugging.d.ts +7 -7
  160. package/node/error-analysis/gamma.d.ts +26 -0
  161. package/node/error-analysis/gamma.js +35 -0
  162. package/node/error-analysis/gamma.js.map +1 -0
  163. package/node/find-2-prong/add-1-prong.d.ts +12 -0
  164. package/node/{mat/find-mat → find-2-prong}/add-1-prong.js +11 -11
  165. package/node/find-2-prong/add-1-prong.js.map +1 -0
  166. package/node/{mat/find-mat → find-2-prong}/add-2-prong.d.ts +6 -9
  167. package/node/{mat/find-mat → find-2-prong}/add-2-prong.js +26 -74
  168. package/node/find-2-prong/add-2-prong.js.map +1 -0
  169. package/node/find-2-prong/add-debug-info.d.ts +8 -0
  170. package/node/{mat/find-mat/find-2-prong → find-2-prong}/add-debug-info.js +5 -4
  171. package/node/find-2-prong/add-debug-info.js.map +1 -0
  172. package/node/find-2-prong/cull-bezier-pieces.d.ts +11 -0
  173. package/node/find-2-prong/cull-bezier-pieces.js +28 -0
  174. package/node/find-2-prong/cull-bezier-pieces.js.map +1 -0
  175. package/node/{mat/find-mat/find-2-prong → find-2-prong}/find-2-prong.d.ts +9 -13
  176. package/node/find-2-prong/find-2-prong.js +140 -0
  177. package/node/find-2-prong/find-2-prong.js.map +1 -0
  178. package/node/find-2-prong/find-and-add-2-prongs-on-all-paths.d.ts +15 -0
  179. package/node/{mat/find-mat → find-2-prong}/find-and-add-2-prongs-on-all-paths.js +5 -4
  180. package/node/find-2-prong/find-and-add-2-prongs-on-all-paths.js.map +1 -0
  181. package/node/{mat/find-mat → find-2-prong}/find-and-add-2-prongs.d.ts +5 -5
  182. package/node/find-2-prong/find-and-add-2-prongs.js +60 -0
  183. package/node/find-2-prong/find-and-add-2-prongs.js.map +1 -0
  184. package/node/{mat/find-mat → find-2-prong}/find-and-add-hole-closing-2-prongs.d.ts +3 -3
  185. package/node/{mat/find-mat → find-2-prong}/find-and-add-hole-closing-2-prongs.js +5 -5
  186. package/node/find-2-prong/find-and-add-hole-closing-2-prongs.js.map +1 -0
  187. package/node/{mat/find-mat/find-2-prong → find-2-prong}/find-equidistant-point-on-line-dd.d.ts +4 -3
  188. package/node/{mat/find-mat/find-2-prong → find-2-prong}/find-equidistant-point-on-line-dd.js +5 -7
  189. package/node/find-2-prong/find-equidistant-point-on-line-dd.js.map +1 -0
  190. package/node/find-2-prong/get-initial-bezier-pieces.d.ts +15 -0
  191. package/node/find-2-prong/get-initial-bezier-pieces.js +40 -0
  192. package/node/find-2-prong/get-initial-bezier-pieces.js.map +1 -0
  193. package/node/find-2-prong/reduce-radius.d.ts +8 -0
  194. package/node/find-2-prong/reduce-radius.js +72 -0
  195. package/node/find-2-prong/reduce-radius.js.map +1 -0
  196. package/node/find-2-prong/squared-distance-between-dd.d.ts +2 -0
  197. package/node/find-2-prong/squared-distance-between-dd.js +17 -0
  198. package/node/find-2-prong/squared-distance-between-dd.js.map +1 -0
  199. package/node/find-2-prong/x-for-debugging.d.ts +9 -0
  200. package/node/find-2-prong/x-for-debugging.js.map +1 -0
  201. package/node/{mat/find-mat → find-3-prong.ts}/add-3-prong.d.ts +12 -7
  202. package/node/{mat/find-mat → find-3-prong.ts}/add-3-prong.js +32 -9
  203. package/node/find-3-prong.ts/add-3-prong.js.map +1 -0
  204. package/node/{mat/find-mat/find-3-prong → find-3-prong.ts}/calc-better-x.d.ts +4 -4
  205. package/node/{mat/find-mat/find-3-prong → find-3-prong.ts}/calc-better-x.js +1 -1
  206. package/node/find-3-prong.ts/calc-better-x.js.map +1 -0
  207. package/node/{mat/find-mat/find-3-prong → find-3-prong.ts}/calc-initial-3-prong-center.d.ts +3 -3
  208. package/node/{mat/find-mat/find-3-prong → find-3-prong.ts}/calc-initial-3-prong-center.js +5 -7
  209. package/node/find-3-prong.ts/calc-initial-3-prong-center.js.map +1 -0
  210. package/node/{mat/find-mat/find-3-prong → find-3-prong.ts}/find-3-prong-for-delta3s.d.ts +6 -6
  211. package/node/{mat/find-mat/find-3-prong → find-3-prong.ts}/find-3-prong-for-delta3s.js +11 -12
  212. package/node/find-3-prong.ts/find-3-prong-for-delta3s.js.map +1 -0
  213. package/node/{mat/find-mat/find-3-prong → find-3-prong.ts}/find-3-prong.d.ts +5 -5
  214. package/node/{mat/find-mat/find-3-prong → find-3-prong.ts}/find-3-prong.js +52 -39
  215. package/node/find-3-prong.ts/find-3-prong.js.map +1 -0
  216. package/node/find-3-prong.ts/find-and-add-3-prongs.d.ts +5 -0
  217. package/node/find-3-prong.ts/find-and-add-3-prongs.js +74 -0
  218. package/node/find-3-prong.ts/find-and-add-3-prongs.js.map +1 -0
  219. package/node/{mat/find-mat/find-and-add-3-prongs.d.ts → find-3-prong.ts/find-and-add-all-3-prongs.d.ts} +3 -3
  220. package/node/find-3-prong.ts/find-and-add-all-3-prongs.js +66 -0
  221. package/node/find-3-prong.ts/find-and-add-all-3-prongs.js.map +1 -0
  222. package/node/{mat/find-mat/find-3-prong → find-3-prong.ts}/get-closest-points.d.ts +3 -3
  223. package/node/find-3-prong.ts/get-closest-points.js +14 -0
  224. package/node/find-3-prong.ts/get-closest-points.js.map +1 -0
  225. package/node/{mat/find-mat → find-mat}/add-debug-info.d.ts +4 -4
  226. package/node/{mat/find-mat → find-mat}/add-debug-info.js +6 -6
  227. package/node/find-mat/add-debug-info.js.map +1 -0
  228. package/node/{mat/find-mat → find-mat}/create-initial-cp-graph.d.ts +5 -5
  229. package/node/{mat/find-mat → find-mat}/create-initial-cp-graph.js +5 -6
  230. package/node/find-mat/create-initial-cp-graph.js.map +1 -0
  231. package/node/find-mat/find-mat.d.ts +10 -0
  232. package/node/find-mat/find-mat.js +57 -0
  233. package/node/find-mat/find-mat.js.map +1 -0
  234. package/node/{find-mats.d.ts → find-mat/find-mats.d.ts} +1 -1
  235. package/node/find-mat/find-mats.js +58 -0
  236. package/node/find-mat/find-mats.js.map +1 -0
  237. package/node/find-mat/fix-ordering.d.ts +8 -0
  238. package/node/find-mat/fix-ordering.js +59 -0
  239. package/node/find-mat/fix-ordering.js.map +1 -0
  240. package/node/find-mat/get-dull-corners.d.ts +5 -0
  241. package/node/find-mat/get-dull-corners.js +22 -0
  242. package/node/find-mat/get-dull-corners.js.map +1 -0
  243. package/node/find-mat/get-for-1-prongs-on-loop.d.ts +11 -0
  244. package/node/find-mat/get-for-1-prongs-on-loop.js +28 -0
  245. package/node/find-mat/get-for-1-prongs-on-loop.js.map +1 -0
  246. package/node/find-mat/get-for-2-prongs-on-loop.d.ts +11 -0
  247. package/node/find-mat/get-for-2-prongs-on-loop.js +30 -0
  248. package/node/find-mat/get-for-2-prongs-on-loop.js.map +1 -0
  249. package/node/find-mat/get-sharp-corners.d.ts +5 -0
  250. package/node/find-mat/get-sharp-corners.js +21 -0
  251. package/node/find-mat/get-sharp-corners.js.map +1 -0
  252. package/node/find-mat/get-size-params.d.ts +7 -0
  253. package/node/find-mat/get-size-params.js +33 -0
  254. package/node/find-mat/get-size-params.js.map +1 -0
  255. package/node/geometry/circle.js.map +1 -0
  256. package/node/geometry/get-bounding-box-.js.map +1 -0
  257. package/node/{mat/geometry → geometry}/get-closest-square-distance-to-rect.d.ts +1 -1
  258. package/node/{mat/geometry → geometry}/get-closest-square-distance-to-rect.js +1 -1
  259. package/node/geometry/get-closest-square-distance-to-rect.js.map +1 -0
  260. package/node/{mat/geometry → geometry}/get-closest-squared-distance-to-rotated-rect.d.ts +1 -1
  261. package/node/{mat/geometry → geometry}/get-closest-squared-distance-to-rotated-rect.js +1 -1
  262. package/node/geometry/get-closest-squared-distance-to-rotated-rect.js.map +1 -0
  263. package/node/get-curve/get-curve-between.d.ts +1 -1
  264. package/node/get-curve/get-curve-between.js +2 -2
  265. package/node/get-curve/get-curve-between.js.map +1 -1
  266. package/node/get-curve/get-edge-direction.d.ts +2 -2
  267. package/node/get-curve/get-edge-direction.js +2 -4
  268. package/node/get-curve/get-edge-direction.js.map +1 -1
  269. package/node/index.d.ts +24 -20
  270. package/node/index.js +21 -16
  271. package/node/index.js.map +1 -1
  272. package/node/loop/get-max-coordinate.d.ts +1 -1
  273. package/node/loop/get-max-coordinate.js +1 -1
  274. package/node/mat/add-to-cp-graph.d.ts +8 -7
  275. package/node/mat/add-to-cp-graph.js +6 -4
  276. package/node/mat/add-to-cp-graph.js.map +1 -1
  277. package/node/mat/bezier-piece.d.ts +2 -2
  278. package/node/mat/create-new-cp-tree.d.ts +3 -3
  279. package/node/mat/create-new-cp-tree.js +5 -7
  280. package/node/mat/create-new-cp-tree.js.map +1 -1
  281. package/node/mat/elem-type-two-prong.d.ts +1 -1
  282. package/node/mat/get-boundary-piece-beziers.d.ts +2 -2
  283. package/node/mat/get-boundary-piece-beziers.js +4 -4
  284. package/node/mat/get-boundary-piece-beziers.js.map +1 -1
  285. package/node/{get-branches.d.ts → mat/get-branches.d.ts} +1 -1
  286. package/node/{get-branches.js → mat/get-branches.js} +7 -6
  287. package/node/mat/get-branches.js.map +1 -0
  288. package/node/mat/get-largest-vertex.d.ts +2 -2
  289. package/node/mat/get-largest-vertex.js +1 -1
  290. package/node/mat/get-largest-vertex.js.map +1 -1
  291. package/node/mat/get-neighboring-cps.d.ts +6 -4
  292. package/node/mat/get-neighboring-cps.js +5 -3
  293. package/node/mat/get-neighboring-cps.js.map +1 -1
  294. package/node/mat/get-two-prong-type.d.ts +1 -1
  295. package/node/mat/get-two-prong-type.js +1 -1
  296. package/node/mat/get-two-prong-type.js.map +1 -1
  297. package/node/mat/is-another-cp-closeby.d.ts +9 -8
  298. package/node/mat/is-another-cp-closeby.js +20 -17
  299. package/node/mat/is-another-cp-closeby.js.map +1 -1
  300. package/node/{mat.d.ts → mat/mat.d.ts} +2 -2
  301. package/node/mat/mat.js.map +1 -0
  302. package/node/mat/simplify-mat-map-only.d.ts +1 -1
  303. package/node/mat/simplify-mat-map-only.js +4 -3
  304. package/node/mat/simplify-mat-map-only.js.map +1 -1
  305. package/node/{simplify-mat.d.ts → mat/simplify-mat.d.ts} +3 -5
  306. package/node/{simplify-mat.js → mat/simplify-mat.js} +11 -13
  307. package/node/mat/simplify-mat.js.map +1 -0
  308. package/node/mat/trim-mat.d.ts +1 -1
  309. package/node/mat/trim-mat.js +1 -1
  310. package/node/mat/trim-mat.js.map +1 -1
  311. package/node/point-on-shape/calc-pos-order.d.ts +13 -0
  312. package/node/point-on-shape/calc-pos-order.js +27 -0
  313. package/node/point-on-shape/calc-pos-order.js.map +1 -0
  314. package/node/point-on-shape/compare-poss.d.ts +10 -0
  315. package/node/point-on-shape/compare-poss.js +18 -0
  316. package/node/point-on-shape/compare-poss.js.map +1 -0
  317. package/node/point-on-shape/create-pos.d.ts +4 -0
  318. package/node/point-on-shape/create-pos.js +12 -0
  319. package/node/point-on-shape/create-pos.js.map +1 -0
  320. package/node/point-on-shape/get-osculating-circle.d.ts +10 -0
  321. package/node/point-on-shape/get-osculating-circle.js +25 -0
  322. package/node/point-on-shape/get-osculating-circle.js.map +1 -0
  323. package/node/point-on-shape/get-pos-corner.d.ts +7 -0
  324. package/node/point-on-shape/get-pos-corner.js +9 -0
  325. package/node/point-on-shape/get-pos-corner.js.map +1 -0
  326. package/node/point-on-shape/is-pos-corner.d.ts +6 -0
  327. package/node/point-on-shape/is-pos-corner.js +8 -0
  328. package/node/point-on-shape/is-pos-corner.js.map +1 -0
  329. package/node/point-on-shape/is-pos-dull-corner.d.ts +6 -0
  330. package/node/point-on-shape/is-pos-dull-corner.js +14 -0
  331. package/node/point-on-shape/is-pos-dull-corner.js.map +1 -0
  332. package/node/point-on-shape/is-pos-quite-sharp-corner.d.ts +6 -0
  333. package/node/point-on-shape/is-pos-quite-sharp-corner.js +14 -0
  334. package/node/point-on-shape/is-pos-quite-sharp-corner.js.map +1 -0
  335. package/node/point-on-shape/is-pos-sharp-corner.d.ts +6 -0
  336. package/node/point-on-shape/is-pos-sharp-corner.js +14 -0
  337. package/node/point-on-shape/is-pos-sharp-corner.js.map +1 -0
  338. package/node/point-on-shape/point-on-shape.d.ts +11 -0
  339. package/node/point-on-shape/point-on-shape.js +2 -0
  340. package/node/point-on-shape/point-on-shape.js.map +1 -0
  341. package/node/point-on-shape/pos-to-human-string.d.ts +8 -0
  342. package/node/point-on-shape/pos-to-human-string.js +12 -0
  343. package/node/point-on-shape/pos-to-human-string.js.map +1 -0
  344. package/node/{mat/to-scale-axis → sat}/add-debug-info.d.ts +2 -2
  345. package/node/{mat/to-scale-axis → sat}/add-debug-info.js +1 -1
  346. package/node/sat/add-debug-info.js.map +1 -0
  347. package/node/{mat/to-scale-axis → sat}/cull-non-cycles.d.ts +3 -3
  348. package/node/{mat/to-scale-axis → sat}/cull-non-cycles.js +6 -6
  349. package/node/sat/cull-non-cycles.js.map +1 -0
  350. package/node/{mat/to-scale-axis → sat}/cull.d.ts +3 -3
  351. package/node/sat/cull.js +63 -0
  352. package/node/sat/cull.js.map +1 -0
  353. package/node/{mat → sat}/get-leaves.d.ts +2 -2
  354. package/node/sat/get-leaves.js +14 -0
  355. package/node/sat/get-leaves.js.map +1 -0
  356. package/node/{to-scale-axis.d.ts → sat/to-scale-axis.d.ts} +2 -3
  357. package/node/{to-scale-axis.js → sat/to-scale-axis.js} +14 -20
  358. package/node/sat/to-scale-axis.js.map +1 -0
  359. package/node/svg/get-loop-bounds.d.ts +7 -7
  360. package/node/svg/get-loop-bounds.js +11 -7
  361. package/node/svg/get-loop-bounds.js.map +1 -1
  362. package/node/svg/get-min-y-pos.d.ts +4 -4
  363. package/node/svg/get-min-y-pos.js +1 -1
  364. package/node/svg/get-shape-bounds.d.ts +6 -5
  365. package/node/svg/get-shape-bounds.js +6 -2
  366. package/node/svg/get-shape-bounds.js.map +1 -1
  367. package/node/sweep-line/sweep-line.d.ts +1 -1
  368. package/node/sweep-line/sweep-line.js +4 -4
  369. package/node/sweep-line/sweep-line.js.map +1 -1
  370. package/package.json +10 -10
  371. package/src/closest-boundary-point/closest-points-on-curve-precise.ts +75 -0
  372. package/src/closest-boundary-point/closest-points-on-curve.ts +72 -0
  373. package/src/closest-boundary-point/cull-bezier-pieces.ts +35 -0
  374. package/src/{mat/closest-boundary-point → closest-boundary-point}/cull-by-loose-bounding-box.ts +4 -3
  375. package/src/{mat/closest-boundary-point → closest-boundary-point}/cull-by-tight-boundary-box.ts +2 -2
  376. package/src/closest-boundary-point/dd-deflate-with-running-error.ts +88 -0
  377. package/src/closest-boundary-point/foot-and-endpoint-info.ts +16 -0
  378. package/src/{mat/closest-boundary-point → closest-boundary-point}/get-best-distance-squared.ts +3 -4
  379. package/src/closest-boundary-point/get-close-boundary-points-certified.ts +69 -0
  380. package/src/closest-boundary-point/get-closest-boundary-point-certified.ts +70 -0
  381. package/src/closest-boundary-point/get-p-from-box.ts +14 -0
  382. package/src/closest-boundary-point/get-potential-closest-points-on-curve-certified.ts +122 -0
  383. package/src/closest-boundary-point/root-interval-to-distance-squared-interval.ts +75 -0
  384. package/src/{contact-point.ts → contact-point/contact-point.ts} +4 -6
  385. package/src/{compare-curvatures-at-interface.ts → corner/compare-curvatures-at-interface.ts} +2 -2
  386. package/src/{mat → corner}/corner.ts +1 -1
  387. package/src/{curve.ts → corner/get-corner.ts} +10 -49
  388. package/src/{get-interface-ccw.ts → corner/get-interface-ccw.ts} +28 -35
  389. package/src/cp-node/clone.ts +17 -6
  390. package/src/cp-node/cp-node.ts +422 -0
  391. package/src/cp-node/create-cp-node.ts +21 -0
  392. package/src/cp-node/enhance-cp-node.ts +27 -0
  393. package/src/{get-boundary-bezier-parts-to-next.ts → cp-node/get-boundary-bezier-parts-to-next.ts} +3 -3
  394. package/src/{get-boundary-beziers-to-next.ts → cp-node/get-boundary-beziers-to-next.ts} +2 -2
  395. package/src/cp-node/get-cp-node-ordering.ts +17 -0
  396. package/src/{get-curve-to-next.ts → cp-node/get-curve-to-next.ts} +1 -1
  397. package/src/cp-node/remove.ts +1 -1
  398. package/src/cp-node/traverse-cp.ts +35 -0
  399. package/src/{traverse-edges.ts → cp-node/traverse-edges.ts} +5 -5
  400. package/src/{traverse-vertices.ts → cp-node/traverse-vertices.ts} +5 -5
  401. package/src/curve/curve.ts +46 -0
  402. package/src/debug/cp-node-for-debugging.ts +2 -2
  403. package/src/debug/debug-elem-types.ts +8 -8
  404. package/src/debug/debug.ts +11 -11
  405. package/src/debug/functions/draw-elem/bounding-hull.ts +5 -3
  406. package/src/debug/functions/draw-elem/branch.ts +4 -4
  407. package/src/debug/functions/draw-elem/culls.ts +3 -3
  408. package/src/debug/functions/draw-elem/draw-circle-percent.ts +1 -1
  409. package/src/debug/functions/draw-elem/draw-elem.ts +10 -6
  410. package/src/debug/functions/draw-elem/dull-corner.ts +10 -6
  411. package/src/debug/functions/draw-elem/leaves.ts +2 -2
  412. package/src/debug/functions/draw-elem/loop.ts +4 -3
  413. package/src/debug/functions/draw-elem/loops.ts +1 -2
  414. package/src/debug/functions/draw-elem/loose-bounding-box.ts +8 -3
  415. package/src/debug/functions/draw-elem/mat.ts +16 -8
  416. package/src/debug/functions/draw-elem/max-vertex.ts +2 -2
  417. package/src/debug/functions/draw-elem/min-y.ts +4 -9
  418. package/src/debug/functions/draw-elem/one-prong-at-dull-corner.ts +10 -2
  419. package/src/debug/functions/draw-elem/one-prong.ts +12 -15
  420. package/src/debug/functions/draw-elem/sharp-corner.ts +10 -6
  421. package/src/debug/functions/draw-elem/three-prong.ts +13 -11
  422. package/src/debug/functions/draw-elem/tight-bounding-box.ts +9 -3
  423. package/src/debug/functions/draw-elem/two-prong.ts +12 -8
  424. package/src/debug/functions/draw-elem/vertex.ts +12 -11
  425. package/src/debug/functions/general.ts +10 -10
  426. package/src/debug/functions/three-prong.ts +16 -20
  427. package/src/debug/functions/two-prong.ts +89 -77
  428. package/src/debug/three-prong-for-debugging.ts +17 -16
  429. package/src/debug/two-prong-for-debugging.ts +7 -7
  430. package/src/error-analysis/gamma.ts +41 -0
  431. package/src/{mat/find-mat → find-2-prong}/add-1-prong.ts +19 -16
  432. package/src/{mat/find-mat → find-2-prong}/add-2-prong.ts +45 -91
  433. package/src/find-2-prong/add-debug-info.ts +49 -0
  434. package/src/{mat/find-mat/find-2-prong → find-2-prong}/cull-bezier-pieces.ts +9 -11
  435. package/src/find-2-prong/find-2-prong.ts +186 -0
  436. package/src/{mat/find-mat → find-2-prong}/find-and-add-2-prongs-on-all-paths.ts +12 -9
  437. package/src/find-2-prong/find-and-add-2-prongs.ts +88 -0
  438. package/src/{mat/find-mat → find-2-prong}/find-and-add-hole-closing-2-prongs.ts +7 -7
  439. package/src/{mat/find-mat/find-2-prong → find-2-prong}/find-equidistant-point-on-line-dd.ts +8 -10
  440. package/src/{mat/find-mat/find-2-prong → find-2-prong}/find-equidistant-point-on-line.ts +1 -1
  441. package/src/find-2-prong/get-initial-bezier-pieces.ts +61 -0
  442. package/src/find-2-prong/pyth-trips.ts +146 -0
  443. package/src/find-2-prong/reduce-radius.ts +98 -0
  444. package/src/find-2-prong/squared-distance-between-dd.ts +25 -0
  445. package/src/find-2-prong/x-for-debugging.ts +13 -0
  446. package/src/{mat/find-mat → find-3-prong.ts}/add-3-prong.ts +42 -17
  447. package/src/{mat/find-mat/find-3-prong → find-3-prong.ts}/calc-better-x.ts +5 -5
  448. package/src/{mat/find-mat/find-3-prong → find-3-prong.ts}/calc-initial-3-prong-center.ts +11 -12
  449. package/src/{mat/find-mat/find-3-prong → find-3-prong.ts}/find-3-prong-for-delta3s.ts +28 -28
  450. package/src/find-3-prong.ts/find-3-prong.ts +148 -0
  451. package/src/find-3-prong.ts/find-and-add-3-prongs.ts +111 -0
  452. package/src/find-3-prong.ts/find-and-add-all-3-prongs.ts +109 -0
  453. package/src/find-3-prong.ts/get-closest-points.ts +24 -0
  454. package/src/{mat/find-mat → find-mat}/add-debug-info.ts +10 -10
  455. package/src/{mat/find-mat → find-mat}/create-initial-cp-graph.ts +11 -12
  456. package/src/find-mat/find-mat.ts +89 -0
  457. package/src/find-mat/find-mats.ts +83 -0
  458. package/src/find-mat/fix-ordering.ts +69 -0
  459. package/src/find-mat/get-dull-corners.ts +34 -0
  460. package/src/find-mat/get-for-1-prongs-on-loop.ts +40 -0
  461. package/src/find-mat/get-for-2-prongs-on-loop.ts +44 -0
  462. package/src/find-mat/get-sharp-corners.ts +33 -0
  463. package/src/find-mat/get-size-params.ts +34 -0
  464. package/src/{mat/find-mat → find-mat}/get-total-by.ts +4 -4
  465. package/src/{mat/geometry → geometry}/get-closest-square-distance-to-rect.ts +1 -1
  466. package/src/{mat/geometry → geometry}/get-closest-squared-distance-to-rotated-rect.ts +2 -2
  467. package/src/get-curve/get-curve-between.ts +7 -7
  468. package/src/get-curve/get-edge-direction.ts +11 -11
  469. package/src/index.ts +64 -21
  470. package/src/loop/get-max-coordinate.ts +1 -1
  471. package/src/mat/add-to-cp-graph.ts +15 -12
  472. package/src/mat/bezier-piece.ts +2 -2
  473. package/src/mat/cmp-cp-on-delta.ts +3 -3
  474. package/src/mat/create-new-cp-tree.ts +6 -9
  475. package/src/mat/elem-type-two-prong.ts +1 -1
  476. package/src/mat/get-boundary-piece-beziers.ts +7 -7
  477. package/src/{get-branches.ts → mat/get-branches.ts} +8 -8
  478. package/src/mat/get-edges-as-array.ts +2 -2
  479. package/src/mat/get-largest-three-prong.ts +3 -3
  480. package/src/mat/get-largest-vertex.ts +2 -2
  481. package/src/mat/get-neighboring-cps.ts +9 -6
  482. package/src/mat/get-two-prong-type.ts +1 -1
  483. package/src/mat/is-another-cp-closeby.ts +27 -26
  484. package/src/{mat.ts → mat/mat.ts} +2 -2
  485. package/src/mat/simplify-mat-map-only.ts +5 -5
  486. package/src/{simplify-mat.ts → mat/simplify-mat.ts} +12 -14
  487. package/src/mat/trim-mat.ts +3 -3
  488. package/src/point-on-shape/calc-pos-order.ts +35 -0
  489. package/src/point-on-shape/compare-poss.ts +26 -0
  490. package/src/point-on-shape/create-pos.ts +21 -0
  491. package/src/point-on-shape/get-osculating-circle.ts +39 -0
  492. package/src/point-on-shape/get-pos-corner.ts +16 -0
  493. package/src/point-on-shape/is-pos-corner.ts +12 -0
  494. package/src/point-on-shape/is-pos-dull-corner.ts +16 -0
  495. package/src/point-on-shape/is-pos-quite-dull-corner.ts +17 -0
  496. package/src/point-on-shape/is-pos-quite-sharp-corner.ts +17 -0
  497. package/src/point-on-shape/is-pos-sharp-corner.ts +17 -0
  498. package/src/point-on-shape/point-on-shape.ts +15 -0
  499. package/src/point-on-shape/pos-to-human-string.ts +16 -0
  500. package/src/{mat/to-scale-axis → sat}/add-debug-info.ts +3 -3
  501. package/src/{mat/to-scale-axis → sat}/cull-non-cycles.ts +7 -7
  502. package/src/sat/cull.ts +76 -0
  503. package/src/sat/get-leaves.ts +19 -0
  504. package/src/{to-scale-axis.ts → sat/to-scale-axis.ts} +19 -31
  505. package/src/svg/get-loop-bounds.ts +22 -17
  506. package/src/svg/get-min-y-pos.ts +3 -3
  507. package/src/svg/get-shape-bounds.ts +12 -9
  508. package/src/sweep-line/are-boxes-intersecting.ts +1 -1
  509. package/src/sweep-line/sweep-line.ts +7 -7
  510. package/tsconfig.json +3 -7
  511. package/wallaby.mjs +32 -0
  512. package/node/circle.js.map +0 -1
  513. package/node/compare-curvatures-at-interface.js.map +0 -1
  514. package/node/contact-point.js.map +0 -1
  515. package/node/cp-node.d.ts +0 -202
  516. package/node/cp-node.js +0 -321
  517. package/node/cp-node.js.map +0 -1
  518. package/node/curve.js.map +0 -1
  519. package/node/find-mats.js +0 -123
  520. package/node/find-mats.js.map +0 -1
  521. package/node/get-boundary-bezier-parts-to-next.js.map +0 -1
  522. package/node/get-boundary-beziers-to-next.js.map +0 -1
  523. package/node/get-bounding-box-.js.map +0 -1
  524. package/node/get-branches.js.map +0 -1
  525. package/node/get-curve-to-next.js.map +0 -1
  526. package/node/get-interface-ccw.js.map +0 -1
  527. package/node/loop.d.ts +0 -16
  528. package/node/loop.js +0 -35
  529. package/node/loop.js.map +0 -1
  530. package/node/mat/closest-boundary-point/closest-points-on-curve.d.ts +0 -14
  531. package/node/mat/closest-boundary-point/closest-points-on-curve.js +0 -76
  532. package/node/mat/closest-boundary-point/closest-points-on-curve.js.map +0 -1
  533. package/node/mat/closest-boundary-point/cull-bezier-pieces.d.ts +0 -9
  534. package/node/mat/closest-boundary-point/cull-bezier-pieces.js +0 -20
  535. package/node/mat/closest-boundary-point/cull-bezier-pieces.js.map +0 -1
  536. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.js.map +0 -1
  537. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.js.map +0 -1
  538. package/node/mat/closest-boundary-point/get-best-distance-squared.js.map +0 -1
  539. package/node/mat/closest-boundary-point/get-close-boundary-points.d.ts +0 -17
  540. package/node/mat/closest-boundary-point/get-close-boundary-points.js +0 -77
  541. package/node/mat/closest-boundary-point/get-close-boundary-points.js.map +0 -1
  542. package/node/mat/closest-boundary-point/get-closest-boundary-point.d.ts +0 -18
  543. package/node/mat/closest-boundary-point/get-closest-boundary-point.js +0 -41
  544. package/node/mat/closest-boundary-point/get-closest-boundary-point.js.map +0 -1
  545. package/node/mat/find-mat/add-1-prong.d.ts +0 -12
  546. package/node/mat/find-mat/add-1-prong.js.map +0 -1
  547. package/node/mat/find-mat/add-2-prong.js.map +0 -1
  548. package/node/mat/find-mat/add-3-prong.js.map +0 -1
  549. package/node/mat/find-mat/add-debug-info.js.map +0 -1
  550. package/node/mat/find-mat/create-get-interesting-points-on-loop.d.ts +0 -11
  551. package/node/mat/find-mat/create-get-interesting-points-on-loop.js +0 -53
  552. package/node/mat/find-mat/create-get-interesting-points-on-loop.js.map +0 -1
  553. package/node/mat/find-mat/create-initial-cp-graph.js.map +0 -1
  554. package/node/mat/find-mat/find-2-prong/add-debug-info.d.ts +0 -8
  555. package/node/mat/find-mat/find-2-prong/add-debug-info.js.map +0 -1
  556. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.d.ts +0 -11
  557. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js +0 -30
  558. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js.map +0 -1
  559. package/node/mat/find-mat/find-2-prong/find-2-prong.js +0 -263
  560. package/node/mat/find-mat/find-2-prong/find-2-prong.js.map +0 -1
  561. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line-dd.js.map +0 -1
  562. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.d.ts +0 -9
  563. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js +0 -40
  564. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js.map +0 -1
  565. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.d.ts +0 -11
  566. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js +0 -38
  567. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js.map +0 -1
  568. package/node/mat/find-mat/find-2-prong/x-for-debugging.d.ts +0 -9
  569. package/node/mat/find-mat/find-2-prong/x-for-debugging.js.map +0 -1
  570. package/node/mat/find-mat/find-3-prong/calc-better-x.js.map +0 -1
  571. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.js.map +0 -1
  572. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.js.map +0 -1
  573. package/node/mat/find-mat/find-3-prong/find-3-prong.js.map +0 -1
  574. package/node/mat/find-mat/find-3-prong/get-closest-points.js +0 -17
  575. package/node/mat/find-mat/find-3-prong/get-closest-points.js.map +0 -1
  576. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.d.ts +0 -15
  577. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.js.map +0 -1
  578. package/node/mat/find-mat/find-and-add-2-prongs.js +0 -74
  579. package/node/mat/find-mat/find-and-add-2-prongs.js.map +0 -1
  580. package/node/mat/find-mat/find-and-add-3-prongs.js +0 -147
  581. package/node/mat/find-mat/find-and-add-3-prongs.js.map +0 -1
  582. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.js.map +0 -1
  583. package/node/mat/find-mat/get-potential-2-prongs.d.ts +0 -4
  584. package/node/mat/find-mat/get-potential-2-prongs.js +0 -17
  585. package/node/mat/find-mat/get-potential-2-prongs.js.map +0 -1
  586. package/node/mat/find-mat/get-sharp-corners.d.ts +0 -4
  587. package/node/mat/find-mat/get-sharp-corners.js +0 -17
  588. package/node/mat/find-mat/get-sharp-corners.js.map +0 -1
  589. package/node/mat/geometry/get-closest-square-distance-to-rect.js.map +0 -1
  590. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.js.map +0 -1
  591. package/node/mat/get-contact-circles-at-interface.d.ts +0 -8
  592. package/node/mat/get-contact-circles-at-interface.js +0 -21
  593. package/node/mat/get-contact-circles-at-interface.js.map +0 -1
  594. package/node/mat/get-leaves.js +0 -13
  595. package/node/mat/get-leaves.js.map +0 -1
  596. package/node/mat/to-scale-axis/add-debug-info.js.map +0 -1
  597. package/node/mat/to-scale-axis/cull-non-cycles.js.map +0 -1
  598. package/node/mat/to-scale-axis/cull.js +0 -133
  599. package/node/mat/to-scale-axis/cull.js.map +0 -1
  600. package/node/mat.js.map +0 -1
  601. package/node/point-on-shape.d.ts +0 -73
  602. package/node/point-on-shape.js +0 -168
  603. package/node/point-on-shape.js.map +0 -1
  604. package/node/simplify-mat.js.map +0 -1
  605. package/node/to-scale-axis.js.map +0 -1
  606. package/node/traverse-edges.js.map +0 -1
  607. package/node/traverse-vertices.js.map +0 -1
  608. package/src/cp-node.ts +0 -388
  609. package/src/find-mats.ts +0 -171
  610. package/src/loop.ts +0 -56
  611. package/src/mat/closest-boundary-point/closest-points-on-curve.ts +0 -88
  612. package/src/mat/closest-boundary-point/cull-bezier-pieces.ts +0 -38
  613. package/src/mat/closest-boundary-point/get-close-boundary-points.ts +0 -103
  614. package/src/mat/closest-boundary-point/get-closest-boundary-point-dd.ts +0 -62
  615. package/src/mat/closest-boundary-point/get-closest-boundary-point.ts +0 -64
  616. package/src/mat/find-mat/create-get-interesting-points-on-loop.ts +0 -74
  617. package/src/mat/find-mat/find-2-prong/add-debug-info.ts +0 -46
  618. package/src/mat/find-mat/find-2-prong/find-2-prong.ts +0 -351
  619. package/src/mat/find-mat/find-2-prong/get-initial-bezier-pieces.ts +0 -52
  620. package/src/mat/find-mat/find-2-prong/x-for-debugging.ts +0 -13
  621. package/src/mat/find-mat/find-3-prong/find-3-prong.ts +0 -106
  622. package/src/mat/find-mat/find-3-prong/get-closest-points.ts +0 -28
  623. package/src/mat/find-mat/find-and-add-2-prongs.ts +0 -108
  624. package/src/mat/find-mat/find-and-add-3-prongs.ts +0 -218
  625. package/src/mat/find-mat/get-potential-2-prongs.ts +0 -24
  626. package/src/mat/find-mat/get-sharp-corners.ts +0 -24
  627. package/src/mat/find-mat/get-total-abs-curvature.ts +0 -17
  628. package/src/mat/get-contact-circles-at-interface.ts +0 -26
  629. package/src/mat/get-leaves.ts +0 -19
  630. package/src/mat/to-scale-axis/add-to-tree.ts +0 -66
  631. package/src/mat/to-scale-axis/calc-groups.ts +0 -82
  632. package/src/mat/to-scale-axis/create-spacial-tree.ts +0 -41
  633. package/src/mat/to-scale-axis/cull.ts +0 -147
  634. package/src/mat/to-scale-axis/get-engulfed-vertices.ts +0 -135
  635. package/src/mat/to-scale-axis/t-tree.ts +0 -8
  636. package/src/mat/to-scale-axis/traverse-spacial-tree.ts +0 -34
  637. package/src/point-on-shape.ts +0 -232
  638. package/src/svg/get-curvature-at-interface.ts +0 -55
  639. /package/node/{compare-curvatures-at-interface.d.ts → corner/compare-curvatures-at-interface.d.ts} +0 -0
  640. /package/node/{mat → corner}/corner.js +0 -0
  641. /package/node/{get-interface-ccw.d.ts → corner/get-interface-ccw.d.ts} +0 -0
  642. /package/node/{get-boundary-bezier-parts-to-next.d.ts → cp-node/get-boundary-bezier-parts-to-next.d.ts} +0 -0
  643. /package/node/{get-curve-to-next.d.ts → cp-node/get-curve-to-next.d.ts} +0 -0
  644. /package/node/{traverse-edges.d.ts → cp-node/traverse-edges.d.ts} +0 -0
  645. /package/node/{traverse-vertices.d.ts → cp-node/traverse-vertices.d.ts} +0 -0
  646. /package/node/{mat/find-mat/find-2-prong → find-2-prong}/x-for-debugging.js +0 -0
  647. /package/node/{circle.d.ts → geometry/circle.d.ts} +0 -0
  648. /package/node/{circle.js → geometry/circle.js} +0 -0
  649. /package/node/{get-bounding-box-.d.ts → geometry/get-bounding-box-.d.ts} +0 -0
  650. /package/node/{get-bounding-box-.js → geometry/get-bounding-box-.js} +0 -0
  651. /package/node/{mat.js → mat/mat.js} +0 -0
  652. /package/src/{circle.ts → geometry/circle.ts} +0 -0
  653. /package/src/{get-bounding-box-.ts → geometry/get-bounding-box-.ts} +0 -0
@@ -1,168 +0,0 @@
1
- import { dot, fromTo, toUnitVector, rotateNeg90Degrees } from 'flo-vector2d';
2
- import { memoize } from 'flo-memoize';
3
- import { curvature, evalDeCasteljau, tangent } from 'flo-bezier3';
4
- import { getCornerAtEnd } from './curve.js';
5
- /**
6
- * Represents a point on the shape boundary for which MAT vertex information
7
- * has not *necessarily* been calculated.
8
- */
9
- class PointOnShape {
10
- /**
11
- * @param curve The [[ICurve]] on the shape boundary this points belong to.
12
- * @param t The bezier parameter value on the curve to identify the point
13
- * coordinates.
14
- */
15
- constructor(curve, t) {
16
- this.curve = curve;
17
- this.t = t;
18
- // Cache
19
- this.p_ = undefined;
20
- }
21
- /**
22
- * The planar point coordinates of this [[PointOnShape]].
23
- */
24
- get p() {
25
- return this.p_ === undefined
26
- ? this.p_ = evalDeCasteljau(this.curve.ps, this.t)
27
- : this.p_;
28
- }
29
- }
30
- /**
31
- * @hidden
32
- */
33
- function isPosCorner(pos) {
34
- return (pos.t === 0 || pos.t === 1);
35
- }
36
- /**
37
- * @hidden
38
- */
39
- function getPosCorner(pos) {
40
- return getCornerAtEnd(pos.t === 1 ? pos.curve : pos.curve.prev);
41
- }
42
- /**
43
- * @hidden
44
- */
45
- const isPosSharpCorner = memoize((pos) => {
46
- if (!isPosCorner(pos)) {
47
- return false;
48
- }
49
- return getPosCorner(pos).isSharp;
50
- });
51
- /**
52
- * @hidden
53
- */
54
- const isPosDullCorner = memoize((pos) => {
55
- if (!isPosCorner(pos)) {
56
- return false;
57
- }
58
- return getPosCorner(pos).isDull;
59
- });
60
- /**
61
- * @hidden
62
- */
63
- const isPosQuiteSharpCorner = memoize((pos) => {
64
- if (!isPosCorner(pos)) {
65
- return false;
66
- }
67
- return getPosCorner(pos).isQuiteSharp;
68
- });
69
- /**
70
- * @hidden
71
- */
72
- const isPosQuiteDullCorner = memoize((pos) => {
73
- if (!isPosCorner(pos)) {
74
- return false;
75
- }
76
- return getPosCorner(pos).isQuiteDull;
77
- });
78
- /**
79
- * Returns a human-readable string of the given [[PointOnShape]].
80
- * For debugging only.
81
- * @hidden
82
- */
83
- function posToHumanString(pos) {
84
- return '' + pos.p[0] + ', ' + pos.p[1] +
85
- ' | bz: ' + pos.curve.idx +
86
- ' | t: ' + pos.t;
87
- }
88
- /**
89
- * @hidden
90
- * Calculates the order (to distinguish between points lying on top of each
91
- * other) of the contact point if it is a dull corner.
92
- * @param pos
93
- */
94
- function calcPosOrder(circle, pos) {
95
- if (!isPosCorner(pos)) {
96
- return 0;
97
- }
98
- if (!isPosDullCorner(pos)) {
99
- return 0;
100
- }
101
- //if (!isPosDullCorner(pos)) { return 0; }
102
- const corner = getPosCorner(pos);
103
- const n = rotateNeg90Degrees(corner.tangents[0]);
104
- const v = toUnitVector(fromTo(pos.p, circle.center));
105
- return -dot(n, v);
106
- }
107
- /**
108
- * Compares two [[PointOnShape]]s according to their cyclic ordering imposed
109
- * by their relative positions on the shape boundary.
110
- * @param a The first [[PointOnShape]].
111
- * @param b The second [[PointOnShape]].
112
- * @hidden
113
- */
114
- function comparePoss(a, b) {
115
- if (a === undefined || b === undefined) {
116
- return undefined;
117
- }
118
- let res;
119
- res = a.curve.idx - b.curve.idx;
120
- if (res !== 0) {
121
- return res;
122
- }
123
- res = a.t - b.t;
124
- return res;
125
- }
126
- /**
127
- * Calculates and returns the osculating circle radius of the bezier at a
128
- * specific t. If it is found to have negative or nearly zero radius
129
- * it is clipped to have positive radius so it can point into the shape.
130
- * @param ps
131
- * @param t
132
- * @hidden
133
- */
134
- const calcOsculatingCircleRadius = memoize((pos) => {
135
- const ps = pos.curve.ps;
136
- const t = pos.t;
137
- const c = -curvature(ps, t);
138
- // c > 0 => bending inwards
139
- return 1 / c;
140
- });
141
- /**
142
- * Returns the osculating circle at this point of the curve.
143
- * @param maxOsculatingCircleRadius If not Number.POSITIVE_INFINITY then the
144
- * circle radius will be limited to this value.
145
- * @param pos The [[PointOnShape]] identifying the point.
146
- */
147
- function getOsculatingCircle(maxOsculatingCircleRadius, pos) {
148
- if (isPosSharpCorner(pos)) {
149
- return { center: pos.p, radius: 0 };
150
- }
151
- let radius = calcOsculatingCircleRadius(pos);
152
- if (radius < 0) {
153
- radius = Number.POSITIVE_INFINITY;
154
- }
155
- radius = Math.min(radius, maxOsculatingCircleRadius);
156
- const ps = pos.curve.ps;
157
- const t = pos.t;
158
- const tangent_ = tangent(ps, t);
159
- const normal_ = toUnitVector([-tangent_[1], tangent_[0]]);
160
- const p = evalDeCasteljau(ps, t);
161
- const circleCenter = [
162
- p[0] - normal_[0] * radius,
163
- p[1] - normal_[1] * radius
164
- ];
165
- return { center: circleCenter, radius };
166
- }
167
- export { PointOnShape, getOsculatingCircle, comparePoss, calcPosOrder, posToHumanString, isPosSharpCorner, isPosDullCorner, isPosQuiteSharpCorner, isPosQuiteDullCorner };
168
- //# sourceMappingURL=point-on-shape.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"point-on-shape.js","sourceRoot":"","sources":["../src/point-on-shape.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"simplify-mat.js","sourceRoot":"","sources":["../src/simplify-mat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAInE;;;;;;;;;;;;GAYG;AACH,SAAS,WAAW,CACZ,GAAQ,EACR,cAAc,GAAG,EAAE,EACnB,kBAAkB,GAAG,CAAC,IAAE,CAAC,CAAC,EAC1B,aAAa,GAAG,EAAE;IAEtB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAExB,oBAAoB;IACpB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE;QAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;KAAE;IAEzD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAErD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE3B,qBAAqB;QACrB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC;YACZ,OAAO,IAAI,EAAE;gBACT,CAAC,EAAE,CAAC;gBAEJ,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE;oBAAE,MAAM;iBAAE;gBAEnC,MAAM,EAAE,GAAG,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;gBAElE,IAAI,EAAE,GAAG,kBAAkB,EAAE;oBACzB,MAAM;iBACT;qBAAM;oBACH,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9B;aACJ;YAED,IAAI,CAAC,GAAC,CAAC,KAAK,CAAC,EAAE;gBACX,4BAA4B;gBAC5B,MAAM;aACT;SACJ;KACJ;IAED,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;QAC7B,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC;QACzD,IAAI,aAAa,IAAI,aAAa,KAAK,CAAC,EAAE;YACtC,SAAS;SACZ;QAED,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACzB;IAED,uDAAuD;IACvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAC1C,CAAC;AAGD,SAAS,yBAAyB,CAC1B,CAAS,EACT,CAAS,EACT,MAAgB,EAChB,gBAAwB;IAE5B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAC,CAAC,GAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACf,GAAG,CAAC,IAAI,CAAC,iBAAiB,CACtB,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACzB,SAAS,EACT,gBAAgB,CACnB,CAAC,CAAC;KACN;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC5B,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"to-scale-axis.js","sourceRoot":"","sources":["../src/to-scale-axis.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverse-edges.js","sourceRoot":"","sources":["../src/traverse-edges.ts"],"names":[],"mappings":"AAGA;;;;;;IAMI;AACJ,SAAS,aAAa,CACpB,MAAc,EACd,CAA2B;IAE5B,wEAAwE;IACxE,gBAAgB;IAChB,MAAM,GAAG,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAExC,OAAO,GAAG,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB,CAAC,CAAC,EAAE,CAAC,CAAC;QAEN,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE;YAAE,SAAS;SAAE;QACrC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;KAC9B;AACF,CAAC;AAGD,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverse-vertices.js","sourceRoot":"","sources":["../src/traverse-vertices.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,SAAS,gBAAgB,CACvB,MAAc,EACd,CAA2B;IAE5B,CAAC,CAAC,MAAM,CAAC,CAAC;IAEV,wEAAwE;IACxE,iBAAiB;IACjB,MAAM,CAAC,kBAAkB,EAAE;SACzB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;SACzC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;SAC1B,OAAO,CAAC,EAAE,CAAC,CAAC;IAEd,SAAS,EAAE,CAAC,MAAc;QACzB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC,MAAM,EAAE;YAClB,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YACrB,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;SAC/B;IACF,CAAC;AACF,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
package/src/cp-node.ts DELETED
@@ -1,388 +0,0 @@
1
- /** @internal */
2
- declare const _debug_: Debug;
3
-
4
- import { LlRbTree } from 'flo-ll-rb-tree';
5
- import { Debug } from './debug/debug.js';
6
- import { ContactPoint, compareCps } from './contact-point.js';
7
- import { removeCpNode } from './cp-node/remove.js';
8
- import { getCurveToNext } from './get-curve-to-next.js';
9
-
10
-
11
- /**
12
- * The primary class of the library.
13
- *
14
- * Since the MAT is a full representation of the shape boundary an instance of
15
- * this class contains both the information of a boundary point and a medial
16
- * axis point (and edge to the next point(s)). It also contains edges to other
17
- * [[CpNode]]s which allows for traversal of the MAT and thus implictly
18
- * represents the entire MAT.
19
- *
20
- * To get the maximal disk circle (of which the center is on the medial axis)
21
- * use [[cp]].circle.
22
- *
23
- * To get the boundary point, use [[cp]].pointOnShape.
24
- *
25
- * The edge [[next]] (resp. [[prev]]) allows one to move anti-clockwise (resp.
26
- * clockwise) on the shape boundary to the next [[CpNode]]. This also imposes a
27
- * direction of traversal of the MAT edges and vertices.
28
- *
29
- * The edge [[nextOnCircle]] (resp. [[prevOnCircle]]) allows one to go
30
- * anti-clockwise (resp. clockwise) around the maximal disks implied by
31
- * the CpNode to the next maximal disk contact point. This is equivalent to
32
- * following other branches on the MAT.
33
- *
34
- * Call [[getCurveBetween]](cpNodeFrom, cpNodeTo) or getCurveToNext(cpNode)
35
- * (replacing the older CpNode.[[matCurveToNextVertex]]) to get a bezier curve
36
- * from the maximal disk of this [[CpNode]] to the next [[CpNode]]'s
37
- * maximal disk and thus directly representing a piece of the medial axis.
38
- *
39
- * The function, [[getChildren]], returns the children of this [[CpNode]] when
40
- * seen as a MAT edge. Only children in a 'forward' direction are returned. These
41
- * include all edges except the 'backward' edge given by [[prevOnCircle]]. For
42
- * [[CpNode]]s having a maximal disk with 2 contact points (a 2-prong, the usual
43
- * case) the children will be the single edge [[next]]. For a 3-prong this will
44
- * be the edges [[next]] and [[nextOnCircle]], etc. [[getChildren]] allows one to
45
- * easily traverse the MAT tree - see e.g. the implementation of [[traverseEdges]].
46
- *
47
- * The getter, [[vertexChildren]], is similar to [[getChildren]] but returns the
48
- * child nodes of the tree when [[CpNode]] is seen as a MAT vertex point (as
49
- * opposed to edge). In this way the dual graph of the tree can easily be
50
- * traversed - see e.g. [[traverseVertices]]. Generally, however, traversing the
51
- * edges is preferred as it returns the entire Medial Axis (by utilizing
52
- * [[getCurveToNext]] on each returned edge).
53
- *
54
- * It may be worth mentioning that by traversing from the CpNode by following
55
- * [[next]] repeatedly until one is back at the same CpNode allows one
56
- * to 'go around' the shape boundary and at the same time traverse the MAT twice
57
- * in opposite directions.
58
- */
59
- class CpNode {
60
-
61
- /**
62
- * Primarily for internal use.
63
- * @param cp The shape boundary contact point, i.e. a [[CpNode]] without its
64
- * edges.
65
- * @param isHoleClosing If true, this [[CpNode]] belongs to a hole-closing
66
- * maximal disk.
67
- * @param isIntersection true if this cpNode is at a shape boundary
68
- * intersection point, false otherwise
69
- * @param prev The previous (going clockwise around the boundary) contact
70
- * point ([[CpNode]]).
71
- * @param next The next (going anti-clockwise around the boundary) contact
72
- * point ([[CpNode]]).
73
- * @param prevOnCircle The previous [[CpNode]] (going clockwise around
74
- * the inscribed circle defined by the maximal disk).
75
- * @param nextOnCircle The next [[CpNode]] (going anti-clockwise around
76
- * the inscribed circle defined by the maximal disk).
77
- */
78
- constructor(
79
- public readonly cp : ContactPoint,
80
- public isHoleClosing : boolean,
81
- public isIntersection : boolean,
82
- public prev : CpNode = undefined,
83
- public next : CpNode = undefined,
84
- public prevOnCircle : CpNode = undefined,
85
- public nextOnCircle : CpNode = undefined) {
86
- }
87
-
88
-
89
- /**
90
- * Returns the bezier curve from the maximal disk of this [[CpNode]] to the
91
- * next [[CpNode]]'s maximal disk and thus directly represents a piece of the
92
- * medial axis.
93
- * @deprecated Use [[getCurveToNext]] instead
94
- * @param cpNode
95
- */
96
- get matCurveToNextVertex() {
97
- return getCurveToNext(this);
98
- }
99
-
100
-
101
- /**
102
- * Primarily for internal use.
103
- *
104
- * Compares the order of two [[CpNode]]s. The order is cyclic and depends
105
- * on a [[CpNode]]'s relative position along the shape boundary.
106
- */
107
- static comparator =
108
- (a: CpNode, b: CpNode) => compareCps(a.cp, b.cp);
109
-
110
-
111
- /**
112
- * Returns the children of this [[CpNode]] when seen as a MAT edge. Only
113
- * children in a 'forward' direction are returned. These include all edges
114
- * except the 'backward' edge given by [[prevOnCircle]], even terminating
115
- * edges.
116
- */
117
- getChildren() {
118
- const children: CpNode[] = [];
119
-
120
- const cp = this.next;
121
- let cp_ = cp;
122
- do {
123
- children.push(cp_);
124
- cp_ = cp_.nextOnCircle;
125
- } while (cp_.nextOnCircle !== cp);
126
-
127
- return children;
128
- }
129
-
130
- static remove = removeCpNode;
131
-
132
-
133
- /**
134
- * Similar to [[getChildren]] but returns the child nodes of the tree when
135
- * [[CpNode]] is seen as a MAT vertex point (as opposed to edge). In this
136
- * way the dual graph of the tree can easily be traversed - see e.g.
137
- * [[traverseVertices]]. Generally, however, traversing the edges is
138
- * preferred as it returns the entire Medial Axis (by utilizing
139
- * [[getCurveToNext]] on each returned edge).
140
- */
141
- get vertexChildren() {
142
- if (this.isTerminating()) { return []; }
143
-
144
- const cp: CpNode = this;
145
- const children: CpNode[] = [];
146
-
147
- let cp_ = cp;
148
- while (cp_ !== cp.prevOnCircle) {
149
- if (!cp_.isTerminating()) { children.push(cp_.next); }
150
- cp_ = cp_.nextOnCircle;
151
- }
152
-
153
- return children;
154
- }
155
-
156
-
157
- /**
158
- * Returns all [[CpNode]]s on the MAT that this [[CpNode]] is part of
159
- * starting from the current one and going anti-clockwise around the shape.
160
- */
161
- public getAllOnLoop() {
162
- const cpStart: CpNode = this;
163
- const cps: CpNode[] = [cpStart];
164
- let cp: CpNode = this.next;
165
-
166
- while (cp !== cpStart) {
167
- cps.push(cp);
168
- cp = cp.next;
169
- }
170
-
171
- return cps;
172
- }
173
-
174
-
175
- /**
176
- * Primarily for internal use.
177
- *
178
- * Insert a [[CpNode]] into the MAT tree graph after the specified point
179
- * and returns the freshly inserted [[CpNode]].
180
- * @param isHoleClosing True if this is a hole closing contact point.
181
- * @param isIntersection True if this is a contact point at a shape boundary
182
- * intersection point.
183
- * @param cpTree The tree graph holding the [[CpNodes]] of the MAT.
184
- * @param cp [[ContactPoint]] defining the [[CpNode]].
185
- * @param prev_ Inserts the new [[CpNode]] right after this item if the
186
- * loop is not empty, else insert the new [[CpNode]] as the only item in the
187
- * loop.
188
- */
189
- public static insert(
190
- isHoleClosing: boolean,
191
- isIntersection: boolean,
192
- cpTree: LlRbTree<CpNode>,
193
- cp: ContactPoint,
194
- prev_: CpNode) {
195
-
196
- const cpNode = new CpNode(cp, isHoleClosing, isIntersection);
197
- if (typeof _debug_ !== 'undefined') {
198
- _debug_.generated.elems.cpNode.push({
199
- generated: _debug_.generated,
200
- cpNode
201
- });
202
- }
203
-
204
- let prev;
205
- let next;
206
-
207
- if (!prev_) {
208
- prev = cpNode;
209
- next = cpNode;
210
- } else {
211
- prev = prev_;
212
- next = prev.next;
213
- }
214
-
215
- next.prev = cpNode;
216
- prev.next = cpNode;
217
-
218
- cpNode.prev = prev;
219
- cpNode.next = next;
220
-
221
- cpTree.insert(cpNode);
222
-
223
- return cpNode;
224
- }
225
-
226
-
227
- /**
228
- * Return this (except if exclThis is truthy) and the the other CpNodes
229
- * around the maximal disk vertex circle in an anti-clockwise order.
230
- * @param exclThis If true the returned array does not include this
231
- * [[CpNode]].
232
- */
233
- public getCpNodesOnCircle(exclThis = false) {
234
- const startCp = this as CpNode;
235
- let cp = startCp;
236
-
237
- const cps: CpNode[] = [];
238
- do {
239
- if (exclThis) {
240
- exclThis = false;
241
- } else {
242
- cps.push(cp);
243
- }
244
- cp = cp.nextOnCircle;
245
- } while (cp !== startCp)
246
-
247
- return cps;
248
- }
249
-
250
-
251
- /**
252
- * Returns true if the 2 given [[CpNode]]s are on the same maximal disk
253
- * circle.
254
- * @param cpNode1 A [[CpNode]].
255
- * @param cpNode2 Another [[CpNode]]
256
- */
257
- static isOnSameCircle(cpNode1: CpNode, cpNode2: CpNode) {
258
- const cpNodes = cpNode1.getCpNodesOnCircle(true);
259
-
260
- return cpNodes.indexOf(cpNode2) >= 0;
261
- }
262
-
263
-
264
- /**
265
- * Returns true if this [[CpNode]] is terminating, i.e. implies a leaf MAT
266
- * vertex.
267
- *
268
- * This is always the case for sharp corners and maximal disks with
269
- * a single contact point. Note, however, that even in these cases there are
270
- * two contact points stored (sitting 'on top' of each other) for the
271
- * maximal disk. It can be seen as a limiting case of a two-prong where the
272
- * distance between two of the contact points tend to zero. One point
273
- * (represented by a [[CpNode]] of course) will be terminating with the
274
- * other point being its [[next]], whereas the other point will *not* be
275
- * terminating and 'points' back into the shape.
276
- */
277
- public isTerminating() {
278
- return this === this.next.prevOnCircle;
279
- }
280
-
281
-
282
- /**
283
- * Like isTerminating() but only returns true if all cpNodes on the circle
284
- * (except this.prevOnCircle) is terminating.
285
- */
286
- public isFullyTerminating() {
287
- const otherOnCircle = this.prevOnCircle.getCpNodesOnCircle(true);
288
- const isFullyTerminating = otherOnCircle.every(cpNode => cpNode.isTerminating());
289
-
290
- return isFullyTerminating;
291
- }
292
-
293
-
294
- /**
295
- * Returns the first [[CpNode]] (from this one by successively applying
296
- * .nextOnCircle) that exits the circle.
297
- */
298
- public getFirstExit() {
299
- const startNode = this as CpNode;
300
- let cpNode = startNode;
301
-
302
- while (cpNode.next === cpNode.prevOnCircle) {
303
- cpNode = cpNode.next;
304
-
305
- if (cpNode === startNode) {
306
- // The very special case the MAT is a single point.
307
- return undefined;
308
- }
309
- }
310
-
311
- return cpNode;
312
- }
313
-
314
-
315
- /**
316
- * Returns true if this [[CpNode]] represents a sharp corner, i.e. the
317
- * limiting case of a two-prong having zero radius.
318
- *
319
- * Note that two [[CpNode]]s are stored for each sharp corner, one being
320
- * terminating and one not. See [[isTerminating]] for more details.
321
- */
322
- public isSharp() {
323
- return this.cp.circle.radius === 0;
324
- }
325
-
326
-
327
- /**
328
- * Returns true if this [[CpNode]]'s maximal disk has only one contact point
329
- * on the shape boundary (up to planar coordinates). These includes sharp
330
- * corners.
331
- *
332
- * Note, however, that two [[CpNode]]s are stored for each such point to
333
- * preserve symmetry - see [[isTerminating]] for more details.
334
- */
335
- public isOneProng() {
336
- const cp1 = this;
337
-
338
- if (cp1.cp.circle.radius === 0) {
339
- return true;
340
- }
341
-
342
- const cp2 = cp1.nextOnCircle;
343
-
344
- const p1 = cp1.cp.pointOnShape.p;
345
- const p2 = cp2.cp.pointOnShape.p;
346
-
347
- return (p1[0] === p2[0] && p1[1] === p2[1]);
348
- }
349
-
350
-
351
- /**
352
- * Returns the number of contact points on the maximal disk circle implied
353
- * by this [[CpNode]].
354
- *
355
- * Note, however, that even one-prongs and sharp corners will return 2 (see
356
- * [[isTerminating]] for more details); if this is not desired use
357
- * [[getRealProngCount]] instead which will return 1 in these cases.
358
- */
359
- public getProngCount() {
360
- const startCp = this as CpNode;
361
- let cp = startCp;
362
-
363
- let i = 0;
364
-
365
- do {
366
- i++;
367
- cp = cp.nextOnCircle;
368
- } while (cp !== startCp)
369
-
370
- return i;
371
- }
372
-
373
-
374
- /**
375
- * Returns the number of contact points (up to planar coordinates) on the
376
- * maximal disk circle implied by this [[CpNode]].
377
- *
378
- * See also [[getProngCount]].
379
- */
380
- public getRealProngCount() {
381
- if (this.isOneProng()) { return 1; }
382
-
383
- return this.getProngCount();
384
- }
385
- }
386
-
387
-
388
- export { CpNode }