flo-mat 2.0.2 → 2.0.4

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 (216) hide show
  1. package/browser/index.js +8409 -8358
  2. package/browser/index.min.js +1 -1
  3. package/node/circle.d.ts +20 -20
  4. package/node/circle.js +31 -31
  5. package/node/compare-curvatures-at-interface.d.ts +19 -19
  6. package/node/compare-curvatures-at-interface.js +124 -124
  7. package/node/contact-point.d.ts +26 -26
  8. package/node/contact-point.js +25 -25
  9. package/node/cp-node/clone.d.ts +8 -8
  10. package/node/cp-node/clone.js +31 -31
  11. package/node/cp-node/remove.d.ts +9 -9
  12. package/node/cp-node/remove.js +19 -19
  13. package/node/cp-node.d.ts +202 -202
  14. package/node/cp-node.js +320 -320
  15. package/node/curve.d.ts +46 -46
  16. package/node/curve.js +88 -88
  17. package/node/debug/cp-node-for-debugging.d.ts +11 -11
  18. package/node/debug/cp-node-for-debugging.js +1 -1
  19. package/node/debug/debug-elem-types.d.ts +32 -32
  20. package/node/debug/debug-elem-types.js +1 -1
  21. package/node/debug/debug.d.ts +50 -50
  22. package/node/debug/debug.js +75 -75
  23. package/node/debug/functions/draw-elem/bounding-hull.d.ts +3 -3
  24. package/node/debug/functions/draw-elem/bounding-hull.js +7 -7
  25. package/node/debug/functions/draw-elem/branch.d.ts +4 -4
  26. package/node/debug/functions/draw-elem/branch.js +22 -22
  27. package/node/debug/functions/draw-elem/culls.d.ts +4 -4
  28. package/node/debug/functions/draw-elem/culls.js +21 -21
  29. package/node/debug/functions/draw-elem/draw-circle-percent.d.ts +3 -3
  30. package/node/debug/functions/draw-elem/draw-circle-percent.js +12 -12
  31. package/node/debug/functions/draw-elem/draw-elem.d.ts +8 -8
  32. package/node/debug/functions/draw-elem/draw-elem.js +45 -45
  33. package/node/debug/functions/draw-elem/dull-corner.d.ts +4 -4
  34. package/node/debug/functions/draw-elem/dull-corner.js +10 -10
  35. package/node/debug/functions/draw-elem/leaves.d.ts +4 -4
  36. package/node/debug/functions/draw-elem/leaves.js +12 -12
  37. package/node/debug/functions/draw-elem/loop.d.ts +4 -4
  38. package/node/debug/functions/draw-elem/loop.js +11 -11
  39. package/node/debug/functions/draw-elem/loops.d.ts +4 -4
  40. package/node/debug/functions/draw-elem/loops.js +6 -6
  41. package/node/debug/functions/draw-elem/loose-bounding-box.d.ts +3 -3
  42. package/node/debug/functions/draw-elem/loose-bounding-box.js +9 -9
  43. package/node/debug/functions/draw-elem/mat.d.ts +4 -4
  44. package/node/debug/functions/draw-elem/mat.js +30 -30
  45. package/node/debug/functions/draw-elem/max-vertex.d.ts +4 -4
  46. package/node/debug/functions/draw-elem/max-vertex.js +8 -8
  47. package/node/debug/functions/draw-elem/min-y.d.ts +4 -4
  48. package/node/debug/functions/draw-elem/min-y.js +13 -13
  49. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.d.ts +4 -4
  50. package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js +12 -12
  51. package/node/debug/functions/draw-elem/one-prong.d.ts +4 -4
  52. package/node/debug/functions/draw-elem/one-prong.js +16 -16
  53. package/node/debug/functions/draw-elem/sharp-corner.d.ts +4 -4
  54. package/node/debug/functions/draw-elem/sharp-corner.js +9 -9
  55. package/node/debug/functions/draw-elem/three-prong.d.ts +4 -4
  56. package/node/debug/functions/draw-elem/three-prong.js +16 -16
  57. package/node/debug/functions/draw-elem/tight-bounding-box.d.ts +3 -3
  58. package/node/debug/functions/draw-elem/tight-bounding-box.js +7 -7
  59. package/node/debug/functions/draw-elem/two-prong.d.ts +4 -4
  60. package/node/debug/functions/draw-elem/two-prong.js +36 -36
  61. package/node/debug/functions/draw-elem/vertex.d.ts +4 -4
  62. package/node/debug/functions/draw-elem/vertex.js +27 -27
  63. package/node/debug/functions/general.d.ts +48 -48
  64. package/node/debug/functions/general.js +52 -52
  65. package/node/debug/functions/three-prong.d.ts +11 -11
  66. package/node/debug/functions/three-prong.js +184 -184
  67. package/node/debug/functions/two-prong.d.ts +13 -13
  68. package/node/debug/functions/two-prong.js +117 -117
  69. package/node/debug/three-prong-for-debugging.d.ts +31 -31
  70. package/node/debug/three-prong-for-debugging.js +20 -20
  71. package/node/debug/two-prong-for-debugging.d.ts +26 -26
  72. package/node/debug/two-prong-for-debugging.js +1 -1
  73. package/node/find-mats.d.ts +26 -26
  74. package/node/find-mats.js +122 -122
  75. package/node/get-boundary-bezier-parts-to-next.d.ts +9 -9
  76. package/node/get-boundary-bezier-parts-to-next.js +42 -42
  77. package/node/get-boundary-beziers-to-next.d.ts +8 -8
  78. package/node/get-boundary-beziers-to-next.js +44 -44
  79. package/node/get-bounding-box-.d.ts +2 -2
  80. package/node/get-bounding-box-.js +4 -4
  81. package/node/get-branches.d.ts +12 -12
  82. package/node/get-branches.js +68 -68
  83. package/node/get-curve/get-curve-between.d.ts +9 -9
  84. package/node/get-curve/get-curve-between.js +56 -56
  85. package/node/get-curve/get-edge-direction.d.ts +9 -9
  86. package/node/get-curve/get-edge-direction.js +53 -53
  87. package/node/get-curve-to-next.d.ts +9 -9
  88. package/node/get-curve-to-next.js +11 -11
  89. package/node/get-interface-ccw.d.ts +24 -24
  90. package/node/get-interface-ccw.js +97 -97
  91. package/node/index.d.ts +36 -36
  92. package/node/index.js +32 -32
  93. package/node/loop/get-max-coordinate.d.ts +10 -10
  94. package/node/loop/get-max-coordinate.js +43 -43
  95. package/node/loop.d.ts +16 -16
  96. package/node/loop.js +34 -34
  97. package/node/mat/add-to-cp-graph.d.ts +16 -16
  98. package/node/mat/add-to-cp-graph.js +30 -30
  99. package/node/mat/bezier-piece.d.ts +12 -12
  100. package/node/mat/bezier-piece.js +1 -1
  101. package/node/mat/closest-boundary-point/closest-points-on-curve.d.ts +14 -14
  102. package/node/mat/closest-boundary-point/closest-points-on-curve.js +72 -72
  103. package/node/mat/closest-boundary-point/cull-bezier-pieces.d.ts +9 -9
  104. package/node/mat/closest-boundary-point/cull-bezier-pieces.js +19 -19
  105. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.d.ts +11 -11
  106. package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.js +24 -24
  107. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.d.ts +11 -11
  108. package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.js +26 -26
  109. package/node/mat/closest-boundary-point/get-best-distance-squared.d.ts +8 -8
  110. package/node/mat/closest-boundary-point/get-best-distance-squared.js +24 -24
  111. package/node/mat/closest-boundary-point/get-close-boundary-points.d.ts +17 -17
  112. package/node/mat/closest-boundary-point/get-close-boundary-points.js +80 -80
  113. package/node/mat/closest-boundary-point/get-closest-boundary-point.d.ts +18 -18
  114. package/node/mat/closest-boundary-point/get-closest-boundary-point.js +40 -40
  115. package/node/mat/corner.d.ts +37 -37
  116. package/node/mat/corner.js +1 -1
  117. package/node/mat/create-new-cp-tree.d.ts +9 -9
  118. package/node/mat/create-new-cp-tree.js +23 -23
  119. package/node/mat/elem-type-two-prong.d.ts +3 -3
  120. package/node/mat/elem-type-two-prong.js +1 -1
  121. package/node/mat/find-mat/add-1-prong.d.ts +12 -12
  122. package/node/mat/find-mat/add-1-prong.js +42 -42
  123. package/node/mat/find-mat/add-2-prong.d.ts +21 -21
  124. package/node/mat/find-mat/add-2-prong.js +192 -192
  125. package/node/mat/find-mat/add-3-prong.d.ts +19 -19
  126. package/node/mat/find-mat/add-3-prong.js +54 -54
  127. package/node/mat/find-mat/add-debug-info.d.ts +9 -9
  128. package/node/mat/find-mat/add-debug-info.js +67 -67
  129. package/node/mat/find-mat/create-get-interesting-points-on-loop.d.ts +11 -11
  130. package/node/mat/find-mat/create-get-interesting-points-on-loop.js +51 -51
  131. package/node/mat/find-mat/create-initial-cp-graph.d.ts +12 -12
  132. package/node/mat/find-mat/create-initial-cp-graph.js +40 -40
  133. package/node/mat/find-mat/find-2-prong/add-debug-info.d.ts +8 -8
  134. package/node/mat/find-mat/find-2-prong/add-debug-info.js +21 -21
  135. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.d.ts +11 -11
  136. package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js +29 -29
  137. package/node/mat/find-mat/find-2-prong/find-2-prong.d.ts +37 -37
  138. package/node/mat/find-mat/find-2-prong/find-2-prong.js +232 -232
  139. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.d.ts +9 -9
  140. package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js +39 -39
  141. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.d.ts +11 -11
  142. package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js +37 -37
  143. package/node/mat/find-mat/find-2-prong/x-for-debugging.d.ts +9 -9
  144. package/node/mat/find-mat/find-2-prong/x-for-debugging.js +1 -1
  145. package/node/mat/find-mat/find-3-prong/calc-better-x.d.ts +19 -19
  146. package/node/mat/find-mat/find-3-prong/calc-better-x.js +36 -36
  147. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.d.ts +13 -13
  148. package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.js +25 -25
  149. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.d.ts +22 -22
  150. package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.js +159 -159
  151. package/node/mat/find-mat/find-3-prong/find-3-prong.d.ts +16 -16
  152. package/node/mat/find-mat/find-3-prong/find-3-prong.js +76 -76
  153. package/node/mat/find-mat/find-3-prong/get-closest-points.d.ts +9 -9
  154. package/node/mat/find-mat/find-3-prong/get-closest-points.js +16 -16
  155. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.d.ts +15 -15
  156. package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.js +20 -20
  157. package/node/mat/find-mat/find-and-add-2-prongs.d.ts +16 -16
  158. package/node/mat/find-mat/find-and-add-2-prongs.js +73 -73
  159. package/node/mat/find-mat/find-and-add-3-prongs.d.ts +13 -13
  160. package/node/mat/find-mat/find-and-add-3-prongs.js +146 -146
  161. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.d.ts +14 -14
  162. package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.js +33 -33
  163. package/node/mat/find-mat/get-potential-2-prongs.d.ts +4 -4
  164. package/node/mat/find-mat/get-potential-2-prongs.js +16 -16
  165. package/node/mat/find-mat/get-sharp-corners.d.ts +4 -4
  166. package/node/mat/find-mat/get-sharp-corners.js +17 -17
  167. package/node/mat/geometry/get-closest-square-distance-to-rect.d.ts +5 -5
  168. package/node/mat/geometry/get-closest-square-distance-to-rect.js +49 -49
  169. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.d.ts +5 -5
  170. package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.js +15 -15
  171. package/node/mat/get-boundary-piece-beziers.d.ts +11 -11
  172. package/node/mat/get-boundary-piece-beziers.js +58 -58
  173. package/node/mat/get-contact-circles-at-interface.d.ts +8 -8
  174. package/node/mat/get-contact-circles-at-interface.js +20 -20
  175. package/node/mat/get-largest-vertex.d.ts +4 -4
  176. package/node/mat/get-largest-vertex.js +9 -9
  177. package/node/mat/get-leaves.d.ts +4 -4
  178. package/node/mat/get-leaves.js +12 -12
  179. package/node/mat/get-neighboring-cps.d.ts +14 -14
  180. package/node/mat/get-neighboring-cps.js +30 -30
  181. package/node/mat/get-two-prong-type.d.ts +5 -5
  182. package/node/mat/get-two-prong-type.js +8 -8
  183. package/node/mat/is-another-cp-closeby.d.ts +20 -20
  184. package/node/mat/is-another-cp-closeby.js +55 -55
  185. package/node/mat/simplify-mat-map-only.d.ts +23 -23
  186. package/node/mat/simplify-mat-map-only.js +80 -80
  187. package/node/mat/to-scale-axis/add-debug-info.d.ts +7 -7
  188. package/node/mat/to-scale-axis/add-debug-info.js +13 -13
  189. package/node/mat/to-scale-axis/cull-non-cycles.d.ts +9 -9
  190. package/node/mat/to-scale-axis/cull-non-cycles.js +51 -51
  191. package/node/mat/to-scale-axis/cull.d.ts +12 -12
  192. package/node/mat/to-scale-axis/cull.js +132 -132
  193. package/node/mat/trim-mat.d.ts +8 -8
  194. package/node/mat/trim-mat.js +16 -16
  195. package/node/mat.d.ts +22 -22
  196. package/node/mat.js +1 -1
  197. package/node/point-on-shape.d.ts +73 -73
  198. package/node/point-on-shape.js +167 -167
  199. package/node/simplify-mat.d.ts +16 -16
  200. package/node/simplify-mat.js +71 -71
  201. package/node/svg/get-loop-bounds.d.ts +12 -12
  202. package/node/svg/get-loop-bounds.js +80 -80
  203. package/node/svg/get-min-y-pos.d.ts +8 -8
  204. package/node/svg/get-min-y-pos.js +9 -9
  205. package/node/svg/get-shape-bounds.d.ts +9 -9
  206. package/node/svg/get-shape-bounds.js +35 -35
  207. package/node/sweep-line/sweep-line.d.ts +18 -18
  208. package/node/sweep-line/sweep-line.js +72 -72
  209. package/node/to-scale-axis.d.ts +16 -16
  210. package/node/to-scale-axis.js +74 -74
  211. package/node/traverse-edges.d.ts +10 -10
  212. package/node/traverse-edges.js +21 -21
  213. package/node/traverse-vertices.d.ts +12 -12
  214. package/node/traverse-vertices.js +27 -27
  215. package/package.json +15 -15
  216. package/tsconfig.json +0 -1
