flo-mat 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/browser/index.js +8230 -8229
  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 +11 -11
  216. package/tsconfig.json +0 -1
@@ -1,12 +1,12 @@
1
- import { Curve } from '../curve.js';
2
- /**
3
- * @hidden
4
- * Represents a part of a bezier within the shape boundary.
5
- */
6
- interface BezierPiece {
7
- /** A bezier curve within the shape boundary. */
8
- curve: Curve;
9
- /** The start and end t parameter values of the bezier curve. */
10
- ts: number[];
11
- }
12
- export { BezierPiece };
1
+ import { Curve } from '../curve.js';
2
+ /**
3
+ * @hidden
4
+ * Represents a part of a bezier within the shape boundary.
5
+ */
6
+ interface BezierPiece {
7
+ /** A bezier curve within the shape boundary. */
8
+ curve: Curve;
9
+ /** The start and end t parameter values of the bezier curve. */
10
+ ts: number[];
11
+ }
12
+ export { BezierPiece };
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=bezier-piece.js.map
@@ -1,14 +1,14 @@
1
- import { Curve } from "../../curve.js";
2
- /**
3
- * @hidden
4
- * @param curve The curve
5
- * @param p The point from which to check
6
- * @param tRange The allowed t range
7
- * @param touchedCurve The bezier on which p is located
8
- * @param t The t value of the bezier that locates p
9
- */
10
- declare function closestPointsOnCurve(curve: Curve, p: number[], [tS, tE]: number[], touchedCurve: Curve, t: number): {
11
- p: number[];
12
- t: number;
13
- }[];
14
- export { closestPointsOnCurve };
1
+ import { Curve } from "../../curve.js";
2
+ /**
3
+ * @hidden
4
+ * @param curve The curve
5
+ * @param p The point from which to check
6
+ * @param tRange The allowed t range
7
+ * @param touchedCurve The bezier on which p is located
8
+ * @param t The t value of the bezier that locates p
9
+ */
10
+ declare function closestPointsOnCurve(curve: Curve, p: number[], [tS, tE]: number[], touchedCurve: Curve, t: number): {
11
+ p: number[];
12
+ t: number;
13
+ }[];
14
+ export { closestPointsOnCurve };
@@ -1,73 +1,73 @@
1
- // qqq import { deflateQuad, allRootsMultiWithErrBounds, RootInterval } from 'flo-poly';
2
- // qqq import { getTangentPolyFromPointExact, evalDeCasteljau, evaluate, getFootpointPolyExact } from 'flo-bezier3';
3
- import { ddDeflate, allRootsCertified } from 'flo-poly';
4
- import { evaluate, getFootpointPolyDd } from 'flo-bezier3';
5
- /**
6
- * @hidden
7
- * @param curve The curve
8
- * @param p The point from which to check
9
- * @param tRange The allowed t range
10
- * @param touchedCurve The bezier on which p is located
11
- * @param t The t value of the bezier that locates p
12
- */
13
- function closestPointsOnCurve(curve, p, [tS, tE] = [0, 1], touchedCurve, t) {
14
- // qqq let poly = getTangentPolyFromPointExact(curve.ps, p);
15
- const _poly = getFootpointPolyDd(curve.ps, p);
16
- // qqq poly = deflateQuad(poly, t);
17
- const poly = curve === touchedCurve
18
- ? ddDeflate(_poly, t)
19
- : _poly;
20
- // let roots: Omit<RootInterval,'multiplicity'>[] = allRootsMultiWithErrBounds(
21
- const roots = allRootsCertified(poly, tS, tE);
22
- // Also test the endpoints
23
- let push0 = true;
24
- let push1 = true;
25
- if ((t === 1 && curve === touchedCurve.next) ||
26
- (t === 0 && curve === touchedCurve)) {
27
- push0 = false;
28
- }
29
- if ((t === 0 && curve === touchedCurve.prev) ||
30
- (t === 1 && curve === touchedCurve)) {
31
- push1 = false;
32
- }
33
- if (tS === 0) {
34
- if (push0) {
35
- roots.push({ tS: 0, tE: 0 });
36
- }
37
- }
38
- else if (tS === 1) {
39
- if (push1) {
40
- roots.push({ tS: 1, tE: 1 });
41
- }
42
- }
43
- else {
44
- roots.push({ tS: tS, tE: tS });
45
- }
46
- if (tE === 0) {
47
- if (push0) {
48
- roots.push({ tS: 0, tE: 0 });
49
- }
50
- }
51
- else if (tE === 1) {
52
- if (push1) {
53
- roots.push({ tS: 1, tE: 1 });
54
- }
55
- }
56
- else {
57
- roots.push({ tS: tE, tE: tE });
58
- }
59
- const ps = roots.map(root => {
60
- const tS = root.tS;
61
- const tE = root.tE;
62
- // TODO - tS, tE should always stay within [0,1] - modify findRootsMulti
63
- const t = tS < 0
64
- ? 0
65
- : tE > 1 ? 1 : (tS + tE) / 2;
66
- // TODO - why does evalDeCasteljau not work here?
67
- return { p: evaluate(curve.ps, t), t };
68
- //return { p: evalDeCasteljau(curve.ps,t), t }
69
- });
70
- return ps;
71
- }
72
- export { closestPointsOnCurve };
1
+ // qqq import { deflateQuad, allRootsMultiWithErrBounds, RootInterval } from 'flo-poly';
2
+ // qqq import { getTangentPolyFromPointExact, evalDeCasteljau, evaluate, getFootpointPolyExact } from 'flo-bezier3';
3
+ import { ddDeflate, allRootsCertified } from 'flo-poly';
4
+ import { evaluate, getFootpointPolyDd } from 'flo-bezier3';
5
+ /**
6
+ * @hidden
7
+ * @param curve The curve
8
+ * @param p The point from which to check
9
+ * @param tRange The allowed t range
10
+ * @param touchedCurve The bezier on which p is located
11
+ * @param t The t value of the bezier that locates p
12
+ */
13
+ function closestPointsOnCurve(curve, p, [tS, tE] = [0, 1], touchedCurve, t) {
14
+ // qqq let poly = getTangentPolyFromPointExact(curve.ps, p);
15
+ const _poly = getFootpointPolyDd(curve.ps, p);
16
+ // qqq poly = deflateQuad(poly, t);
17
+ const poly = curve === touchedCurve
18
+ ? ddDeflate(_poly, t)
19
+ : _poly;
20
+ // let roots: Omit<RootInterval,'multiplicity'>[] = allRootsMultiWithErrBounds(
21
+ const roots = allRootsCertified(poly, tS, tE);
22
+ // Also test the endpoints
23
+ let push0 = true;
24
+ let push1 = true;
25
+ if ((t === 1 && curve === touchedCurve.next) ||
26
+ (t === 0 && curve === touchedCurve)) {
27
+ push0 = false;
28
+ }
29
+ if ((t === 0 && curve === touchedCurve.prev) ||
30
+ (t === 1 && curve === touchedCurve)) {
31
+ push1 = false;
32
+ }
33
+ if (tS === 0) {
34
+ if (push0) {
35
+ roots.push({ tS: 0, tE: 0 });
36
+ }
37
+ }
38
+ else if (tS === 1) {
39
+ if (push1) {
40
+ roots.push({ tS: 1, tE: 1 });
41
+ }
42
+ }
43
+ else {
44
+ roots.push({ tS: tS, tE: tS });
45
+ }
46
+ if (tE === 0) {
47
+ if (push0) {
48
+ roots.push({ tS: 0, tE: 0 });
49
+ }
50
+ }
51
+ else if (tE === 1) {
52
+ if (push1) {
53
+ roots.push({ tS: 1, tE: 1 });
54
+ }
55
+ }
56
+ else {
57
+ roots.push({ tS: tE, tE: tE });
58
+ }
59
+ const ps = roots.map(root => {
60
+ const tS = root.tS;
61
+ const tE = root.tE;
62
+ // TODO - tS, tE should always stay within [0,1] - modify findRootsMulti
63
+ const t = tS < 0
64
+ ? 0
65
+ : tE > 1 ? 1 : (tS + tE) / 2;
66
+ // TODO - why does evalDeCasteljau not work here?
67
+ return { p: evaluate(curve.ps, t), t };
68
+ //return { p: evalDeCasteljau(curve.ps,t), t }
69
+ });
70
+ return ps;
71
+ }
72
+ export { closestPointsOnCurve };
73
73
  //# sourceMappingURL=closest-points-on-curve.js.map
