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,38 +1,38 @@
1
- import { getNeighbouringPoints } from '../../get-neighboring-cps.js';
2
- import { getBoundaryPieceBeziers } from '../../get-boundary-piece-beziers.js';
3
- import { isPosDullCorner } from '../../../point-on-shape.js';
4
- /** @hidden */
5
- function getInitialBezierPieces(isHoleClosing, k, loops, cpTrees, y) {
6
- let bezierPieces;
7
- let δ;
8
- if (isHoleClosing) {
9
- bezierPieces = [];
10
- for (let k2 = 0; k2 < k; k2++) {
11
- const pieces = loops[k2].curves
12
- .map(curve => ({ curve, ts: [0, 1] }));
13
- bezierPieces.push(...pieces);
14
- }
15
- }
16
- else {
17
- //let order = PointOnShape.isDullCorner(y)
18
- const order = isPosDullCorner(y)
19
- ? y.t === 1 ? -1 : +1
20
- : 0;
21
- const loop = loops[k];
22
- const cpNode = getNeighbouringPoints(cpTrees.get(loop), y, order, 0)[0];
23
- δ = [cpNode, cpNode];
24
- if (!cpNode ||
25
- // The special case if there is only a single sharp corner or
26
- // terminating 2-prong currently in the MAT. Don't remove!
27
- (cpNode === cpNode.next.next)) {
28
- bezierPieces = loop.curves
29
- .map(curve => ({ curve, ts: [0, 1] }));
30
- }
31
- else {
32
- bezierPieces = getBoundaryPieceBeziers(δ);
33
- }
34
- }
35
- return { bezierPieces, δ };
36
- }
37
- export { getInitialBezierPieces };
1
+ import { getNeighbouringPoints } from '../../get-neighboring-cps.js';
2
+ import { getBoundaryPieceBeziers } from '../../get-boundary-piece-beziers.js';
3
+ import { isPosDullCorner } from '../../../point-on-shape.js';
4
+ /** @hidden */
5
+ function getInitialBezierPieces(isHoleClosing, k, loops, cpTrees, y) {
6
+ let bezierPieces;
7
+ let δ;
8
+ if (isHoleClosing) {
9
+ bezierPieces = [];
10
+ for (let k2 = 0; k2 < k; k2++) {
11
+ const pieces = loops[k2].curves
12
+ .map(curve => ({ curve, ts: [0, 1] }));
13
+ bezierPieces.push(...pieces);
14
+ }
15
+ }
16
+ else {
17
+ //let order = PointOnShape.isDullCorner(y)
18
+ const order = isPosDullCorner(y)
19
+ ? y.t === 1 ? -1 : +1
20
+ : 0;
21
+ const loop = loops[k];
22
+ const cpNode = getNeighbouringPoints(cpTrees.get(loop), y, order, 0)[0];
23
+ δ = [cpNode, cpNode];
24
+ if (!cpNode ||
25
+ // The special case if there is only a single sharp corner or
26
+ // terminating 2-prong currently in the MAT. Don't remove!
27
+ (cpNode === cpNode.next.next)) {
28
+ bezierPieces = loop.curves
29
+ .map(curve => ({ curve, ts: [0, 1] }));
30
+ }
31
+ else {
32
+ bezierPieces = getBoundaryPieceBeziers(δ);
33
+ }
34
+ }
35
+ return { bezierPieces, δ };
36
+ }
37
+ export { getInitialBezierPieces };
38
38
  //# sourceMappingURL=get-initial-bezier-pieces.js.map