@@ -1,18 +1,18 @@
1
- import { isPosQuiteSharpCorner } from '../../point-on-shape.js';
2
- /** @hidden */
3
- function getSharpCorners(possPerLoop) {
4
- const sharpCornersPerLoop = [];
5
- for (const poss of possPerLoop) {
6
- const sharpCorners = [];
7
- for (const pos of poss) {
8
- //if (PointOnShape.isQuiteSharpCorner(pos)) {
9
- if (isPosQuiteSharpCorner(pos)) {
10
- sharpCorners.push(pos);
11
- }
12
- }
13
- sharpCornersPerLoop.push(sharpCorners);
14
- }
15
- return sharpCornersPerLoop;
16
- }
17
- export { getSharpCorners };
1
+ import { isPosQuiteSharpCorner } from '../../point-on-shape.js';
2
+ /** @hidden */
3
+ function getSharpCorners(possPerLoop) {
4
+ const sharpCornersPerLoop = [];
5
+ for (const poss of possPerLoop) {
6
+ const sharpCorners = [];
7
+ for (const pos of poss) {
8
+ //if (PointOnShape.isQuiteSharpCorner(pos)) {
9
+ if (isPosQuiteSharpCorner(pos)) {
10
+ sharpCorners.push(pos);
11
+ }
12
+ }
13
+ sharpCornersPerLoop.push(sharpCorners);
14
+ }
15
+ return sharpCornersPerLoop;
16
+ }
17
+ export { getSharpCorners };
18
18
  //# sourceMappingURL=get-sharp-corners.js.map
