flo-mat 3.0.9 → 3.0.11

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 (261) hide show
  1. package/__tests__/jsog/check-jsog-eql-calc.spec.ts +81 -0
  2. package/__tests__/jsog/decode-jsog.ts +85 -0
  3. package/__tests__/jsog/get-mats1.ts +41 -0
  4. package/__tests__/{cp-node/fs → jsog}/mat-dummys.ts +51 -564
  5. package/__tests__/jsog/to-jsog-breath-first.ts +107 -0
  6. package/__tests__/jsog/to-jsog-depth-first.ts +55 -0
  7. package/browser/index.js +280 -236
  8. package/browser/index.min.js +1 -1
  9. package/node/add-n-prong.ts/join-spokes.js.map +1 -1
  10. package/node/closest-boundary-point/cull-bezier-pieces.d.ts +5 -4
  11. package/node/closest-boundary-point/cull-bezier-pieces.js +9 -8
  12. package/node/closest-boundary-point/cull-bezier-pieces.js.map +1 -1
  13. package/node/closest-boundary-point/cull-by-loose-bounding-box.d.ts +2 -2
  14. package/node/closest-boundary-point/cull-by-loose-bounding-box.js +8 -8
  15. package/node/closest-boundary-point/cull-by-loose-bounding-box.js.map +1 -1
  16. package/node/closest-boundary-point/cull-by-tight-boundary-box.d.ts +2 -2
  17. package/node/closest-boundary-point/cull-by-tight-boundary-box.js +8 -8
  18. package/node/closest-boundary-point/cull-by-tight-boundary-box.js.map +1 -1
  19. package/node/closest-boundary-point/dd-deflate-with-running-error.js.map +1 -1
  20. package/node/closest-boundary-point/get-best-distance-squared.d.ts +1 -1
  21. package/node/closest-boundary-point/get-best-distance-squared.js +6 -6
  22. package/node/closest-boundary-point/get-best-distance-squared.js.map +1 -1
  23. package/node/closest-boundary-point/get-close-boundary-points-certified.d.ts +2 -2
  24. package/node/closest-boundary-point/get-close-boundary-points-certified.js +7 -7
  25. package/node/closest-boundary-point/get-close-boundary-points-certified.js.map +1 -1
  26. package/node/contact-point/contact-point.js.map +1 -1
  27. package/node/corner/get-corner.js.map +1 -1
  28. package/node/corner/get-interface-ccw.js.map +1 -1
  29. package/node/cp-node/cp-node-fs.d.ts +2 -1
  30. package/node/cp-node/cp-node-fs.js +1 -2
  31. package/node/cp-node/cp-node-fs.js.map +1 -1
  32. package/node/cp-node/fs/cp-node-comparator.d.ts +3 -0
  33. package/node/cp-node/fs/cp-node-comparator.js +6 -0
  34. package/node/cp-node/fs/cp-node-comparator.js.map +1 -0
  35. package/node/cp-node/fs/find-first.js.map +1 -1
  36. package/node/cp-node/fs/get-all-on-loop.js.map +1 -1
  37. package/node/cp-node/fs/get-boundary-bezier-parts-to-next.d.ts +1 -1
  38. package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js +11 -16
  39. package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js.map +1 -1
  40. package/node/cp-node/fs/get-boundary-beziers-between.js +4 -6
  41. package/node/cp-node/fs/get-boundary-beziers-between.js.map +1 -1
  42. package/node/cp-node/fs/get-boundary-beziers-to-next.d.ts +10 -1
  43. package/node/cp-node/fs/get-boundary-beziers-to-next.js +70 -35
  44. package/node/cp-node/fs/get-boundary-beziers-to-next.js.map +1 -1
  45. package/node/cp-node/fs/get-branch-beziers.js.map +1 -1
  46. package/node/cp-node/fs/get-branch.js.map +1 -1
  47. package/node/cp-node/fs/get-children.js.map +1 -1
  48. package/node/cp-node/fs/get-first-exit.js.map +1 -1
  49. package/node/cp-node/fs/get-mat-curve-to-next.js.map +1 -1
  50. package/node/cp-node/fs/get-mat-curves-between.js.map +1 -1
  51. package/node/cp-node/fs/get-prong-count.js.map +1 -1
  52. package/node/cp-node/fs/get-real-prong-count.js.map +1 -1
  53. package/node/cp-node/fs/get-salience.js +2 -2
  54. package/node/cp-node/fs/get-salience.js.map +1 -1
  55. package/node/cp-node/fs/get-speed.js +0 -1
  56. package/node/cp-node/fs/get-speed.js.map +1 -1
  57. package/node/cp-node/fs/get-vertex-forward-children.js.map +1 -1
  58. package/node/cp-node/fs/is-fully-terminating.d.ts +1 -1
  59. package/node/cp-node/fs/is-fully-terminating.js.map +1 -1
  60. package/node/cp-node/fs/is-one-prong.js.map +1 -1
  61. package/node/cp-node/fs/is-sharp.js.map +1 -1
  62. package/node/cp-node/fs/is-terminating.js.map +1 -1
  63. package/node/cp-node/fs/traverse-cp.js.map +1 -1
  64. package/node/cp-node/fs/traverse-edges.js.map +1 -1
  65. package/node/cp-node/fs/traverse-vertices.js.map +1 -1
  66. package/node/debug/functions/draw-elem/bounding-hull.js.map +1 -1
  67. package/node/debug/functions/draw-elem/draw-cp-node.js +1 -1
  68. package/node/debug/functions/draw-elem/draw-cp-node.js.map +1 -1
  69. package/node/debug/functions/draw-elem/draw-cull.js.map +1 -1
  70. package/node/debug/functions/draw-elem/draw-dull-corner.js.map +1 -1
  71. package/node/debug/functions/draw-elem/draw-elem.js.map +1 -1
  72. package/node/debug/functions/draw-elem/draw-leaves.js.map +1 -1
  73. package/node/debug/functions/draw-elem/draw-loose-bounding-box.js.map +1 -1
  74. package/node/debug/functions/draw-elem/draw-max-vertex.js.map +1 -1
  75. package/node/debug/functions/draw-elem/draw-min-y.js.map +1 -1
  76. package/node/debug/functions/draw-elem/draw-one-prong-at-dull-corner.js.map +1 -1
  77. package/node/debug/functions/draw-elem/draw-one-prong.js.map +1 -1
  78. package/node/debug/functions/draw-elem/draw-sharp-corner.js.map +1 -1
  79. package/node/debug/functions/draw-elem/draw-speed.js.map +1 -1
  80. package/node/debug/functions/draw-elem/draw-three-prong.js.map +1 -1
  81. package/node/debug/functions/draw-elem/draw-tight-bounding-box.js.map +1 -1
  82. package/node/debug/functions/draw-elem/draw-two-prong.js.map +1 -1
  83. package/node/debug/functions/draw-elem/draw-vertex.js.map +1 -1
  84. package/node/debug/functions/general.js.map +1 -1
  85. package/node/find-2-prong/add-1-prong.js.map +1 -1
  86. package/node/find-2-prong/cull-bezier-pieces.d.ts +4 -4
  87. package/node/find-2-prong/cull-bezier-pieces.js +9 -9
  88. package/node/find-2-prong/cull-bezier-pieces.js.map +1 -1
  89. package/node/find-2-prong/find-2-prong.js +8 -8
  90. package/node/find-2-prong/find-2-prong.js.map +1 -1
  91. package/node/find-2-prong/find-equidistant-point-on-line-dd.js.map +1 -1
  92. package/node/find-2-prong/get-initial-bezier-pieces.d.ts +2 -2
  93. package/node/find-2-prong/get-initial-bezier-pieces.js +2 -2
  94. package/node/find-2-prong/get-initial-bezier-pieces.js.map +1 -1
  95. package/node/find-2-prong/reduce-radius.d.ts +1 -1
  96. package/node/find-2-prong/reduce-radius.js +5 -5
  97. package/node/find-2-prong/reduce-radius.js.map +1 -1
  98. package/node/find-3-prong.ts/calc-better-x.d.ts +2 -2
  99. package/node/find-3-prong.ts/calc-better-x.js +3 -3
  100. package/node/find-3-prong.ts/calc-better-x.js.map +1 -1
  101. package/node/find-3-prong.ts/calc-initial-3-prong-center.d.ts +2 -2
  102. package/node/find-3-prong.ts/calc-initial-3-prong-center.js +3 -3
  103. package/node/find-3-prong.ts/calc-initial-3-prong-center.js.map +1 -1
  104. package/node/find-3-prong.ts/find-3-prong-for-delta3s.d.ts +2 -2
  105. package/node/find-3-prong.ts/find-3-prong-for-delta3s.js +16 -16
  106. package/node/find-3-prong.ts/find-3-prong-for-delta3s.js.map +1 -1
  107. package/node/find-3-prong.ts/find-3-prong.js +2 -2
  108. package/node/find-3-prong.ts/find-3-prong.js.map +1 -1
  109. package/node/find-3-prong.ts/find-and-add-3-prong.js.map +1 -1
  110. package/node/find-3-prong.ts/find-and-add-3-prongs.js.map +1 -1
  111. package/node/find-3-prong.ts/get-closest-points.d.ts +2 -2
  112. package/node/find-3-prong.ts/get-closest-points.js +4 -4
  113. package/node/find-3-prong.ts/get-closest-points.js.map +1 -1
  114. package/node/find-mat/find-mats.js.map +1 -1
  115. package/node/geometry/get-closest-square-distance-to-rect.js.map +1 -1
  116. package/node/geometry/get-closest-squared-distance-to-rotated-rect.js.map +1 -1
  117. package/node/index.d.ts +35 -1
  118. package/node/index.js +36 -1
  119. package/node/index.js.map +1 -1
  120. package/node/mat/create-new-cp-tree.js.map +1 -1
  121. package/node/mat/get-boundary-piece-beziers.js +7 -7
  122. package/node/mat/get-boundary-piece-beziers.js.map +1 -1
  123. package/node/mat/get-largest-vertex.js.map +1 -1
  124. package/node/mat/trim-mat.js.map +1 -1
  125. package/node/memoize-primitive.js.map +1 -1
  126. package/node/sat/add-debug-info.js.map +1 -1
  127. package/node/sat/cull.d.ts +7 -5
  128. package/node/sat/cull.js +7 -4
  129. package/node/sat/cull.js.map +1 -1
  130. package/node/sat/get-leaves.js.map +1 -1
  131. package/node/sat/to-scale-axis.d.ts +3 -2
  132. package/node/sat/to-scale-axis.js +3 -2
  133. package/node/sat/to-scale-axis.js.map +1 -1
  134. package/node/svg/get-loop-bounds.js.map +1 -1
  135. package/node/svg/get-min-y-pos.js.map +1 -1
  136. package/node/sweep-line/sweep-line.js.map +1 -1
  137. package/package.json +6 -6
  138. package/src/add-n-prong.ts/join-spokes.ts +11 -11
  139. package/src/closest-boundary-point/cull-bezier-pieces.ts +12 -11
  140. package/src/closest-boundary-point/cull-by-loose-bounding-box.ts +8 -8
  141. package/src/closest-boundary-point/cull-by-tight-boundary-box.ts +8 -8
  142. package/src/closest-boundary-point/dd-deflate-with-running-error.ts +22 -22
  143. package/src/closest-boundary-point/get-best-distance-squared.ts +6 -6
  144. package/src/closest-boundary-point/get-close-boundary-points-certified.ts +41 -41
  145. package/src/contact-point/contact-point.ts +13 -13
  146. package/src/corner/get-corner.ts +39 -39
  147. package/src/corner/get-interface-ccw.ts +3 -3
  148. package/src/cp-node/cp-node-fs.ts +132 -135
  149. package/src/cp-node/cp-node.ts +30 -30
  150. package/src/cp-node/fs/clone.ts +4 -4
  151. package/src/cp-node/fs/cp-node-comparator.ts +13 -0
  152. package/src/cp-node/fs/find-first.ts +6 -6
  153. package/src/cp-node/fs/get-all-on-loop.ts +1 -1
  154. package/src/cp-node/fs/get-boundary-bezier-parts-to-next.ts +12 -18
  155. package/src/cp-node/fs/get-boundary-beziers-between.ts +6 -7
  156. package/src/cp-node/fs/get-boundary-beziers-to-next.ts +79 -53
  157. package/src/cp-node/fs/get-branch-beziers.ts +1 -1
  158. package/src/cp-node/fs/get-branch.ts +1 -1
  159. package/src/cp-node/fs/get-children.ts +8 -8
  160. package/src/cp-node/fs/get-first-exit.ts +11 -11
  161. package/src/cp-node/fs/get-mat-curve-to-next.ts +1 -1
  162. package/src/cp-node/fs/get-mat-curves-between.ts +1 -1
  163. package/src/cp-node/fs/get-prong-count.ts +8 -8
  164. package/src/cp-node/fs/get-real-prong-count.ts +3 -3
  165. package/src/cp-node/fs/get-salience.ts +2 -2
  166. package/src/cp-node/fs/get-speed.ts +1 -6
  167. package/src/cp-node/fs/get-vertex-forward-children.ts +10 -10
  168. package/src/cp-node/fs/is-fully-terminating.ts +3 -3
  169. package/src/cp-node/fs/is-one-prong.ts +8 -8
  170. package/src/cp-node/fs/is-sharp.ts +1 -1
  171. package/src/cp-node/fs/is-terminating.ts +1 -1
  172. package/src/cp-node/fs/iterate-all-on-loop.ts +6 -6
  173. package/src/cp-node/fs/traverse-all-forward.ts +11 -11
  174. package/src/cp-node/fs/traverse-cp.ts +19 -17
  175. package/src/cp-node/fs/traverse-edges.ts +10 -10
  176. package/src/cp-node/fs/traverse-vertices.ts +17 -17
  177. package/src/curve/curve.ts +26 -26
  178. package/src/debug/functions/cmp-cp-on-delta.ts +1 -1
  179. package/src/debug/functions/draw-elem/bounding-hull.ts +2 -2
  180. package/src/debug/functions/draw-elem/culls.ts +2 -2
  181. package/src/debug/functions/draw-elem/draw-cp-node.ts +30 -30
  182. package/src/debug/functions/draw-elem/draw-cull.ts +2 -2
  183. package/src/debug/functions/draw-elem/draw-dull-corner.ts +7 -7
  184. package/src/debug/functions/draw-elem/draw-elem.ts +28 -28
  185. package/src/debug/functions/draw-elem/draw-leaves.ts +12 -12
  186. package/src/debug/functions/draw-elem/draw-loose-bounding-box.ts +7 -7
  187. package/src/debug/functions/draw-elem/draw-max-vertex.ts +2 -2
  188. package/src/debug/functions/draw-elem/draw-min-y.ts +2 -2
  189. package/src/debug/functions/draw-elem/draw-one-prong-at-dull-corner.ts +1 -1
  190. package/src/debug/functions/draw-elem/draw-one-prong.ts +1 -1
  191. package/src/debug/functions/draw-elem/draw-sharp-corner.ts +6 -6
  192. package/src/debug/functions/draw-elem/draw-speed.ts +2 -2
  193. package/src/debug/functions/draw-elem/draw-three-prong.ts +28 -28
  194. package/src/debug/functions/draw-elem/draw-tight-bounding-box.ts +4 -4
  195. package/src/debug/functions/draw-elem/draw-two-prong.ts +51 -51
  196. package/src/debug/functions/draw-elem/draw-vertex.ts +12 -12
  197. package/src/debug/functions/draw-elem/dull-corner.ts +7 -7
  198. package/src/debug/functions/draw-elem/leaves.ts +2 -2
  199. package/src/debug/functions/draw-elem/loose-bounding-box.ts +7 -7
  200. package/src/debug/functions/draw-elem/max-vertex.ts +2 -2
  201. package/src/debug/functions/draw-elem/min-y.ts +2 -2
  202. package/src/debug/functions/draw-elem/one-prong-at-dull-corner.ts +1 -1
  203. package/src/debug/functions/draw-elem/one-prong.ts +1 -1
  204. package/src/debug/functions/draw-elem/sharp-corner.ts +6 -6
  205. package/src/debug/functions/draw-elem/three-prong.ts +19 -19
  206. package/src/debug/functions/draw-elem/tight-bounding-box.ts +4 -4
  207. package/src/debug/functions/draw-elem/two-prong.ts +44 -44
  208. package/src/debug/functions/draw-elem/vertex.ts +28 -28
  209. package/src/debug/functions/general.ts +18 -18
  210. package/src/debug/functions/three-prong.ts +184 -184
  211. package/src/debug/functions/two-prong.ts +201 -201
  212. package/src/debug/two-prong-for-debugging.ts +26 -26
  213. package/src/find-2-prong/add-1-prong.ts +25 -25
  214. package/src/find-2-prong/add-debug-info.ts +38 -38
  215. package/src/find-2-prong/cull-bezier-pieces.ts +10 -10
  216. package/src/find-2-prong/find-2-prong.ts +158 -158
  217. package/src/find-2-prong/find-equidistant-point-on-line-dd.ts +50 -50
  218. package/src/find-2-prong/find-equidistant-point-on-line.ts +27 -27
  219. package/src/find-2-prong/get-initial-bezier-pieces.ts +2 -2
  220. package/src/find-2-prong/reduce-radius.ts +5 -5
  221. package/src/find-3-prong.ts/calc-better-x.ts +3 -3
  222. package/src/find-3-prong.ts/calc-initial-3-prong-center.ts +3 -3
  223. package/src/find-3-prong.ts/find-3-prong-for-delta3s.ts +17 -17
  224. package/src/find-3-prong.ts/find-3-prong.ts +23 -23
  225. package/src/find-3-prong.ts/find-and-add-3-prong.ts +37 -37
  226. package/src/find-3-prong.ts/find-and-add-3-prongs.ts +30 -30
  227. package/src/find-3-prong.ts/get-closest-points.ts +4 -4
  228. package/src/find-mat/add-2-prongs-by-error.ts +8 -8
  229. package/src/find-mat/find-mats.ts +49 -49
  230. package/src/find-mat/fix-ordering.ts +2 -2
  231. package/src/find-mat/get-total-by.ts +12 -12
  232. package/src/geometry/get-closest-square-distance-to-rect.ts +37 -37
  233. package/src/geometry/get-closest-squared-distance-to-rotated-rect.ts +14 -14
  234. package/src/get-curve/get-curve-between.ts +1 -1
  235. package/src/index.ts +41 -4
  236. package/src/mat/cmp-cp-on-delta.ts +1 -1
  237. package/src/mat/create-new-cp-tree.ts +12 -12
  238. package/src/mat/get-boundary-piece-beziers.ts +7 -7
  239. package/src/mat/get-edges-as-array.ts +9 -9
  240. package/src/mat/get-largest-3-prong.ts +8 -8
  241. package/src/mat/get-largest-three-prong.ts +5 -5
  242. package/src/mat/get-largest-vertex.ts +6 -6
  243. package/src/mat/get-two-prong-type.ts +9 -9
  244. package/src/mat/trim-mat.ts +1 -1
  245. package/src/memoize-primitive.ts +14 -14
  246. package/src/sat/add-debug-info.ts +4 -4
  247. package/src/sat/cull-by-salience.ts +1 -1
  248. package/src/sat/cull.ts +10 -7
  249. package/src/sat/get-leaves.ts +0 -1
  250. package/src/sat/to-scale-axis.ts +18 -17
  251. package/src/svg/get-extreme.ts +8 -8
  252. package/src/svg/get-loop-bounds.ts +84 -84
  253. package/src/svg/get-min-y-pos.ts +1 -1
  254. package/src/sweep-line/sweep-line.ts +23 -23
  255. package/src/utils/bezier-piece-to-bezier.ts +7 -7
  256. package/__tests__/cp-node/fs/check-jsog-eql-calc.spec.ts +0 -30
  257. package/node/cp-node/fs/cp-nodes-to-boundary-beziers.d.ts +0 -3
  258. package/node/cp-node/fs/cp-nodes-to-boundary-beziers.js +0 -6
  259. package/node/cp-node/fs/cp-nodes-to-boundary-beziers.js.map +0 -1
  260. package/src/closest-boundary-point/get-closest-boundary-point-certified.ts +0 -70
  261. package/src/cp-node/fs/cp-nodes-to-boundary-beziers.ts +0 -10