@@ -1,9 +1,9 @@
1
- import { BezierPiece } from '../bezier-piece.js';
2
- /**
3
- * @hidden
4
- * @param bezierPieces
5
- * @param p
6
- * @param extreme
7
- */
8
- declare function cullBezierPieces(bezierPieces: BezierPiece[], p: number[]): BezierPiece[];
9
- export { cullBezierPieces };
1
+ import { BezierPiece } from '../bezier-piece.js';
2
+ /**
3
+ * @hidden
4
+ * @param bezierPieces
5
+ * @param p
6
+ * @param extreme
7
+ */
8
+ declare function cullBezierPieces(bezierPieces: BezierPiece[], p: number[]): BezierPiece[];
9
+ export { cullBezierPieces };
@@ -1,20 +1,20 @@
1
- import { getBestDistanceSquared } from './get-best-distance-squared.js';
2
- import { cullByLooseBoundingBox } from './cull-by-loose-bounding-box.js';
3
- import { cullByTightBoundingBox } from './cull-by-tight-boundary-box.js';
4
- /**
5
- * @hidden
6
- * @param bezierPieces
7
- * @param p
8
- * @param extreme
9
- */
10
- function cullBezierPieces(bezierPieces, p) {
11
- const CULL_THRESHOLD = 0;
12
- if (bezierPieces.length > CULL_THRESHOLD) {
13
- const bestSquaredDistance = getBestDistanceSquared(bezierPieces, p);
14
- bezierPieces = cullByLooseBoundingBox(bezierPieces, p, bestSquaredDistance);
15
- bezierPieces = cullByTightBoundingBox(bezierPieces, p, bestSquaredDistance);
16
- }
17
- return bezierPieces;
18
- }
19
- export { cullBezierPieces };
1
+ import { getBestDistanceSquared } from './get-best-distance-squared.js';
2
+ import { cullByLooseBoundingBox } from './cull-by-loose-bounding-box.js';
3
+ import { cullByTightBoundingBox } from './cull-by-tight-boundary-box.js';
4
+ /**
5
+ * @hidden
6
+ * @param bezierPieces
7
+ * @param p
8
+ * @param extreme
9
+ */
10
+ function cullBezierPieces(bezierPieces, p) {
11
+ const CULL_THRESHOLD = 0;
12
+ if (bezierPieces.length > CULL_THRESHOLD) {
13
+ const bestSquaredDistance = getBestDistanceSquared(bezierPieces, p);
14
+ bezierPieces = cullByLooseBoundingBox(bezierPieces, p, bestSquaredDistance);
15
+ bezierPieces = cullByTightBoundingBox(bezierPieces, p, bestSquaredDistance);
16
+ }
17
+ return bezierPieces;
18
+ }
19
+ export { cullBezierPieces };
20
20
  //# sourceMappingURL=cull-bezier-pieces.js.map