@@ -1,9 +1,9 @@
1
- import { IPointOnShape } from '../../../point-on-shape.js';
2
- /** @hidden */
3
- type TXForDebugging = {
4
- x: number[];
5
- y: IPointOnShape;
6
- z: IPointOnShape;
7
- t: number;
8
- };
9
- export { TXForDebugging };
1
+ import { IPointOnShape } from '../../../point-on-shape.js';
2
+ /** @hidden */
3
+ type TXForDebugging = {
4
+ x: number[];
5
+ y: IPointOnShape;
6
+ z: IPointOnShape;
7
+ t: number;
8
+ };
9
+ export { TXForDebugging };
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=x-for-debugging.js.map
@@ -1,19 +1,19 @@
1
- import { IPointOnShape } from '../../../point-on-shape.js';
2
- import { BezierPiece } from '../../bezier-piece.js';
3
- /**
4
- * @hidden
5
- * Find new x and ps that are a better estimate of the 3-prong circle.
6
- * The potential function, V, is defined as the distance to the actual 3 prong
7
- * circle center.
8
- * @param bezierPiece3s The three boundary pieces, each of which should contain
9
- * a point of the 3-prong to be found.
10
- * @param x The currently best guess at the center of the 3-prong circle.
11
- * @param vectorToZeroV
12
- * @param extreme
13
- */
14
- declare function calcBetterX(bezierPiece3s: BezierPiece[][], x: number[], vectorToZeroV: number[]): {
15
- newX: number[];
16
- newV: number;
17
- newPs: IPointOnShape[];
18
- };
19
- export { calcBetterX };
1
+ import { IPointOnShape } from '../../../point-on-shape.js';
2
+ import { BezierPiece } from '../../bezier-piece.js';
3
+ /**
4
+ * @hidden
5
+ * Find new x and ps that are a better estimate of the 3-prong circle.
6
+ * The potential function, V, is defined as the distance to the actual 3 prong
7
+ * circle center.
8
+ * @param bezierPiece3s The three boundary pieces, each of which should contain
9
+ * a point of the 3-prong to be found.
10
+ * @param x The currently best guess at the center of the 3-prong circle.
11
+ * @param vectorToZeroV
12
+ * @param extreme
13
+ */
14
+ declare function calcBetterX(bezierPiece3s: BezierPiece[][], x: number[], vectorToZeroV: number[]): {
15
+ newX: number[];
16
+ newV: number;
17
+ newPs: IPointOnShape[];
18
+ };
19
+ export { calcBetterX };
@@ -1,37 +1,37 @@
1
- import { fromTo, circumCenter, len, scale, translate } from 'flo-vector2d';
2
- import { getClosestPoints } from './get-closest-points.js';
3
- /**
4
- * @hidden
5
- * Find new x and ps that are a better estimate of the 3-prong circle.
6
- * The potential function, V, is defined as the distance to the actual 3 prong
7
- * circle center.
8
- * @param bezierPiece3s The three boundary pieces, each of which should contain
9
- * a point of the 3-prong to be found.
10
- * @param x The currently best guess at the center of the 3-prong circle.
11
- * @param vectorToZeroV
12
- * @param extreme
13
- */
14
- function calcBetterX(bezierPiece3s, x, vectorToZeroV) {
15
- const V = len(vectorToZeroV);
16
- let nu = 1;
17
- let better;
18
- let newX;
19
- let newPs;
20
- let newV;
21
- let i = 0; // Safeguard
22
- do {
23
- const shift = scale(vectorToZeroV, nu);
24
- newX = translate(shift, x);
25
- newPs = getClosestPoints(newX, bezierPiece3s);
26
- // Point of zero V
27
- const newCircleCenter = circumCenter(newPs.map(pos => pos.p));
28
- const newVectorToZeroV = fromTo(newX, newCircleCenter);
29
- newV = len(newVectorToZeroV);
30
- better = newV < V;
31
- nu = nu / 2;
32
- i++;
33
- } while (!better && i < 3);
34
- return { newX, newV, newPs };
35
- }
36
- export { calcBetterX };
1
+ import { fromTo, circumCenter, len, scale, translate } from 'flo-vector2d';
2
+ import { getClosestPoints } from './get-closest-points.js';
3
+ /**
4
+ * @hidden
5
+ * Find new x and ps that are a better estimate of the 3-prong circle.
6
+ * The potential function, V, is defined as the distance to the actual 3 prong
7
+ * circle center.
8
+ * @param bezierPiece3s The three boundary pieces, each of which should contain
9
+ * a point of the 3-prong to be found.
10
+ * @param x The currently best guess at the center of the 3-prong circle.
11
+ * @param vectorToZeroV
12
+ * @param extreme
13
+ */
14
+ function calcBetterX(bezierPiece3s, x, vectorToZeroV) {
15
+ const V = len(vectorToZeroV);
16
+ let nu = 1;
17
+ let better;
18
+ let newX;
19
+ let newPs;
20
+ let newV;
21
+ let i = 0; // Safeguard
22
+ do {
23
+ const shift = scale(vectorToZeroV, nu);
24
+ newX = translate(shift, x);
25
+ newPs = getClosestPoints(newX, bezierPiece3s);
26
+ // Point of zero V
27
+ const newCircleCenter = circumCenter(newPs.map(pos => pos.p));
28
+ const newVectorToZeroV = fromTo(newX, newCircleCenter);
29
+ newV = len(newVectorToZeroV);
30
+ better = newV < V;
31
+ nu = nu / 2;
32
+ i++;
33
+ } while (!better && i < 3);
34
+ return { newX, newV, newPs };
35
+ }
36
+ export { calcBetterX };
37
37
  //# sourceMappingURL=calc-better-x.js.map