@@ -9,15 +9,15 @@ import { ThreeProngForDebugging } from '../three-prong-for-debugging.js';
9
9
 
10
10
  /** @internal */
11
11
  export interface IThreeProngDebugFunctions {
12
- drawSpokes : (g: SVGGElement, n: number) => void,
13
- traceConvergence : (g: SVGGElement, n: number, indx: number) => void,
14
- showBoundary : (g: SVGGElement, n: number, indx: number) => void,
15
- logδs : (n: number) => void,
16
- logNearest : (
17
- showSpokes? : boolean,
18
- showTrace? : boolean,
19
- showBoundaries? : boolean
20
- ) => (g: SVGGElement, p: number[], showDelay?: number) => void
12
+ drawSpokes : (g: SVGGElement, n: number) => void,
13
+ traceConvergence : (g: SVGGElement, n: number, indx: number) => void,
14
+ showBoundary : (g: SVGGElement, n: number, indx: number) => void,
15
+ logδs : (n: number) => void,
16
+ logNearest : (
17
+ showSpokes? : boolean,
18
+ showTrace? : boolean,
19
+ showBoundaries? : boolean
20
+ ) => (g: SVGGElement, p: number[], showDelay?: number) => void
21
21
  }
22
22
 
23
23
 
@@ -27,14 +27,14 @@ export interface IThreeProngDebugFunctions {
27
27
  * @param n - The 3-prong's zero-based index.
28
28
  */
29
29
  function drawSpokes(g: SVGGElement, n: number): void {
30
- const threeProng = _debug_.generated.elems.threeProng[n];
31
- const cc = threeProng.circle.center;
32
- const poss = threeProng.poss;
33
-
34
- for (let i=0; i<poss.length; i++) {
35
- const pos = poss[i];
36
- drawFs.line(g, [pos.p, cc], 'thin5 red');
37
- }
30
+ const threeProng = _debug_.generated.elems.threeProng[n];
31
+ const cc = threeProng.circle.center;
32
+ const poss = threeProng.poss;
33
+
34
+ for (let i=0; i<poss.length; i++) {
35
+ const pos = poss[i];
36
+ drawFs.line(g, [pos.p, cc], 'thin5 red');
37
+ }
38
38
  }
39
39
 
40
40
 
@@ -46,57 +46,57 @@ function drawSpokes(g: SVGGElement, n: number): void {
46
46
  * will be shown.
47
47
  */
48
48
  function traceConvergence(g: SVGGElement, n_: number, idx: number): void {
49
- let sIndx;
50
- let eIndx;
51
- if (n_ === undefined) {
52
- sIndx = 0;
53
- eIndx = _debug_.generated.elems.threeProng.length;
54
- } else {
55
- sIndx = n_;
56
- eIndx = n_ + 1;
57
- }
58
-
59
- for (let n=sIndx; n<eIndx; n++) {
60
-
61
- const forDebugging = _debug_.generated.elems.threeProng[n];
62
- //const g = forDebugging.generated.g;
63
-
64
- console.log(forDebugging);
65
-
66
- const candidateThreeProngs = forDebugging.candidateThreeProngs;
67
-
68
- //-----------------------------
69
- //---- Get start and end index
70
- //-----------------------------
71
- let startIndx;
72
- let endIndx;
73
- if (n_ === undefined || idx === -1) {
74
- startIndx = forDebugging.bestIndx;
75
- endIndx = forDebugging.bestIndx + 1;
76
- } else {
77
- if (idx === undefined) {
78
- startIndx = 0;
79
- endIndx = candidateThreeProngs.length;
80
- } else {
81
- startIndx = idx;
82
- endIndx = idx + 1;
83
- }
84
- }
85
-
86
- //---------------------------------
87
- //---- Draw candidate three-prongs
88
- //---------------------------------
89
- for (let i=startIndx; i<endIndx; i++) {
90
- const circle = candidateThreeProngs[i].circle;
91
- if (forDebugging.bestIndx === i) {
92
- drawFs.dot(g, circle.center, 0.2, 'green');
93
- drawFs.circle(g, circle, 'black thin10 nofill');
94
- } else {
95
- drawFs.dot(g, circle.center, 0.2, 'cyan');
96
- drawFs.circle(g, circle, 'cyan thin5 nofill');
97
- }
98
- }
99
- }
49
+ let sIndx;
50
+ let eIndx;
51
+ if (n_ === undefined) {
52
+ sIndx = 0;
53
+ eIndx = _debug_.generated.elems.threeProng.length;
54
+ } else {
55
+ sIndx = n_;
56
+ eIndx = n_ + 1;
57
+ }
58
+
59
+ for (let n=sIndx; n<eIndx; n++) {
60
+
61
+ const forDebugging = _debug_.generated.elems.threeProng[n];
62
+ //const g = forDebugging.generated.g;
63
+
64
+ console.log(forDebugging);
65
+
66
+ const candidateThreeProngs = forDebugging.candidateThreeProngs;
67
+
68
+ //-----------------------------
69
+ //---- Get start and end index
70
+ //-----------------------------
71
+ let startIndx;
72
+ let endIndx;
73
+ if (n_ === undefined || idx === -1) {
74
+ startIndx = forDebugging.bestIndx;
75
+ endIndx = forDebugging.bestIndx + 1;
76
+ } else {
77
+ if (idx === undefined) {
78
+ startIndx = 0;
79
+ endIndx = candidateThreeProngs.length;
80
+ } else {
81
+ startIndx = idx;
82
+ endIndx = idx + 1;
83
+ }
84
+ }
85
+
86
+ //---------------------------------
87
+ //---- Draw candidate three-prongs
88
+ //---------------------------------
89
+ for (let i=startIndx; i<endIndx; i++) {
90
+ const circle = candidateThreeProngs[i].circle;
91
+ if (forDebugging.bestIndx === i) {
92
+ drawFs.dot(g, circle.center, 0.2, 'green');
93
+ drawFs.circle(g, circle, 'black thin10 nofill');
94
+ } else {
95
+ drawFs.dot(g, circle.center, 0.2, 'cyan');
96
+ drawFs.circle(g, circle, 'cyan thin5 nofill');
97
+ }
98
+ }
99
+ }
100
100
  }
101
101
 
102
102
 
@@ -108,56 +108,56 @@ function traceConvergence(g: SVGGElement, n_: number, idx: number): void {
108
108
  * show all.
109
109
  */
110
110
  function showBoundary(g: SVGGElement, n: number, idx: number): void {
111
- const debugInfo = _debug_.generated.elems.threeProng[n];
112
- //const g = debugInfo.generated.g;
113
-
114
- const candidateThreeProngs = debugInfo.candidateThreeProngs;
115
-
116
- const startIndx = idx === undefined ? 0 : idx;
117
- const endIndx = idx === undefined ? candidateThreeProngs.length : idx;
118
-
119
- // Draw relevant δs
120
- const cpss = debugInfo.cpss;
121
- let j = 0;
122
- // For each iteration of δ3s (indexed by j)
123
- for (let idx=1; idx<cpss.length-1; idx++) {
124
-
125
- if (!(j >= startIndx && j <= endIndx)) {
126
- j++;
127
- continue;
128
- }
129
-
130
- const δ3s = [
131
- cpss[0],
132
- cpss[idx],
133
- cpss[cpss.length-1]
134
- ];
135
-
136
-
137
- // For each of the 3 δs
138
- for (let i=0; i<3; i++) {
139
- const δ = δ3s[i];
140
- const δS = δ[0]; // Delta Start
141
- const δE = δ[1]; // Delta End
142
-
143
- const posS = δS.cp.pointOnShape;
144
- const posE = δE.cp.pointOnShape;
145
-
146
- const pS = posS.p;
147
- const pE = posE.p;
148
-
149
- const r = 1 + (i*0.5);
150
-
151
- if (equal(pS, pE)) {
152
- drawFs.crossHair(g, pS, 'red thin10 nofill', r);
153
- } else {
154
- drawFs.crossHair(g, pS, 'green thin10 nofill', r);
155
- drawFs.crossHair(g, pE, 'blue thin10 nofill', r);
156
- }
157
- }
158
-
159
- j++;
160
- }
111
+ const debugInfo = _debug_.generated.elems.threeProng[n];
112
+ //const g = debugInfo.generated.g;
113
+
114
+ const candidateThreeProngs = debugInfo.candidateThreeProngs;
115
+
116
+ const startIndx = idx === undefined ? 0 : idx;
117
+ const endIndx = idx === undefined ? candidateThreeProngs.length : idx;
118
+
119
+ // Draw relevant δs
120
+ const cpss = debugInfo.cpss;
121
+ let j = 0;
122
+ // For each iteration of δ3s (indexed by j)
123
+ for (let idx=1; idx<cpss.length-1; idx++) {
124
+
125
+ if (!(j >= startIndx && j <= endIndx)) {
126
+ j++;
127
+ continue;
128
+ }
129
+
130
+ const δ3s = [
131
+ cpss[0],
132
+ cpss[idx],
133
+ cpss[cpss.length-1]
134
+ ];
135
+
136
+
137
+ // For each of the 3 δs
138
+ for (let i=0; i<3; i++) {
139
+ const δ = δ3s[i];
140
+ const δS = δ[0]; // Delta Start
141
+ const δE = δ[1]; // Delta End
142
+
143
+ const posS = δS.cp.pointOnShape;
144
+ const posE = δE.cp.pointOnShape;
145
+
146
+ const pS = posS.p;
147
+ const pE = posE.p;
148
+
149
+ const r = 1 + (i*0.5);
150
+
151
+ if (equal(pS, pE)) {
152
+ drawFs.crossHair(g, pS, 'red thin10 nofill', r);
153
+ } else {
154
+ drawFs.crossHair(g, pS, 'green thin10 nofill', r);
155
+ drawFs.crossHair(g, pE, 'blue thin10 nofill', r);
156
+ }
157
+ }
158
+
159
+ j++;
160
+ }
161
161
  }
162
162
 
163
163
 
@@ -166,9 +166,9 @@ function showBoundary(g: SVGGElement, n: number, idx: number): void {
166
166
  * @param n The 3-prong's zero-based index.
167
167
  */
168
168
  function logδs(n: number): void {
169
- const threeProng = _debug_.generated.elems.threeProng[n];
170
-
171
- console.log(threeProng.cpss);
169
+ const threeProng = _debug_.generated.elems.threeProng[n];
170
+
171
+ console.log(threeProng.cpss);
172
172
  }
173
173
 
174
174
 
@@ -177,73 +177,73 @@ function logδs(n: number): void {
177
177
  * @param p
178
178
  */
179
179
  function logNearest(
180
- showSpokes = true,
181
- showTrace = true,
182
- showBoundaries = true) {
183
-
184
- return function(g: SVGGElement, p: number[], showDelay = 1000) {
185
- const generated = _debug_.generated;
186
-
187
- const threeProng = getObjClosestTo<ThreeProngForDebugging>(
188
- p,
189
- generated.elems.threeProng,
190
- threeProng => threeProng.circle ? threeProng.circle.center : [0,0]
191
- )!;
192
-
193
-
194
- const circle = threeProng.circle;
195
- //const g = threeProng.generated.g;
196
-
197
- console.log(threeProng);
198
-
199
- const circle2 = {
200
- center: circle.center,
201
- radius: circle.radius || 1
202
- };
203
-
204
- //const draw = _debug_.fs.draw;
205
-
206
- drawFs.circle(g, circle2, 'blue thin10 nofill', showDelay);
207
- drawFs.crossHair(g, circle.center, 'red thin2 nofill', 2, showDelay);
208
-
209
- if (showSpokes) {
210
- drawFs.line(g, [threeProng.poss[0].p, circle.center], 'blue thin5 nofill', showDelay);
211
- drawFs.line(g, [threeProng.poss[1].p, circle.center], 'blue thin5 nofill', showDelay);
212
- drawFs.line(g, [threeProng.poss[2].p, circle.center], 'blue thin5 nofill', showDelay);
213
- }
214
-
215
-
216
- if (showBoundaries) {
217
- const boundaries = threeProng.boundaries;
218
- const boundaryS = boundaries[0];
219
- const boundaryE = boundaries[boundaries.length-1];
220
-
221
- drawFs.beziers(g, boundaryS, 'red thin20 nofill', showDelay);
222
- for (let i=1; i<boundaries.length-1; i++) {
223
- const boundary = boundaries[i];
224
- drawFs.beziers(g, boundary, 'green thin20 nofill', showDelay);
225
- }
226
- drawFs.beziers(g, boundaryE, 'blue thin20 nofill', showDelay);
227
- }
228
-
229
- if (showTrace) {
230
- const traces = threeProng.traces;
231
- for (const trace of traces) {
232
- drawFs.polyline(g, trace, 'red thin5 nofill', showDelay)
233
- }
234
- }
235
- }
180
+ showSpokes = true,
181
+ showTrace = true,
182
+ showBoundaries = true) {
183
+
184
+ return function(g: SVGGElement, p: number[], showDelay = 1000) {
185
+ const generated = _debug_.generated;
186
+
187
+ const threeProng = getObjClosestTo<ThreeProngForDebugging>(
188
+ p,
189
+ generated.elems.threeProng,
190
+ threeProng => threeProng.circle ? threeProng.circle.center : [0,0]
191
+ )!;
192
+
193
+
194
+ const circle = threeProng.circle;
195
+ //const g = threeProng.generated.g;
196
+
197
+ console.log(threeProng);
198
+
199
+ const circle2 = {
200
+ center: circle.center,
201
+ radius: circle.radius || 1
202
+ };
203
+
204
+ //const draw = _debug_.fs.draw;
205
+
206
+ drawFs.circle(g, circle2, 'blue thin10 nofill', showDelay);
207
+ drawFs.crossHair(g, circle.center, 'red thin2 nofill', 2, showDelay);
208
+
209
+ if (showSpokes) {
210
+ drawFs.line(g, [threeProng.poss[0].p, circle.center], 'blue thin5 nofill', showDelay);
211
+ drawFs.line(g, [threeProng.poss[1].p, circle.center], 'blue thin5 nofill', showDelay);
212
+ drawFs.line(g, [threeProng.poss[2].p, circle.center], 'blue thin5 nofill', showDelay);
213
+ }
214
+
215
+
216
+ if (showBoundaries) {
217
+ const boundaries = threeProng.boundaries;
218
+ const boundaryS = boundaries[0];
219
+ const boundaryE = boundaries[boundaries.length-1];
220
+
221
+ drawFs.beziers(g, boundaryS, 'red thin20 nofill', showDelay);
222
+ for (let i=1; i<boundaries.length-1; i++) {
223
+ const boundary = boundaries[i];
224
+ drawFs.beziers(g, boundary, 'green thin20 nofill', showDelay);
225
+ }
226
+ drawFs.beziers(g, boundaryE, 'blue thin20 nofill', showDelay);
227
+ }
228
+
229
+ if (showTrace) {
230
+ const traces = threeProng.traces;
231
+ for (const trace of traces) {
232
+ drawFs.polyline(g, trace, 'red thin5 nofill', showDelay)
233
+ }
234
+ }
235
+ }
236
236
  }
237
237
 
238
238
 
239
239
  /** @internal */
240
240
  const threeProngDebugFunctions: IThreeProngDebugFunctions = {
241
- drawSpokes,
242
- traceConvergence,
243
- showBoundary,
244
- logδs,
245
- logNearest
246
- }
247
-
241
+ drawSpokes,
242
+ traceConvergence,
243
+ showBoundary,
244
+ logδs,
245
+ logNearest
246
+ }
247
+
248
248
 
249
249
  export { threeProngDebugFunctions }