@@ -1,11 +1,11 @@
1
- import { BezierPiece } from '../bezier-piece.js';
2
- /**
3
- * @hidden
4
- * When checking distances, ignore all those with closest possible distance
5
- * further than 'bestSquaredDistance', i.e. cull them.
6
- * @param bezierPieces
7
- * @param p
8
- * @param dSquared
9
- */
10
- declare function cullByLooseBoundingBox(bezierPieces: BezierPiece[], p: number[], dSquared: number): BezierPiece[];
11
- export { cullByLooseBoundingBox };
1
+ import { BezierPiece } from '../bezier-piece.js';
2
+ /**
3
+ * @hidden
4
+ * When checking distances, ignore all those with closest possible distance
5
+ * further than 'bestSquaredDistance', i.e. cull them.
6
+ * @param bezierPieces
7
+ * @param p
8
+ * @param dSquared
9
+ */
10
+ declare function cullByLooseBoundingBox(bezierPieces: BezierPiece[], p: number[], dSquared: number): BezierPiece[];
11
+ export { cullByLooseBoundingBox };
@@ -1,25 +1,25 @@
1
- import { getBoundingBox_ } from '../../get-bounding-box-.js';
2
- import { getClosestSquareDistanceToRect } from '../geometry/get-closest-square-distance-to-rect.js';
3
- /**
4
- * @hidden
5
- * When checking distances, ignore all those with closest possible distance
6
- * further than 'bestSquaredDistance', i.e. cull them.
7
- * @param bezierPieces
8
- * @param p
9
- * @param dSquared
10
- */
11
- function cullByLooseBoundingBox(bezierPieces, p, dSquared) {
12
- const candidateBezierPieces = [];
13
- for (let i = 0; i < bezierPieces.length; i++) {
14
- const bezierPiece = bezierPieces[i];
15
- const ps = bezierPiece.curve.ps;
16
- const boundingBox = getBoundingBox_(ps);
17
- const d = getClosestSquareDistanceToRect(boundingBox, p);
18
- if (d <= dSquared) {
19
- candidateBezierPieces.push(bezierPiece);
20
- }
21
- }
22
- return candidateBezierPieces;
23
- }
24
- export { cullByLooseBoundingBox };
1
+ import { getBoundingBox_ } from '../../get-bounding-box-.js';
2
+ import { getClosestSquareDistanceToRect } from '../geometry/get-closest-square-distance-to-rect.js';
3
+ /**
4
+ * @hidden
5
+ * When checking distances, ignore all those with closest possible distance
6
+ * further than 'bestSquaredDistance', i.e. cull them.
7
+ * @param bezierPieces
8
+ * @param p
9
+ * @param dSquared
10
+ */
11
+ function cullByLooseBoundingBox(bezierPieces, p, dSquared) {
12
+ const candidateBezierPieces = [];
13
+ for (let i = 0; i < bezierPieces.length; i++) {
14
+ const bezierPiece = bezierPieces[i];
15
+ const ps = bezierPiece.curve.ps;
16
+ const boundingBox = getBoundingBox_(ps);
17
+ const d = getClosestSquareDistanceToRect(boundingBox, p);
18
+ if (d <= dSquared) {
19
+ candidateBezierPieces.push(bezierPiece);
20
+ }
21
+ }
22
+ return candidateBezierPieces;
23
+ }
24
+ export { cullByLooseBoundingBox };
25
25
  //# sourceMappingURL=cull-by-loose-bounding-box.js.map