@@ -1,5 +1,5 @@
1
- /**
2
- * @hidden
3
- */
4
- declare function getClosestSquareDistanceToRect(box: number[][], p: number[]): number;
5
- export { getClosestSquareDistanceToRect };
1
+ /**
2
+ * @hidden
3
+ */
4
+ declare function getClosestSquareDistanceToRect(box: number[][], p: number[]): number;
5
+ export { getClosestSquareDistanceToRect };
@@ -1,50 +1,50 @@
1
- import { squaredDistanceBetween as squaredDistanceBetween_ } from 'flo-vector2d';
2
- const squaredDistanceBetween = squaredDistanceBetween_;
3
- /**
4
- * @hidden
5
- */
6
- function getClosestSquareDistanceToRect(box, p) {
7
- const p0 = box[0];
8
- const p1 = box[1];
9
- const x0 = p0[0];
10
- const y0 = p0[1];
11
- const x1 = p1[0];
12
- const y1 = p1[1];
13
- const xp = p[0];
14
- const yp = p[1];
15
- //let [[x0,y0],[x1,y1]] = box;
16
- //let [xp,yp] = p;
17
- if (xp < x0) {
18
- if (yp < y0) {
19
- return squaredDistanceBetween(box[0], p);
20
- }
21
- else if (yp > y1) {
22
- return squaredDistanceBetween([x0, y1], p);
23
- }
24
- else {
25
- return (x0 - xp) ** 2;
26
- }
27
- }
28
- else if (xp > x1) {
29
- if (yp < y0) {
30
- return squaredDistanceBetween([x1, y0], p);
31
- }
32
- else if (yp > y1) {
33
- return squaredDistanceBetween(box[1], p);
34
- }
35
- else {
36
- return (xp - x1) ** 2;
37
- }
38
- }
39
- else {
40
- if (yp < y0) {
41
- return (y0 - yp) ** 2;
42
- }
43
- else if (yp > y1) {
44
- return (yp - y1) ** 2;
45
- }
46
- return 0;
47
- }
48
- }
49
- export { getClosestSquareDistanceToRect };
1
+ import { squaredDistanceBetween as squaredDistanceBetween_ } from 'flo-vector2d';
2
+ const squaredDistanceBetween = squaredDistanceBetween_;
3
+ /**
4
+ * @hidden
5
+ */
6
+ function getClosestSquareDistanceToRect(box, p) {
7
+ const p0 = box[0];
8
+ const p1 = box[1];
9
+ const x0 = p0[0];
10
+ const y0 = p0[1];
11
+ const x1 = p1[0];
12
+ const y1 = p1[1];
13
+ const xp = p[0];
14
+ const yp = p[1];
15
+ //let [[x0,y0],[x1,y1]] = box;
16
+ //let [xp,yp] = p;
17
+ if (xp < x0) {
18
+ if (yp < y0) {
19
+ return squaredDistanceBetween(box[0], p);
20
+ }
21
+ else if (yp > y1) {
22
+ return squaredDistanceBetween([x0, y1], p);
23
+ }
24
+ else {
25
+ return (x0 - xp) ** 2;
26
+ }
27
+ }
28
+ else if (xp > x1) {
29
+ if (yp < y0) {
30
+ return squaredDistanceBetween([x1, y0], p);
31
+ }
32
+ else if (yp > y1) {
33
+ return squaredDistanceBetween(box[1], p);
34
+ }
35
+ else {
36
+ return (xp - x1) ** 2;
37
+ }
38
+ }
39
+ else {
40
+ if (yp < y0) {
41
+ return (y0 - yp) ** 2;
42
+ }
43
+ else if (yp > y1) {
44
+ return (yp - y1) ** 2;
45
+ }
46
+ return 0;
47
+ }
48
+ }
49
+ export { getClosestSquareDistanceToRect };
50
50
  //# sourceMappingURL=get-closest-square-distance-to-rect.js.map
