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.
- package/browser/index.js +8230 -8229
- package/browser/index.min.js +1 -1
- package/node/circle.d.ts +20 -20
- package/node/circle.js +31 -31
- package/node/compare-curvatures-at-interface.d.ts +19 -19
- package/node/compare-curvatures-at-interface.js +124 -124
- package/node/contact-point.d.ts +26 -26
- package/node/contact-point.js +25 -25
- package/node/cp-node/clone.d.ts +8 -8
- package/node/cp-node/clone.js +31 -31
- package/node/cp-node/remove.d.ts +9 -9
- package/node/cp-node/remove.js +19 -19
- package/node/cp-node.d.ts +202 -202
- package/node/cp-node.js +320 -320
- package/node/curve.d.ts +46 -46
- package/node/curve.js +88 -88
- package/node/debug/cp-node-for-debugging.d.ts +11 -11
- package/node/debug/cp-node-for-debugging.js +1 -1
- package/node/debug/debug-elem-types.d.ts +32 -32
- package/node/debug/debug-elem-types.js +1 -1
- package/node/debug/debug.d.ts +50 -50
- package/node/debug/debug.js +75 -75
- package/node/debug/functions/draw-elem/bounding-hull.d.ts +3 -3
- package/node/debug/functions/draw-elem/bounding-hull.js +7 -7
- package/node/debug/functions/draw-elem/branch.d.ts +4 -4
- package/node/debug/functions/draw-elem/branch.js +22 -22
- package/node/debug/functions/draw-elem/culls.d.ts +4 -4
- package/node/debug/functions/draw-elem/culls.js +21 -21
- package/node/debug/functions/draw-elem/draw-circle-percent.d.ts +3 -3
- package/node/debug/functions/draw-elem/draw-circle-percent.js +12 -12
- package/node/debug/functions/draw-elem/draw-elem.d.ts +8 -8
- package/node/debug/functions/draw-elem/draw-elem.js +45 -45
- package/node/debug/functions/draw-elem/dull-corner.d.ts +4 -4
- package/node/debug/functions/draw-elem/dull-corner.js +10 -10
- package/node/debug/functions/draw-elem/leaves.d.ts +4 -4
- package/node/debug/functions/draw-elem/leaves.js +12 -12
- package/node/debug/functions/draw-elem/loop.d.ts +4 -4
- package/node/debug/functions/draw-elem/loop.js +11 -11
- package/node/debug/functions/draw-elem/loops.d.ts +4 -4
- package/node/debug/functions/draw-elem/loops.js +6 -6
- package/node/debug/functions/draw-elem/loose-bounding-box.d.ts +3 -3
- package/node/debug/functions/draw-elem/loose-bounding-box.js +9 -9
- package/node/debug/functions/draw-elem/mat.d.ts +4 -4
- package/node/debug/functions/draw-elem/mat.js +30 -30
- package/node/debug/functions/draw-elem/max-vertex.d.ts +4 -4
- package/node/debug/functions/draw-elem/max-vertex.js +8 -8
- package/node/debug/functions/draw-elem/min-y.d.ts +4 -4
- package/node/debug/functions/draw-elem/min-y.js +13 -13
- package/node/debug/functions/draw-elem/one-prong-at-dull-corner.d.ts +4 -4
- package/node/debug/functions/draw-elem/one-prong-at-dull-corner.js +12 -12
- package/node/debug/functions/draw-elem/one-prong.d.ts +4 -4
- package/node/debug/functions/draw-elem/one-prong.js +16 -16
- package/node/debug/functions/draw-elem/sharp-corner.d.ts +4 -4
- package/node/debug/functions/draw-elem/sharp-corner.js +9 -9
- package/node/debug/functions/draw-elem/three-prong.d.ts +4 -4
- package/node/debug/functions/draw-elem/three-prong.js +16 -16
- package/node/debug/functions/draw-elem/tight-bounding-box.d.ts +3 -3
- package/node/debug/functions/draw-elem/tight-bounding-box.js +7 -7
- package/node/debug/functions/draw-elem/two-prong.d.ts +4 -4
- package/node/debug/functions/draw-elem/two-prong.js +36 -36
- package/node/debug/functions/draw-elem/vertex.d.ts +4 -4
- package/node/debug/functions/draw-elem/vertex.js +27 -27
- package/node/debug/functions/general.d.ts +48 -48
- package/node/debug/functions/general.js +52 -52
- package/node/debug/functions/three-prong.d.ts +11 -11
- package/node/debug/functions/three-prong.js +184 -184
- package/node/debug/functions/two-prong.d.ts +13 -13
- package/node/debug/functions/two-prong.js +117 -117
- package/node/debug/three-prong-for-debugging.d.ts +31 -31
- package/node/debug/three-prong-for-debugging.js +20 -20
- package/node/debug/two-prong-for-debugging.d.ts +26 -26
- package/node/debug/two-prong-for-debugging.js +1 -1
- package/node/find-mats.d.ts +26 -26
- package/node/find-mats.js +122 -122
- package/node/get-boundary-bezier-parts-to-next.d.ts +9 -9
- package/node/get-boundary-bezier-parts-to-next.js +42 -42
- package/node/get-boundary-beziers-to-next.d.ts +8 -8
- package/node/get-boundary-beziers-to-next.js +44 -44
- package/node/get-bounding-box-.d.ts +2 -2
- package/node/get-bounding-box-.js +4 -4
- package/node/get-branches.d.ts +12 -12
- package/node/get-branches.js +68 -68
- package/node/get-curve/get-curve-between.d.ts +9 -9
- package/node/get-curve/get-curve-between.js +56 -56
- package/node/get-curve/get-edge-direction.d.ts +9 -9
- package/node/get-curve/get-edge-direction.js +53 -53
- package/node/get-curve-to-next.d.ts +9 -9
- package/node/get-curve-to-next.js +11 -11
- package/node/get-interface-ccw.d.ts +24 -24
- package/node/get-interface-ccw.js +97 -97
- package/node/index.d.ts +36 -36
- package/node/index.js +32 -32
- package/node/loop/get-max-coordinate.d.ts +10 -10
- package/node/loop/get-max-coordinate.js +43 -43
- package/node/loop.d.ts +16 -16
- package/node/loop.js +34 -34
- package/node/mat/add-to-cp-graph.d.ts +16 -16
- package/node/mat/add-to-cp-graph.js +30 -30
- package/node/mat/bezier-piece.d.ts +12 -12
- package/node/mat/bezier-piece.js +1 -1
- package/node/mat/closest-boundary-point/closest-points-on-curve.d.ts +14 -14
- package/node/mat/closest-boundary-point/closest-points-on-curve.js +72 -72
- package/node/mat/closest-boundary-point/cull-bezier-pieces.d.ts +9 -9
- package/node/mat/closest-boundary-point/cull-bezier-pieces.js +19 -19
- package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.d.ts +11 -11
- package/node/mat/closest-boundary-point/cull-by-loose-bounding-box.js +24 -24
- package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.d.ts +11 -11
- package/node/mat/closest-boundary-point/cull-by-tight-boundary-box.js +26 -26
- package/node/mat/closest-boundary-point/get-best-distance-squared.d.ts +8 -8
- package/node/mat/closest-boundary-point/get-best-distance-squared.js +24 -24
- package/node/mat/closest-boundary-point/get-close-boundary-points.d.ts +17 -17
- package/node/mat/closest-boundary-point/get-close-boundary-points.js +80 -80
- package/node/mat/closest-boundary-point/get-closest-boundary-point.d.ts +18 -18
- package/node/mat/closest-boundary-point/get-closest-boundary-point.js +40 -40
- package/node/mat/corner.d.ts +37 -37
- package/node/mat/corner.js +1 -1
- package/node/mat/create-new-cp-tree.d.ts +9 -9
- package/node/mat/create-new-cp-tree.js +23 -23
- package/node/mat/elem-type-two-prong.d.ts +3 -3
- package/node/mat/elem-type-two-prong.js +1 -1
- package/node/mat/find-mat/add-1-prong.d.ts +12 -12
- package/node/mat/find-mat/add-1-prong.js +42 -42
- package/node/mat/find-mat/add-2-prong.d.ts +21 -21
- package/node/mat/find-mat/add-2-prong.js +192 -192
- package/node/mat/find-mat/add-3-prong.d.ts +19 -19
- package/node/mat/find-mat/add-3-prong.js +54 -54
- package/node/mat/find-mat/add-debug-info.d.ts +9 -9
- package/node/mat/find-mat/add-debug-info.js +67 -67
- package/node/mat/find-mat/create-get-interesting-points-on-loop.d.ts +11 -11
- package/node/mat/find-mat/create-get-interesting-points-on-loop.js +51 -51
- package/node/mat/find-mat/create-initial-cp-graph.d.ts +12 -12
- package/node/mat/find-mat/create-initial-cp-graph.js +40 -40
- package/node/mat/find-mat/find-2-prong/add-debug-info.d.ts +8 -8
- package/node/mat/find-mat/find-2-prong/add-debug-info.js +21 -21
- package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.d.ts +11 -11
- package/node/mat/find-mat/find-2-prong/cull-bezier-pieces.js +29 -29
- package/node/mat/find-mat/find-2-prong/find-2-prong.d.ts +37 -37
- package/node/mat/find-mat/find-2-prong/find-2-prong.js +232 -232
- package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.d.ts +9 -9
- package/node/mat/find-mat/find-2-prong/find-equidistant-point-on-line.js +39 -39
- package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.d.ts +11 -11
- package/node/mat/find-mat/find-2-prong/get-initial-bezier-pieces.js +37 -37
- package/node/mat/find-mat/find-2-prong/x-for-debugging.d.ts +9 -9
- package/node/mat/find-mat/find-2-prong/x-for-debugging.js +1 -1
- package/node/mat/find-mat/find-3-prong/calc-better-x.d.ts +19 -19
- package/node/mat/find-mat/find-3-prong/calc-better-x.js +36 -36
- package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.d.ts +13 -13
- package/node/mat/find-mat/find-3-prong/calc-initial-3-prong-center.js +25 -25
- package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.d.ts +22 -22
- package/node/mat/find-mat/find-3-prong/find-3-prong-for-delta3s.js +159 -159
- package/node/mat/find-mat/find-3-prong/find-3-prong.d.ts +16 -16
- package/node/mat/find-mat/find-3-prong/find-3-prong.js +76 -76
- package/node/mat/find-mat/find-3-prong/get-closest-points.d.ts +9 -9
- package/node/mat/find-mat/find-3-prong/get-closest-points.js +16 -16
- package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.d.ts +15 -15
- package/node/mat/find-mat/find-and-add-2-prongs-on-all-paths.js +20 -20
- package/node/mat/find-mat/find-and-add-2-prongs.d.ts +16 -16
- package/node/mat/find-mat/find-and-add-2-prongs.js +73 -73
- package/node/mat/find-mat/find-and-add-3-prongs.d.ts +13 -13
- package/node/mat/find-mat/find-and-add-3-prongs.js +146 -146
- package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.d.ts +14 -14
- package/node/mat/find-mat/find-and-add-hole-closing-2-prongs.js +33 -33
- package/node/mat/find-mat/get-potential-2-prongs.d.ts +4 -4
- package/node/mat/find-mat/get-potential-2-prongs.js +16 -16
- package/node/mat/find-mat/get-sharp-corners.d.ts +4 -4
- package/node/mat/find-mat/get-sharp-corners.js +17 -17
- package/node/mat/geometry/get-closest-square-distance-to-rect.d.ts +5 -5
- package/node/mat/geometry/get-closest-square-distance-to-rect.js +49 -49
- package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.d.ts +5 -5
- package/node/mat/geometry/get-closest-squared-distance-to-rotated-rect.js +15 -15
- package/node/mat/get-boundary-piece-beziers.d.ts +11 -11
- package/node/mat/get-boundary-piece-beziers.js +58 -58
- package/node/mat/get-contact-circles-at-interface.d.ts +8 -8
- package/node/mat/get-contact-circles-at-interface.js +20 -20
- package/node/mat/get-largest-vertex.d.ts +4 -4
- package/node/mat/get-largest-vertex.js +9 -9
- package/node/mat/get-leaves.d.ts +4 -4
- package/node/mat/get-leaves.js +12 -12
- package/node/mat/get-neighboring-cps.d.ts +14 -14
- package/node/mat/get-neighboring-cps.js +30 -30
- package/node/mat/get-two-prong-type.d.ts +5 -5
- package/node/mat/get-two-prong-type.js +8 -8
- package/node/mat/is-another-cp-closeby.d.ts +20 -20
- package/node/mat/is-another-cp-closeby.js +55 -55
- package/node/mat/simplify-mat-map-only.d.ts +23 -23
- package/node/mat/simplify-mat-map-only.js +80 -80
- package/node/mat/to-scale-axis/add-debug-info.d.ts +7 -7
- package/node/mat/to-scale-axis/add-debug-info.js +13 -13
- package/node/mat/to-scale-axis/cull-non-cycles.d.ts +9 -9
- package/node/mat/to-scale-axis/cull-non-cycles.js +51 -51
- package/node/mat/to-scale-axis/cull.d.ts +12 -12
- package/node/mat/to-scale-axis/cull.js +132 -132
- package/node/mat/trim-mat.d.ts +8 -8
- package/node/mat/trim-mat.js +16 -16
- package/node/mat.d.ts +22 -22
- package/node/mat.js +1 -1
- package/node/point-on-shape.d.ts +73 -73
- package/node/point-on-shape.js +167 -167
- package/node/simplify-mat.d.ts +16 -16
- package/node/simplify-mat.js +71 -71
- package/node/svg/get-loop-bounds.d.ts +12 -12
- package/node/svg/get-loop-bounds.js +80 -80
- package/node/svg/get-min-y-pos.d.ts +8 -8
- package/node/svg/get-min-y-pos.js +9 -9
- package/node/svg/get-shape-bounds.d.ts +9 -9
- package/node/svg/get-shape-bounds.js +35 -35
- package/node/sweep-line/sweep-line.d.ts +18 -18
- package/node/sweep-line/sweep-line.js +72 -72
- package/node/to-scale-axis.d.ts +16 -16
- package/node/to-scale-axis.js +74 -74
- package/node/traverse-edges.d.ts +10 -10
- package/node/traverse-edges.js +21 -21
- package/node/traverse-vertices.d.ts +12 -12
- package/node/traverse-vertices.js +27 -27
- package/package.json +11 -11
- 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 };
|