@@ -1,11 +1,11 @@
1
- import { BezierPiece } from "../bezier-piece.js";
2
- /**
3
- * @hidden
4
- * When checking distances, ignore all those with closest possible distance
5
- * further than 'bestSquaredDistance', i.e. cull them.
6
- * @param bezierPieces
7
- * @param p
8
- * @param bestSquaredDistance
9
- */
10
- declare function cullByTightBoundingBox(bezierPieces: BezierPiece[], p: number[], bestSquaredDistance: number): BezierPiece[];
11
- export { cullByTightBoundingBox };
1
+ import { BezierPiece } from "../bezier-piece.js";
2
+ /**
3
+ * @hidden
4
+ * When checking distances, ignore all those with closest possible distance
5
+ * further than 'bestSquaredDistance', i.e. cull them.
6
+ * @param bezierPieces
7
+ * @param p
8
+ * @param bestSquaredDistance
9
+ */
10
+ declare function cullByTightBoundingBox(bezierPieces: BezierPiece[], p: number[], bestSquaredDistance: number): BezierPiece[];
11
+ export { cullByTightBoundingBox };
@@ -1,27 +1,27 @@
1
- import { getBoundingBoxTight } from "flo-bezier3";
2
- import { memoize } from "flo-memoize";
3
- import { getClosestSquaredDistanceToRotatedRect } from '../geometry/get-closest-squared-distance-to-rotated-rect.js';
4
- const getBoundingBoxTight_ = memoize(getBoundingBoxTight);
5
- /**
6
- * @hidden
7
- * When checking distances, ignore all those with closest possible distance
8
- * further than 'bestSquaredDistance', i.e. cull them.
9
- * @param bezierPieces
10
- * @param p
11
- * @param bestSquaredDistance
12
- */
13
- function cullByTightBoundingBox(bezierPieces, p, bestSquaredDistance) {
14
- const candidateBezierPieces = [];
15
- for (let i = 0; i < bezierPieces.length; i++) {
16
- const bezierPiece = bezierPieces[i];
17
- const ps = bezierPiece.curve.ps;
18
- const tightBoundingBox = getBoundingBoxTight_(ps);
19
- const d = getClosestSquaredDistanceToRotatedRect(tightBoundingBox, p);
20
- if (d <= bestSquaredDistance) {
21
- candidateBezierPieces.push(bezierPiece);
22
- }
23
- }
24
- return candidateBezierPieces;
25
- }
26
- export { cullByTightBoundingBox };
1
+ import { getBoundingBoxTight } from "flo-bezier3";
2
+ import { memoize } from "flo-memoize";
3
+ import { getClosestSquaredDistanceToRotatedRect } from '../geometry/get-closest-squared-distance-to-rotated-rect.js';
4
+ const getBoundingBoxTight_ = memoize(getBoundingBoxTight);
5
+ /**
6
+ * @hidden
7
+ * When checking distances, ignore all those with closest possible distance
8
+ * further than 'bestSquaredDistance', i.e. cull them.
9
+ * @param bezierPieces
10
+ * @param p
11
+ * @param bestSquaredDistance
12
+ */
13
+ function cullByTightBoundingBox(bezierPieces, p, bestSquaredDistance) {
14
+ const candidateBezierPieces = [];
15
+ for (let i = 0; i < bezierPieces.length; i++) {
16
+ const bezierPiece = bezierPieces[i];
17
+ const ps = bezierPiece.curve.ps;
18
+ const tightBoundingBox = getBoundingBoxTight_(ps);
19
+ const d = getClosestSquaredDistanceToRotatedRect(tightBoundingBox, p);
20
+ if (d <= bestSquaredDistance) {
21
+ candidateBezierPieces.push(bezierPiece);
22
+ }
23
+ }
24
+ return candidateBezierPieces;
25
+ }
26
+ export { cullByTightBoundingBox };
27
27
  //# sourceMappingURL=cull-by-tight-boundary-box.js.map