@@ -1,5 +1,5 @@
1
- /**
2
- * @hidden
3
- */
4
- declare function getClosestSquaredDistanceToRotatedRect(ps: number[][], p: number[]): number;
5
- export { getClosestSquaredDistanceToRotatedRect };
1
+ /**
2
+ * @hidden
3
+ */
4
+ declare function getClosestSquaredDistanceToRotatedRect(ps: number[][], p: number[]): number;
5
+ export { getClosestSquaredDistanceToRotatedRect };
@@ -1,16 +1,16 @@
1
- import { squaredDistanceBetweenPointAndLineSegment, squaredDistanceBetween } from 'flo-vector2d';
2
- /**
3
- * @hidden
4
- */
5
- function getClosestSquaredDistanceToRotatedRect(ps, p) {
6
- const ds = [0, 1, 2, 3].map(i => squaredDistanceBetweenPointAndLineSegment(p, [ps[i], ps[(i + 1) % 4]]));
7
- const width = squaredDistanceBetween(ps[0], ps[1]);
8
- const height = squaredDistanceBetween(ps[0], ps[3]);
9
- if (ds[0] <= height && ds[2] <= height &&
10
- ds[1] <= width && ds[3] <= width) {
11
- return 0; // Inside rotated rect
12
- }
13
- return Math.min(...ds);
14
- }
15
- export { getClosestSquaredDistanceToRotatedRect };
1
+ import { squaredDistanceBetweenPointAndLineSegment, squaredDistanceBetween } from 'flo-vector2d';
2
+ /**
3
+ * @hidden
4
+ */
5
+ function getClosestSquaredDistanceToRotatedRect(ps, p) {
6
+ const ds = [0, 1, 2, 3].map(i => squaredDistanceBetweenPointAndLineSegment(p, [ps[i], ps[(i + 1) % 4]]));
7
+ const width = squaredDistanceBetween(ps[0], ps[1]);
8
+ const height = squaredDistanceBetween(ps[0], ps[3]);
9
+ if (ds[0] <= height && ds[2] <= height &&
10
+ ds[1] <= width && ds[3] <= width) {
11
+ return 0; // Inside rotated rect
12
+ }
13
+ return Math.min(...ds);
14
+ }
15
+ export { getClosestSquaredDistanceToRotatedRect };
16
16
  //# sourceMappingURL=get-closest-squared-distance-to-rotated-rect.js.map