@@ -1,13 +1,13 @@
1
- import { CpNode } from '../../../cp-node.js';
2
- import { BezierPiece } from '../../bezier-piece.js';
3
- /**
4
- * @hidden
5
- * Finds an initial 3-prong circle center point from which to iterate. The point
6
- * must be within the shape.
7
- * @param δ3s - The three boundary pieces of which we need to find the three
8
- * 3-prong points.
9
- * @param bezierPiece3s
10
- * @param extreme
11
- */
12
- declare function calcInitial3ProngCenter(δ3s: CpNode[][], bezierPiece3s: BezierPiece[][]): number[];
13
- export { calcInitial3ProngCenter };
1
+ import { CpNode } from '../../../cp-node.js';
2
+ import { BezierPiece } from '../../bezier-piece.js';
3
+ /**
4
+ * @hidden
5
+ * Finds an initial 3-prong circle center point from which to iterate. The point
6
+ * must be within the shape.
7
+ * @param δ3s - The three boundary pieces of which we need to find the three
8
+ * 3-prong points.
9
+ * @param bezierPiece3s
10
+ * @param extreme
11
+ */
12
+ declare function calcInitial3ProngCenter(δ3s: CpNode[][], bezierPiece3s: BezierPiece[][]): number[];
13
+ export { calcInitial3ProngCenter };
@@ -1,26 +1,26 @@
1
- /** @hidden */
2
- import { circumCenter } from 'flo-vector2d';
3
- import { getClosestBoundaryPoint } from '../../closest-boundary-point/get-closest-boundary-point.js';
4
- /**
5
- * @hidden
6
- * Finds an initial 3-prong circle center point from which to iterate. The point
7
- * must be within the shape.
8
- * @param δ3s - The three boundary pieces of which we need to find the three
9
- * 3-prong points.
10
- * @param bezierPiece3s
11
- * @param extreme
12
- */
13
- function calcInitial3ProngCenter(δ3s, bezierPiece3s) {
14
- const twoProngCircleCenter = δ3s[0][0].cp.circle.center;
15
- const posInfo = getClosestBoundaryPoint(bezierPiece3s[1], twoProngCircleCenter, undefined, // curve
16
- undefined // t
17
- );
18
- const meanPoints = [
19
- δ3s[0][0].cp.pointOnShape.p,
20
- posInfo.pos.p,
21
- δ3s[2][1].cp.pointOnShape.p,
22
- ];
23
- return circumCenter(meanPoints);
24
- }
25
- export { calcInitial3ProngCenter };
1
+ /** @hidden */
2
+ import { circumCenter } from 'flo-vector2d';
3
+ import { getClosestBoundaryPoint } from '../../closest-boundary-point/get-closest-boundary-point.js';
4
+ /**
5
+ * @hidden
6
+ * Finds an initial 3-prong circle center point from which to iterate. The point
7
+ * must be within the shape.
8
+ * @param δ3s - The three boundary pieces of which we need to find the three
9
+ * 3-prong points.
10
+ * @param bezierPiece3s
11
+ * @param extreme
12
+ */
13
+ function calcInitial3ProngCenter(δ3s, bezierPiece3s) {
14
+ const twoProngCircleCenter = δ3s[0][0].cp.circle.center;
15
+ const posInfo = getClosestBoundaryPoint(bezierPiece3s[1], twoProngCircleCenter, undefined, // curve
16
+ undefined // t
17
+ );
18
+ const meanPoints = [
19
+ δ3s[0][0].cp.pointOnShape.p,
20
+ posInfo.pos.p,
21
+ δ3s[2][1].cp.pointOnShape.p,
22
+ ];
23
+ return circumCenter(meanPoints);
24
+ }
25
+ export { calcInitial3ProngCenter };
26
26
  //# sourceMappingURL=calc-initial-3-prong-center.js.map
@@ -1,22 +1,22 @@
1
- import { CpNode } from '../../../cp-node.js';
2
- import { BezierPiece } from '../../bezier-piece.js';
3
- import { IPointOnShape } from '../../../point-on-shape.js';
4
- /**
5
- * @hidden
6
- * Finds a 3-prong using only the 3 given δs.
7
- * @param δs The boundary pieces
8
- * @param idx δ identifier
9
- * @param bezierPiecess
10
- * @param extreme The maximum coordinate value used to calculate floating point
11
- * tolerances.
12
- */
13
- declare function find3ProngForDelta3s(δs: CpNode[][], idx: number, k: number, bezierPiecess: BezierPiece[][], extreme: number): {
14
- ps: IPointOnShape[];
15
- circle: {
16
- center: number[];
17
- radius: number;
18
- };
19
- error: number;
20
- δ3s: CpNode[][];
21
- };
22
- export { find3ProngForDelta3s };
1
+ import { CpNode } from '../../../cp-node.js';
2
+ import { BezierPiece } from '../../bezier-piece.js';
3
+ import { IPointOnShape } from '../../../point-on-shape.js';
4
+ /**
5
+ * @hidden
6
+ * Finds a 3-prong using only the 3 given δs.
7
+ * @param δs The boundary pieces
8
+ * @param idx δ identifier
9
+ * @param bezierPiecess
10
+ * @param extreme The maximum coordinate value used to calculate floating point
11
+ * tolerances.
12
+ */
13
+ declare function find3ProngForDelta3s(δs: CpNode[][], idx: number, k: number, bezierPiecess: BezierPiece[][], extreme: number): {
14
+ ps: IPointOnShape[];
15
+ circle: {
16
+ center: number[];
17
+ radius: number;
18
+ };
19
+ error: number;
20
+ δ3s: CpNode[][];
21
+ };
22
+ export { find3ProngForDelta3s };