@@ -1,8 +1,8 @@
1
- import { BezierPiece } from "../bezier-piece.js";
2
- /**
3
- * @hidden
4
- * Finds an initial distance such that the closest point can not be further than
5
- * this distance away.
6
- */
7
- declare function getBestDistanceSquared(bezierPieces: BezierPiece[], p: number[]): number;
8
- export { getBestDistanceSquared };
1
+ import { BezierPiece } from "../bezier-piece.js";
2
+ /**
3
+ * @hidden
4
+ * Finds an initial distance such that the closest point can not be further than
5
+ * this distance away.
6
+ */
7
+ declare function getBestDistanceSquared(bezierPieces: BezierPiece[], p: number[]): number;
8
+ export { getBestDistanceSquared };
@@ -1,25 +1,25 @@
1
- import { evalDeCasteljau } from 'flo-bezier3';
2
- import { squaredDistanceBetween } from 'flo-vector2d';
3
- /**
4
- * @hidden
5
- * Finds an initial distance such that the closest point can not be further than
6
- * this distance away.
7
- */
8
- function getBestDistanceSquared(bezierPieces, p) {
9
- let bestSquaredDistance = Number.POSITIVE_INFINITY;
10
- for (let i = 0; i < bezierPieces.length; i++) {
11
- const bezierPiece = bezierPieces[i];
12
- const ps = bezierPiece.curve.ps;
13
- const p1 = evalDeCasteljau(ps, bezierPiece.ts[0]);
14
- const p2 = evalDeCasteljau(ps, bezierPiece.ts[1]);
15
- const d = Math.min(squaredDistanceBetween(p, p1), squaredDistanceBetween(p, p2));
16
- if (d < bestSquaredDistance) {
17
- bestSquaredDistance = d;
18
- }
19
- }
20
- // The extra multiplier is to account for floating point precision.
21
- // TODO - remove delta (or base it on theory)
22
- return bestSquaredDistance * 1.01;
23
- }
24
- export { getBestDistanceSquared };
1
+ import { evalDeCasteljau } from 'flo-bezier3';
2
+ import { squaredDistanceBetween } from 'flo-vector2d';
3
+ /**
4
+ * @hidden
5
+ * Finds an initial distance such that the closest point can not be further than
6
+ * this distance away.
7
+ */
8
+ function getBestDistanceSquared(bezierPieces, p) {
9
+ let bestSquaredDistance = Number.POSITIVE_INFINITY;
10
+ for (let i = 0; i < bezierPieces.length; i++) {
11
+ const bezierPiece = bezierPieces[i];
12
+ const ps = bezierPiece.curve.ps;
13
+ const p1 = evalDeCasteljau(ps, bezierPiece.ts[0]);
14
+ const p2 = evalDeCasteljau(ps, bezierPiece.ts[1]);
15
+ const d = Math.min(squaredDistanceBetween(p, p1), squaredDistanceBetween(p, p2));
16
+ if (d < bestSquaredDistance) {
17
+ bestSquaredDistance = d;
18
+ }
19
+ }
20
+ // The extra multiplier is to account for floating point precision.
21
+ // TODO - remove delta (or base it on theory)
22
+ return bestSquaredDistance * 1.01;
23
+ }
24
+ export { getBestDistanceSquared };
25
25
  //# sourceMappingURL=get-best-distance-squared.js.map