@@ -1,11 +1,11 @@
1
- import { CpNode } from '../cp-node.js';
2
- import { BezierPiece } from './bezier-piece.js';
3
- /**
4
- * @hidden
5
- * Returns the ordered cubic bezier pieces (i.e a bezier with a t range)
6
- * from the given boundary piece.
7
- * @param cpNodes - An ordered pair that represents the start and end points of
8
- * the boundary piece
9
- */
10
- declare function getBoundaryPieceBeziers(cpNodes: CpNode[]): BezierPiece[];
11
- export { getBoundaryPieceBeziers };
1
+ import { CpNode } from '../cp-node.js';
2
+ import { BezierPiece } from './bezier-piece.js';
3
+ /**
4
+ * @hidden
5
+ * Returns the ordered cubic bezier pieces (i.e a bezier with a t range)
6
+ * from the given boundary piece.
7
+ * @param cpNodes - An ordered pair that represents the start and end points of
8
+ * the boundary piece
9
+ */
10
+ declare function getBoundaryPieceBeziers(cpNodes: CpNode[]): BezierPiece[];
11
+ export { getBoundaryPieceBeziers };
@@ -1,59 +1,59 @@
1
- import { isPosQuiteSharpCorner } from '../point-on-shape.js';
2
- import { compareCps } from '../contact-point.js';
3
- /**
4
- * @hidden
5
- * Returns the ordered cubic bezier pieces (i.e a bezier with a t range)
6
- * from the given boundary piece.
7
- * @param cpNodes - An ordered pair that represents the start and end points of
8
- * the boundary piece
9
- */
10
- function getBoundaryPieceBeziers(cpNodes) {
11
- let cpThis = cpNodes[0];
12
- const cpEnd = cpNodes[1];
13
- const bezierPieces = [];
14
- // As opposed to going around the circle and taking the last exit
15
- let goStraight = true;
16
- do {
17
- if (!goStraight) {
18
- goStraight = true;
19
- cpThis = cpThis.prevOnCircle; // take last exit
20
- continue;
21
- }
22
- goStraight = false;
23
- const posThis = cpThis.cp.pointOnShape;
24
- const posNext = cpThis.next.cp.pointOnShape;
25
- if (posNext.curve === posThis.curve &&
26
- //PointOnShape.isQuiteSharpCorner(posThis) &&
27
- //PointOnShape.isQuiteSharpCorner(posNext)) {
28
- isPosQuiteSharpCorner(posThis) &&
29
- isPosQuiteSharpCorner(posNext)) {
30
- // Do nothing
31
- }
32
- else if (posNext.curve === posThis.curve &&
33
- compareCps(cpThis.next.cp, cpThis.cp) > 0) {
34
- bezierPieces.push({ curve: posThis.curve, ts: [posThis.t, posNext.t] });
35
- }
36
- else {
37
- bezierPieces.push({ curve: posThis.curve, ts: [posThis.t, 1] });
38
- if (cpThis.cp.pointOnShape.curve.loop === cpThis.next.cp.pointOnShape.curve.loop) {
39
- addSkippedBeziers(bezierPieces, posThis.curve, posNext.curve, posNext.t);
40
- }
41
- }
42
- cpThis = cpThis.next;
43
- } while (cpThis !== cpEnd);
44
- return bezierPieces;
45
- }
46
- /**
47
- * @hidden
48
- * Adds pieces of skipped beziers
49
- */
50
- function addSkippedBeziers(bezierPieces, curveStart, curveEnd, t1) {
51
- let curveThis = curveStart;
52
- do {
53
- curveThis = curveThis.next;
54
- const tEnd = curveThis === curveEnd ? t1 : 1;
55
- bezierPieces.push({ curve: curveThis, ts: [0, tEnd] });
56
- } while (curveThis !== curveEnd);
57
- }
58
- export { getBoundaryPieceBeziers };
1
+ import { isPosQuiteSharpCorner } from '../point-on-shape.js';
2
+ import { compareCps } from '../contact-point.js';
3
+ /**
4
+ * @hidden
5
+ * Returns the ordered cubic bezier pieces (i.e a bezier with a t range)
6
+ * from the given boundary piece.
7
+ * @param cpNodes - An ordered pair that represents the start and end points of
8
+ * the boundary piece
9
+ */
10
+ function getBoundaryPieceBeziers(cpNodes) {
11
+ let cpThis = cpNodes[0];
12
+ const cpEnd = cpNodes[1];
13
+ const bezierPieces = [];
14
+ // As opposed to going around the circle and taking the last exit
15
+ let goStraight = true;
16
+ do {
17
+ if (!goStraight) {
18
+ goStraight = true;
19
+ cpThis = cpThis.prevOnCircle; // take last exit
20
+ continue;
21
+ }
22
+ goStraight = false;
23
+ const posThis = cpThis.cp.pointOnShape;
24
+ const posNext = cpThis.next.cp.pointOnShape;
25
+ if (posNext.curve === posThis.curve &&
26
+ //PointOnShape.isQuiteSharpCorner(posThis) &&
27
+ //PointOnShape.isQuiteSharpCorner(posNext)) {
28
+ isPosQuiteSharpCorner(posThis) &&
29
+ isPosQuiteSharpCorner(posNext)) {
30
+ // Do nothing
31
+ }
32
+ else if (posNext.curve === posThis.curve &&
33
+ compareCps(cpThis.next.cp, cpThis.cp) > 0) {
34
+ bezierPieces.push({ curve: posThis.curve, ts: [posThis.t, posNext.t] });
35
+ }
36
+ else {
37
+ bezierPieces.push({ curve: posThis.curve, ts: [posThis.t, 1] });
38
+ if (cpThis.cp.pointOnShape.curve.loop === cpThis.next.cp.pointOnShape.curve.loop) {
39
+ addSkippedBeziers(bezierPieces, posThis.curve, posNext.curve, posNext.t);
40
+ }
41
+ }
42
+ cpThis = cpThis.next;
43
+ } while (cpThis !== cpEnd);
44
+ return bezierPieces;
45
+ }
46
+ /**
47
+ * @hidden
48
+ * Adds pieces of skipped beziers
49
+ */
50
+ function addSkippedBeziers(bezierPieces, curveStart, curveEnd, t1) {
51
+ let curveThis = curveStart;
52
+ do {
53
+ curveThis = curveThis.next;
54
+ const tEnd = curveThis === curveEnd ? t1 : 1;
55
+ bezierPieces.push({ curve: curveThis, ts: [0, tEnd] });
56
+ } while (curveThis !== curveEnd);
57
+ }
58
+ export { getBoundaryPieceBeziers };
59
59
  //# sourceMappingURL=get-boundary-piece-beziers.js.map