@@ -1,17 +1,17 @@
1
- import { IPointOnShape } from '../../point-on-shape.js';
2
- import { BezierPiece } from '../bezier-piece.js';
3
- /**
4
- * @hidden
5
- * Returns the closest boundary point to the given point, limited to the given
6
- * bezier pieces, including the beziers actually checked after culling.
7
- * @param bezierPieces
8
- * @param point
9
- * @param touchedCurve
10
- * @param t
11
- * @param extreme
12
- */
13
- declare function getCloseBoundaryPoints(bezierPieces: BezierPiece[], point: number[], y: IPointOnShape, distance: number): {
14
- pos: IPointOnShape;
15
- d: number;
16
- }[];
17
- export { getCloseBoundaryPoints };
1
+ import { IPointOnShape } from '../../point-on-shape.js';
2
+ import { BezierPiece } from '../bezier-piece.js';
3
+ /**
4
+ * @hidden
5
+ * Returns the closest boundary point to the given point, limited to the given
6
+ * bezier pieces, including the beziers actually checked after culling.
7
+ * @param bezierPieces
8
+ * @param point
9
+ * @param touchedCurve
10
+ * @param t
11
+ * @param extreme
12
+ */
13
+ declare function getCloseBoundaryPoints(bezierPieces: BezierPiece[], point: number[], y: IPointOnShape, distance: number): {
14
+ pos: IPointOnShape;
15
+ d: number;
16
+ }[];
17
+ export { getCloseBoundaryPoints };