@@ -1,8 +1,8 @@
1
- import { Curve } from '../curve.js';
2
- import { IPointOnShape } from '../point-on-shape.js';
3
- /**
4
- * @hidden
5
- * @param curve
6
- */
7
- declare function getContactCirclesAtInterface(curve: Curve): IPointOnShape[];
8
- export { getContactCirclesAtInterface };
1
+ import { Curve } from '../curve.js';
2
+ import { IPointOnShape } from '../point-on-shape.js';
3
+ /**
4
+ * @hidden
5
+ * @param curve
6
+ */
7
+ declare function getContactCirclesAtInterface(curve: Curve): IPointOnShape[];
8
+ export { getContactCirclesAtInterface };
@@ -1,21 +1,21 @@
1
- import { getCornerAtEnd } from '../curve.js';
2
- import { PointOnShape } from '../point-on-shape.js';
3
- /**
4
- * @hidden
5
- * @param curve
6
- */
7
- function getContactCirclesAtInterface(curve) {
8
- const { isQuiteSharp, isQuiteDull } = getCornerAtEnd(curve);
9
- if (isQuiteSharp) {
10
- return [new PointOnShape(curve, 1)];
11
- }
12
- else if (isQuiteDull) {
13
- return [
14
- new PointOnShape(curve, 1),
15
- new PointOnShape(curve.next, 0)
16
- ];
17
- }
18
- return [];
19
- }
20
- export { getContactCirclesAtInterface };
1
+ import { getCornerAtEnd } from '../curve.js';
2
+ import { PointOnShape } from '../point-on-shape.js';
3
+ /**
4
+ * @hidden
5
+ * @param curve
6
+ */
7
+ function getContactCirclesAtInterface(curve) {
8
+ const { isQuiteSharp, isQuiteDull } = getCornerAtEnd(curve);
9
+ if (isQuiteSharp) {
10
+ return [new PointOnShape(curve, 1)];
11
+ }
12
+ else if (isQuiteDull) {
13
+ return [
14
+ new PointOnShape(curve, 1),
15
+ new PointOnShape(curve.next, 0)
16
+ ];
17
+ }
18
+ return [];
19
+ }
20
+ export { getContactCirclesAtInterface };
21
21
  //# sourceMappingURL=get-contact-circles-at-interface.js.map
@@ -1,4 +1,4 @@
1
- import { CpNode } from '../cp-node.js';
2
- /** @hidden */
3
- declare function getLargestVertex(cpNodes: CpNode[]): CpNode;
4
- export { getLargestVertex };
1
+ import { CpNode } from '../cp-node.js';
2
+ /** @hidden */
3
+ declare function getLargestVertex(cpNodes: CpNode[]): CpNode;
4
+ export { getLargestVertex };
@@ -1,10 +1,10 @@
1
- /** @hidden */
2
- function getLargestVertex(cpNodes) {
3
- return cpNodes.reduce(function (maxCpNode, cpNode) {
4
- return maxCpNode.cp.circle.radius >= cpNode.cp.circle.radius
5
- ? maxCpNode
6
- : cpNode;
7
- }, cpNodes[0]);
8
- }
9
- export { getLargestVertex };
1
+ /** @hidden */
2
+ function getLargestVertex(cpNodes) {
3
+ return cpNodes.reduce(function (maxCpNode, cpNode) {
4
+ return maxCpNode.cp.circle.radius >= cpNode.cp.circle.radius
5
+ ? maxCpNode
6
+ : cpNode;
7
+ }, cpNodes[0]);
8
+ }
9
+ export { getLargestVertex };
10
10
  //# sourceMappingURL=get-largest-vertex.js.map
@@ -1,4 +1,4 @@
1
- import { CpNode } from '../cp-node.js';
2
- /** @hidden */
3
- declare function getLeaves(cpNode: CpNode): CpNode[];
4
- export { getLeaves };
1
+ import { CpNode } from '../cp-node.js';
2
+ /** @hidden */
3
+ declare function getLeaves(cpNode: CpNode): CpNode[];
4
+ export { getLeaves };
@@ -1,13 +1,13 @@
1
- /** @hidden */
2
- function getLeaves(cpNode) {
3
- const leaves = [];
4
- const cps = cpNode.getAllOnLoop();
5
- cps.forEach(function (cp) {
6
- if (cp.isTerminating()) {
7
- leaves.push(cp);
8
- }
9
- });
10
- return leaves;
11
- }
12
- export { getLeaves };
1
+ /** @hidden */
2
+ function getLeaves(cpNode) {
3
+ const leaves = [];
4
+ const cps = cpNode.getAllOnLoop();
5
+ cps.forEach(function (cp) {
6
+ if (cp.isTerminating()) {
7
+ leaves.push(cp);
8
+ }
9
+ });
10
+ return leaves;
11
+ }
12
+ export { getLeaves };
13
13
  //# sourceMappingURL=get-leaves.js.map
@@ -1,14 +1,14 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
2
- import { IPointOnShape } from '../point-on-shape.js';
3
- import { CpNode } from '../cp-node.js';
4
- /**
5
- * @hidden
6
- * Returns the boundary piece that starts at the immediate previous point on the
7
- * shape and ends at the immediate next point.
8
- * @param cpTree
9
- * @param pos
10
- * @param order
11
- * @param order2
12
- */
13
- declare function getNeighbouringPoints(cpTree: LlRbTree<CpNode>, pos: IPointOnShape, order: number, order2: number): CpNode[];
14
- export { getNeighbouringPoints };
1
+ import { LlRbTree } from 'flo-ll-rb-tree';
2
+ import { IPointOnShape } from '../point-on-shape.js';
3
+ import { CpNode } from '../cp-node.js';
4
+ /**
5
+ * @hidden
6
+ * Returns the boundary piece that starts at the immediate previous point on the
7
+ * shape and ends at the immediate next point.
8
+ * @param cpTree
9
+ * @param pos
10
+ * @param order
11
+ * @param order2
12
+ */
13
+ declare function getNeighbouringPoints(cpTree: LlRbTree<CpNode>, pos: IPointOnShape, order: number, order2: number): CpNode[];
14
+ export { getNeighbouringPoints };
@@ -1,31 +1,31 @@
1
- import { CpNode } from '../cp-node.js';
2
- /**
3
- * @hidden
4
- * Returns the boundary piece that starts at the immediate previous point on the
5
- * shape and ends at the immediate next point.
6
- * @param cpTree
7
- * @param pos
8
- * @param order
9
- * @param order2
10
- */
11
- function getNeighbouringPoints(cpTree, pos, order, order2) {
12
- const cps = cpTree.findBounds(new CpNode({ pointOnShape: pos, circle: undefined, order, order2 }, false, false));
13
- if (!cps[0] && !cps[1]) {
14
- // The tree is still empty
15
- return [undefined, undefined];
16
- }
17
- if (!cps[0] || !cps[1]) {
18
- // Smaller than all -> cptree.min() === cps[1].data OR
19
- // Larger than all -> cptree.max() === cps[0].data
20
- return [
21
- cpTree.max(cpTree.root),
22
- cpTree.min(cpTree.root)
23
- ];
24
- }
25
- return [
26
- cps[0].datum,
27
- cps[1].datum
28
- ];
29
- }
30
- export { getNeighbouringPoints };
1
+ import { CpNode } from '../cp-node.js';
2
+ /**
3
+ * @hidden
4
+ * Returns the boundary piece that starts at the immediate previous point on the
5
+ * shape and ends at the immediate next point.
6
+ * @param cpTree
7
+ * @param pos
8
+ * @param order
9
+ * @param order2
10
+ */
11
+ function getNeighbouringPoints(cpTree, pos, order, order2) {
12
+ const cps = cpTree.findBounds(new CpNode({ pointOnShape: pos, circle: undefined, order, order2 }, false, false));
13
+ if (!cps[0] && !cps[1]) {
14
+ // The tree is still empty
15
+ return [undefined, undefined];
16
+ }
17
+ if (!cps[0] || !cps[1]) {
18
+ // Smaller than all -> cptree.min() === cps[1].data OR
19
+ // Larger than all -> cptree.max() === cps[0].data
20
+ return [
21
+ cpTree.max(cpTree.root),
22
+ cpTree.min(cpTree.root)
23
+ ];
24
+ }
25
+ return [
26
+ cps[0].datum,
27
+ cps[1].datum
28
+ ];
29
+ }
30
+ export { getNeighbouringPoints };
31
31
  //# sourceMappingURL=get-neighboring-cps.js.map
@@ -1,5 +1,5 @@
1
- import { TwoProngForDebugging } from '../debug/two-prong-for-debugging.js';
2
- import { ElemType_TwoProng } from './elem-type-two-prong.js';
3
- /** @hidden */
4
- declare function getTwoProngType(e: TwoProngForDebugging): ElemType_TwoProng;
5
- export { getTwoProngType };
1
+ import { TwoProngForDebugging } from '../debug/two-prong-for-debugging.js';
2
+ import { ElemType_TwoProng } from './elem-type-two-prong.js';
3
+ /** @hidden */
4
+ declare function getTwoProngType(e: TwoProngForDebugging): ElemType_TwoProng;
5
+ export { getTwoProngType };
@@ -1,9 +1,9 @@
1
- /** @hidden */
2
- function getTwoProngType(e) {
3
- if (e.holeClosing) {
4
- return 'twoProng_holeClosing';
5
- }
6
- return 'twoProng_regular';
7
- }
8
- export { getTwoProngType };
1
+ /** @hidden */
2
+ function getTwoProngType(e) {
3
+ if (e.holeClosing) {
4
+ return 'twoProng_holeClosing';
5
+ }
6
+ return 'twoProng_regular';
7
+ }
8
+ export { getTwoProngType };
9
9
  //# sourceMappingURL=get-two-prong-type.js.map
@@ -1,20 +1,20 @@
1
- import { LlRbTree } from 'flo-ll-rb-tree';
2
- import { Loop } from '../loop.js';
3
- import { CpNode } from '../cp-node.js';
4
- import { IPointOnShape } from '../point-on-shape.js';
5
- import { Circle } from '../circle.js';
6
- /**
7
- * @hidden
8
- * Returns true if another CpNode is close to the given implied (via pos, order
9
- * and order2) CpNode.
10
- * @param cpTrees
11
- * @param pos
12
- * @param circle
13
- * @param order
14
- * @param order2
15
- * @param extreme The maximum coordinate value used to calculate floating point
16
- * tolerances.
17
- * @param color Used for debugging only
18
- */
19
- declare function isAnotherCpCloseby(cpTrees: Map<Loop, LlRbTree<CpNode>>, pos: IPointOnShape, circle: Circle, order: number, order2: number, extreme: number, color: string): boolean;
20
- export { isAnotherCpCloseby };
1
+ import { LlRbTree } from 'flo-ll-rb-tree';
2
+ import { Loop } from '../loop.js';
3
+ import { CpNode } from '../cp-node.js';
4
+ import { IPointOnShape } from '../point-on-shape.js';
5
+ import { Circle } from '../circle.js';
6
+ /**
7
+ * @hidden
8
+ * Returns true if another CpNode is close to the given implied (via pos, order
9
+ * and order2) CpNode.
10
+ * @param cpTrees
11
+ * @param pos
12
+ * @param circle
13
+ * @param order
14
+ * @param order2
15
+ * @param extreme The maximum coordinate value used to calculate floating point
16
+ * tolerances.
17
+ * @param color Used for debugging only
18
+ */
19
+ declare function isAnotherCpCloseby(cpTrees: Map<Loop, LlRbTree<CpNode>>, pos: IPointOnShape, circle: Circle, order: number, order2: number, extreme: number, color: string): boolean;
20
+ export { isAnotherCpCloseby };