flo-mat 3.0.13 → 3.0.15
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/__tests__/cp-node/check-clone-eql-calc.spec.ts +58 -0
- package/__tests__/cp-node/compare-cp-nodes-by-value.ts +35 -0
- package/__tests__/cp-node/compare-loops-by-value.ts +40 -0
- package/__tests__/cp-node/compare-poss-by-value.ts +25 -0
- package/__tests__/cp-node/fs/clone.spec.ts +19 -3
- package/__tests__/cp-node/fs/find-first.spec.ts +13 -3
- package/__tests__/cp-node/fs/get-all-between.spec.ts +20 -3
- package/__tests__/cp-node/fs/get-all-on-circle.spec.ts +2 -2
- package/__tests__/cp-node/fs/get-all-on-loop.spec.ts +16 -3
- package/__tests__/cp-node/fs/get-all-vertices.spec.ts +14 -3
- package/__tests__/cp-node/fs/get-children.spec.ts +18 -3
- package/__tests__/cp-node/fs/get-non-terminating-on-circle.spec.ts +14 -3
- package/__tests__/cp-node/fs/get-prong-count.spec.ts +16 -3
- package/__tests__/cp-node/fs/get-real-prong-count.spec.ts +11 -3
- package/__tests__/cp-node/fs/get-terminating-on-circle.spec.ts +20 -3
- package/__tests__/cp-node/fs/is-fully-terminating.spec.ts +16 -3
- package/__tests__/cp-node/fs/is-on-same-circle.spec.ts +20 -3
- package/__tests__/cp-node/fs/is-one-prong.spec.ts +16 -3
- package/__tests__/cp-node/fs/is-sharp.spec.ts +10 -3
- package/__tests__/cp-node/fs/is-single-3-prong.spec.ts +13 -3
- package/__tests__/cp-node/fs/is-special.spec.ts +12 -3
- package/__tests__/cp-node/fs/is-terminating.spec.ts +15 -3
- package/__tests__/cp-node/fs/is-trivial.spec.ts +13 -3
- package/__tests__/cp-node/fs/is-two-prong.spec.ts +11 -3
- package/__tests__/cp-node/fs/is-vertex-special.spec.ts +13 -3
- package/__tests__/cp-node/fs/is-vertex.spec.ts +14 -3
- package/__tests__/cp-node/fs/iterate-all-on-loop.spec.ts +13 -3
- package/__tests__/cp-node/fs/traverse-all-forward.spec.ts +10 -3
- package/__tests__/cp-node/fs/traverse-cp.spec.ts +9 -3
- package/__tests__/cp-node/fs/traverse-edges.spec.ts +13 -3
- package/__tests__/cp-node/fs/traverse-vertices.spec.ts +12 -3
- package/__tests__/cp-node/random-walk.ts +33 -0
- package/__tests__/cp-node/stringification/from-stringifyable.spec.ts +3 -0
- package/__tests__/cp-node/stringification/loop-from-stringifyable.spec.ts +4 -0
- package/__tests__/cp-node/stringification/loop-to-stringifyable.spec.ts +19 -0
- package/__tests__/cp-node/stringification/to-stringifyable.spec.ts +34 -0
- package/__tests__/get-mats1.ts +125 -0
- package/__tests__/jsog/check-jsog-eql-calc.spec.ts +47 -67
- package/__tests__/jsog/decode-jsog.ts +88 -85
- package/__tests__/jsog/mat-dummy-1.ts +19 -0
- package/__tests__/jsog/mat-dummys.ts +6197 -6195
- package/__tests__/jsog/to-jsog-breath-first.ts +110 -107
- package/__tests__/jsog/to-jsog-depth-first.ts +58 -55
- package/browser/index.js +7002 -6298
- package/browser/index.min.js +1 -1
- package/jest.config.cjs +1 -0
- package/node/closest-boundary-point/foot-and-endpoint-info.d.ts +1 -1
- package/node/closest-boundary-point/get-close-boundary-points-certified.d.ts +3 -3
- package/node/closest-boundary-point/get-close-boundary-points-certified.js +1 -1
- package/node/closest-boundary-point/get-close-boundary-points-certified.js.map +1 -1
- package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.d.ts +2 -2
- package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js +7 -7
- package/node/closest-boundary-point/get-potential-closest-points-on-curve-certified.js.map +1 -1
- package/node/cp-node/cp-node.d.ts +2 -2
- package/node/cp-node/fs/clone.d.ts +1 -1
- package/node/cp-node/fs/clone.js +17 -13
- package/node/cp-node/fs/clone.js.map +1 -1
- package/node/cp-node/fs/enhance-cp-node.d.ts +2 -2
- package/node/cp-node/fs/find-first.d.ts +9 -2
- package/node/cp-node/fs/find-first.js +12 -9
- package/node/cp-node/fs/find-first.js.map +1 -1
- package/node/cp-node/fs/get-all-on-loop.js +5 -6
- package/node/cp-node/fs/get-all-on-loop.js.map +1 -1
- package/node/cp-node/fs/get-edge-direction.d.ts +1 -1
- package/node/cp-node/fs/get-edge-direction.js.map +1 -1
- package/node/cp-node/fs/is-on-same-circle.d.ts +1 -0
- package/node/cp-node/fs/is-on-same-circle.js +1 -0
- package/node/cp-node/fs/is-on-same-circle.js.map +1 -1
- package/node/debug/functions/draw-elem/draw-dull-corner.d.ts +1 -1
- package/node/debug/functions/draw-elem/draw-dull-corner.js +1 -1
- package/node/debug/functions/draw-elem/draw-dull-corner.js.map +1 -1
- package/node/debug/functions/draw-elem/draw-sharp-corner.d.ts +1 -1
- package/node/debug/functions/draw-elem/draw-sharp-corner.js +2 -1
- package/node/debug/functions/draw-elem/draw-sharp-corner.js.map +1 -1
- package/node/find-mat/find-mats.js +7 -2
- package/node/find-mat/find-mats.js.map +1 -1
- package/node/find-mat/get-meta.d.ts +4 -4
- package/node/find-mat/get-meta.js +1 -1
- package/node/find-mat/get-meta.js.map +1 -1
- package/node/geometry/circle.d.ts +4 -3
- package/node/geometry/circle.js +0 -7
- package/node/geometry/circle.js.map +1 -1
- package/node/index.d.ts +2 -2
- package/node/index.js +1 -0
- package/node/index.js.map +1 -1
- package/node/mat/curve-piece.d.ts +3 -3
- package/node/mat/get-boundary-piece-beziers.d.ts +2 -2
- package/node/mat/mat-meta.d.ts +4 -4
- package/node/mat/simplify-mat.d.ts +10 -8
- package/node/mat/simplify-mat.js +12 -10
- package/node/mat/simplify-mat.js.map +1 -1
- package/node/point-on-shape/create-pos.d.ts +2 -2
- package/node/point-on-shape/create-pos.js.map +1 -1
- package/node/point-on-shape/point-on-shape.d.ts +6 -6
- package/node/svg/get-loop-bounds.d.ts +2 -2
- package/node/svg/get-loop-bounds.js +1 -1
- package/node/svg/get-loop-bounds.js.map +1 -1
- package/package.json +10 -10
- package/src/closest-boundary-point/foot-and-endpoint-info.ts +1 -1
- package/src/closest-boundary-point/get-close-boundary-points-certified.ts +5 -5
- package/src/closest-boundary-point/get-potential-closest-points-on-curve-certified.ts +9 -9
- package/src/cp-node/cp-node.ts +8 -3
- package/src/cp-node/fs/add-distance-from.ts +37 -37
- package/src/cp-node/fs/clone.ts +23 -17
- package/src/cp-node/fs/find-first.ts +14 -11
- package/src/cp-node/fs/get-all-on-loop.ts +5 -6
- package/src/cp-node/fs/get-boundary-bezier-parts-to-next.ts +1 -1
- package/src/cp-node/fs/get-edge-direction.ts +3 -5
- package/src/cp-node/fs/is-on-same-circle.ts +1 -0
- package/src/cp-node/stringification/cp-node-stringifyable.ts +68 -0
- package/src/cp-node/stringification/from-stringifyable.ts +57 -0
- package/src/cp-node/stringification/loop-from-stringifyable.ts +15 -0
- package/src/cp-node/stringification/loop-stringifyable.ts +8 -0
- package/src/cp-node/stringification/loop-to-stringifyable.ts +14 -0
- package/src/cp-node/stringification/to-stringifyable.ts +71 -0
- package/src/curve/curve.ts +31 -33
- package/src/debug/functions/draw-elem/draw-dull-corner.ts +2 -2
- package/src/debug/functions/draw-elem/draw-sharp-corner.ts +4 -3
- package/src/find-mat/find-mats.ts +8 -2
- package/src/find-mat/get-meta.ts +7 -6
- package/src/geometry/circle.ts +5 -12
- package/src/index.ts +3 -4
- package/src/mat/curve-piece.ts +3 -3
- package/src/mat/get-boundary-piece-beziers.ts +3 -3
- package/src/mat/mat-meta.ts +4 -4
- package/src/mat/simplify-mat-map-only.ts +110 -110
- package/src/mat/simplify-mat.ts +15 -13
- package/src/point-on-shape/create-pos.ts +3 -3
- package/src/point-on-shape/point-on-shape.ts +6 -6
- package/src/svg/get-loop-bounds.ts +4 -5
- package/__tests__/cp-node/fs/add-distance-from.spec.ts +0 -7
- package/__tests__/cp-node/fs/cp-nodes-to-boundary-beziers.spec.ts +0 -7
- package/__tests__/cp-node/fs/create-cp-node.spec.ts +0 -7
- package/__tests__/cp-node/fs/enhance-cp-node.spec.ts +0 -7
- package/__tests__/jsog/get-mats1.ts +0 -41
- package/node/curve/curve.d.ts +0 -33
- package/node/curve/curve.js +0 -2
- package/node/curve/curve.js.map +0 -1
package/jest.config.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { PointOnShape } from '../point-on-shape/point-on-shape.js';
|
|
1
|
+
import type { Curve } from 'flo-boolean';
|
|
2
|
+
import type { CurvePiece } from '../mat/curve-piece.js';
|
|
3
|
+
import type { PointOnShape } from '../point-on-shape/point-on-shape.js';
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
6
6
|
* Returns the closest boundary point to the given point, limited to the given
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { createPos } from '../point-on-shape/create-pos.js';
|
|
1
2
|
import { getPotentialClosestPointsOnCurveCertified } from './get-potential-closest-points-on-curve-certified.js';
|
|
2
3
|
import { cullCurvePieces1 } from './cull-bezier-pieces.js';
|
|
3
|
-
import { createPos } from '../point-on-shape/create-pos.js';
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
6
6
|
* Returns the closest boundary point to the given point, limited to the given
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-close-boundary-points-certified.js","sourceRoot":"","sources":["../../src/closest-boundary-point/get-close-boundary-points-certified.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-close-boundary-points-certified.js","sourceRoot":"","sources":["../../src/closest-boundary-point/get-close-boundary-points-certified.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,yCAAyC,EAAE,MAAM,sDAAsD,CAAC;AACjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D;;;;;;;;;;;;GAYG;AACH,SAAS,+BAA+B,CAChC,GAAW,EACX,WAAyB,EACzB,CAAW,EACX,eAAkC,SAAS,EAC3C,IAAwB,SAAS,EACjC,SAAS,GAAG,KAAK,EACjB,KAAK,GAAG,CAAC;IAEb,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE/C,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,yCAAyC,CACpD,GAAG,EACH,UAAU,CAAC,KAAK,EAChB,CAAC,EACD,UAAU,CAAC,EAAE,EACb,YAAY,EACZ,CAAC,EACD,SAAS,EACT,KAAK,CACR,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,qCAAqC;IACrC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;YACjB,MAAM,GAAG,KAAK,CAAC;QACnB,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAA0B,EAAE,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;YAC9B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC;AAGD,OAAO,EAAE,+BAA+B,EAAE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { allRootsCertified } from 'flo-poly';
|
|
2
|
+
import { eDeflate } from 'flo-poly';
|
|
2
3
|
import { getFootPointsOnBezierPolysCertified, getIntervalBox } from 'flo-bezier3';
|
|
3
4
|
import { ddDeflateWithRunningError } from './dd-deflate-with-running-error.js';
|
|
4
|
-
import { eDeflate } from 'flo-poly';
|
|
5
5
|
import { γγ } from '../error-analysis/gamma.js';
|
|
6
6
|
import { rootIntervalToDistanceSquaredInterval } from './root-interval-to-distance-squared-interval.js';
|
|
7
7
|
import { getPFromBox } from './get-p-from-box.js';
|
|
@@ -57,29 +57,29 @@ function getPotentialClosestPointsOnCurveCertified(pow, curve, x, tRange = [0, 1
|
|
|
57
57
|
(t === 1 && curve === touchedCurve));
|
|
58
58
|
if (tS === 0) {
|
|
59
59
|
if (!dontPush0) {
|
|
60
|
-
ris.push({ tS: 0, tE: 0, multiplicity: 1 });
|
|
60
|
+
ris.push({ t: 0, tS: 0, tE: 0, multiplicity: 1 });
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
else if (tS === 1) {
|
|
64
64
|
if (!dontPush1) {
|
|
65
|
-
ris.push({ tS: 1, tE: 1, multiplicity: 1 });
|
|
65
|
+
ris.push({ t: 1, tS: 1, tE: 1, multiplicity: 1 });
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
else {
|
|
69
|
-
ris.push({ tS: tS, tE: tS, multiplicity: 1 });
|
|
69
|
+
ris.push({ t: tS, tS: tS, tE: tS, multiplicity: 1 });
|
|
70
70
|
}
|
|
71
71
|
if (tE === 0) {
|
|
72
72
|
if (!dontPush0) {
|
|
73
|
-
ris.push({ tS: 0, tE: 0, multiplicity: 1 });
|
|
73
|
+
ris.push({ t: 0, tS: 0, tE: 0, multiplicity: 1 });
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
else if (tE === 1) {
|
|
77
77
|
if (!dontPush1) {
|
|
78
|
-
ris.push({ tS: 1, tE: 1, multiplicity: 1 });
|
|
78
|
+
ris.push({ t: 1, tS: 1, tE: 1, multiplicity: 1 });
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
else {
|
|
82
|
-
ris.push({ tS: tE, tE: tE, multiplicity: 1 });
|
|
82
|
+
ris.push({ t: tE, tS: tE, tE: tE, multiplicity: 1 });
|
|
83
83
|
}
|
|
84
84
|
const infos = ris
|
|
85
85
|
.map(ri => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-potential-closest-points-on-curve-certified.js","sourceRoot":"","sources":["../../src/closest-boundary-point/get-potential-closest-points-on-curve-certified.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-potential-closest-points-on-curve-certified.js","sourceRoot":"","sources":["../../src/closest-boundary-point/get-potential-closest-points-on-curve-certified.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,8 @@ import { ContactPoint } from '../contact-point/contact-point.js';
|
|
|
48
48
|
* in opposite directions.
|
|
49
49
|
*/
|
|
50
50
|
interface CpNode {
|
|
51
|
+
/** For debugging / easy identification only */
|
|
52
|
+
id: number;
|
|
51
53
|
/** The shape boundary contact point, i.e. a `CpNode` without its edges. */
|
|
52
54
|
cp: ContactPoint;
|
|
53
55
|
/** If true, this `CpNode` belongs to a hole-closing maximal disk. */
|
|
@@ -74,7 +76,5 @@ interface CpNode {
|
|
|
74
76
|
* next `CpNode` on the same loop.
|
|
75
77
|
*/
|
|
76
78
|
holeCloserTwin?: CpNode | undefined;
|
|
77
|
-
/** For debugging / easy identification only */
|
|
78
|
-
id: number;
|
|
79
79
|
}
|
|
80
80
|
export { CpNode };
|
package/node/cp-node/fs/clone.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @internal */
|
|
2
|
-
const EDGES = ['prev', 'next', 'prevOnCircle', 'nextOnCircle'];
|
|
2
|
+
const EDGES = ['prev', 'next', 'prevOnCircle', 'nextOnCircle', 'holeCloserTwin'];
|
|
3
3
|
/**
|
|
4
4
|
* Returns a deep clone of this `CpNode`. Can be used to copy the MAT
|
|
5
5
|
* since cloning a single `CpNode` necessarily implies cloning all
|
|
@@ -7,37 +7,41 @@ const EDGES = ['prev', 'next', 'prevOnCircle', 'nextOnCircle'];
|
|
|
7
7
|
*/
|
|
8
8
|
function clone(cpNode) {
|
|
9
9
|
// Don't change this function to be recursive, the call stack may
|
|
10
|
-
// overflow if there are too many
|
|
10
|
+
// overflow if there are too many `CpNode`s.
|
|
11
11
|
const nodeMap = new Map();
|
|
12
|
-
const newCpNode =
|
|
12
|
+
const newCpNode = cloneWithoutEdges(cpNode);
|
|
13
13
|
nodeMap.set(cpNode, newCpNode);
|
|
14
14
|
const cpStack = [{ cpNode, newCpNode }];
|
|
15
15
|
while (cpStack.length) {
|
|
16
16
|
const { cpNode, newCpNode } = cpStack.pop();
|
|
17
17
|
for (const edge of EDGES) {
|
|
18
18
|
const node = cpNode[edge];
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
newNode = cloneWithoutLinks(node);
|
|
22
|
-
nodeMap.set(node, newNode);
|
|
23
|
-
cpStack.push({ cpNode: node, newCpNode: newNode });
|
|
19
|
+
if (node === undefined) {
|
|
20
|
+
continue;
|
|
24
21
|
}
|
|
25
|
-
|
|
22
|
+
let node_ = nodeMap.get(node);
|
|
23
|
+
if (!node_) {
|
|
24
|
+
node_ = cloneWithoutEdges(node);
|
|
25
|
+
nodeMap.set(node, node_);
|
|
26
|
+
cpStack.push({ cpNode: node, newCpNode: node_ });
|
|
27
|
+
}
|
|
28
|
+
newCpNode[edge] = node_;
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
31
|
return newCpNode;
|
|
29
32
|
}
|
|
30
|
-
function
|
|
31
|
-
const
|
|
33
|
+
function cloneWithoutEdges(cpNode) {
|
|
34
|
+
const cpNode_ = {
|
|
32
35
|
...cpNode,
|
|
33
36
|
...{
|
|
34
37
|
prev: undefined,
|
|
35
38
|
next: undefined,
|
|
36
39
|
prevOnCircle: undefined,
|
|
37
|
-
nextOnCircle: undefined
|
|
40
|
+
nextOnCircle: undefined,
|
|
41
|
+
holeCloserTwin: undefined
|
|
38
42
|
}
|
|
39
43
|
};
|
|
40
|
-
return
|
|
44
|
+
return cpNode_;
|
|
41
45
|
}
|
|
42
46
|
export { clone };
|
|
43
47
|
//# sourceMappingURL=clone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/cp-node/fs/clone.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/cp-node/fs/clone.ts"],"names":[],"mappings":"AAWA,gBAAgB;AAChB,MAAM,KAAK,GAAW,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAOzF;;;;GAIG;AACH,SAAS,KAAK,CACN,MAAc;IAElB,kEAAkE;IAClE,4CAA4C;IAE5C,MAAM,OAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;IAE3D,MAAM,SAAS,GAAuB,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAG,CAAC;QAE7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAErC,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAEhC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;YACA,SAAoB,CAAC,IAAI,CAAC,GAAG,KAAe,CAAC;QAClD,CAAC;IACL,CAAC;IAED,OAAO,SAAmB,CAAC;AAC/B,CAAC;AAGD,SAAS,iBAAiB,CAAC,MAAc;IACrC,MAAM,OAAO,GAAG;QACZ,GAAG,MAAM;QACT,GAAG;YACC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,SAAS;YACvB,cAAc,EAAE,SAAS;SAC5B;KACJ,CAAC;IAEF,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA"}
|
|
@@ -18,8 +18,9 @@ declare function enhanceCpNode(cpNode: CpNode): {
|
|
|
18
18
|
order: number;
|
|
19
19
|
order2: number;
|
|
20
20
|
};
|
|
21
|
-
curve: import("
|
|
21
|
+
curve: import("flo-boolean").Curve;
|
|
22
22
|
loop: import("flo-boolean").Loop;
|
|
23
|
+
id: number;
|
|
23
24
|
cp: import("../../index.js").ContactPoint;
|
|
24
25
|
isHoleClosing: boolean;
|
|
25
26
|
isIntersection: boolean;
|
|
@@ -28,6 +29,5 @@ declare function enhanceCpNode(cpNode: CpNode): {
|
|
|
28
29
|
prevOnCircle: CpNode;
|
|
29
30
|
nextOnCircle: CpNode;
|
|
30
31
|
holeCloserTwin?: CpNode | undefined;
|
|
31
|
-
id: number;
|
|
32
32
|
};
|
|
33
33
|
export { enhanceCpNode };
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
import { CpNode } from "../cp-node.js";
|
|
2
|
-
|
|
1
|
+
import type { CpNode } from "../cp-node.js";
|
|
2
|
+
/**
|
|
3
|
+
* Finds the first `CpNode` in the same MAT tree for which `f` returns a
|
|
4
|
+
* truthy value. Returns `undefined` if no such `CpNode` exists.
|
|
5
|
+
*
|
|
6
|
+
* @param f a function that takes a `CpNode` and returns a `CpNode` or `undefined`
|
|
7
|
+
* @param cpNode a `CpNode` on the MAT tree to search from
|
|
8
|
+
*/
|
|
9
|
+
declare function findFirst(f: (cpNode: CpNode) => boolean, cpNode: CpNode): CpNode | undefined;
|
|
3
10
|
export { findFirst };
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finds the first `CpNode` in the same MAT tree for which `f` returns a
|
|
3
|
+
* truthy value. Returns `undefined` if no such `CpNode` exists.
|
|
4
|
+
*
|
|
5
|
+
* @param f a function that takes a `CpNode` and returns a `CpNode` or `undefined`
|
|
6
|
+
* @param cpNode a `CpNode` on the MAT tree to search from
|
|
7
|
+
*/
|
|
1
8
|
function findFirst(f, cpNode) {
|
|
2
9
|
const cpStart = cpNode;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
let cpNode_ = cpNode.next;
|
|
7
|
-
while (cpNode_ !== cpStart) {
|
|
8
|
-
if (f(cpNode_)) {
|
|
9
|
-
return cpNode_;
|
|
10
|
+
do {
|
|
11
|
+
if (f(cpNode)) {
|
|
12
|
+
return cpNode;
|
|
10
13
|
}
|
|
11
|
-
|
|
12
|
-
}
|
|
14
|
+
cpNode = cpNode.next;
|
|
15
|
+
} while (cpNode !== cpStart);
|
|
13
16
|
return undefined;
|
|
14
17
|
}
|
|
15
18
|
export { findFirst };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-first.js","sourceRoot":"","sources":["../../../src/cp-node/fs/find-first.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"find-first.js","sourceRoot":"","sources":["../../../src/cp-node/fs/find-first.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,SAAS,SAAS,CACV,CAA8B,EAC9B,MAAc;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC;IAEvB,GAAG,CAAC;QACA,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,CAAC,QAAQ,MAAM,KAAK,OAAO,EAAE;IAE7B,OAAO,SAAS,CAAC;AACrB,CAAC;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
function getAllOnLoop(cpNode) {
|
|
6
6
|
const cpStart = cpNode;
|
|
7
|
-
const cpNodes = [
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
7
|
+
const cpNodes = [];
|
|
8
|
+
do {
|
|
9
|
+
cpNodes.push(cpNode);
|
|
10
|
+
cpNode = cpNode.next;
|
|
11
|
+
} while (cpNode !== cpStart);
|
|
13
12
|
return cpNodes;
|
|
14
13
|
}
|
|
15
14
|
export { getAllOnLoop };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-all-on-loop.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-all-on-loop.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,SAAS,YAAY,CACb,MAAc;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,OAAO,GAAa,
|
|
1
|
+
{"version":3,"file":"get-all-on-loop.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-all-on-loop.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,SAAS,YAAY,CACb,MAAc;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,GAAG,CAAC;QACA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,CAAC,QAAQ,MAAM,KAAK,OAAO,EAAE;IAE7B,OAAO,OAAO,CAAC;AACnB,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-edge-direction.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-edge-direction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-edge-direction.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-edge-direction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAG/E;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACpC,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IAE7C,MAAM,GAAG,GAAG,MAAM,CAAC;IACnB,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;IAEhC,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC;IACjC,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC;IAEjC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAElB,IAAI,IAAI,CAAC;IAET,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY;QACjD,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,eAAe,CAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC,iBAAiB;QAC/D,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,MAAa,CAAC;QAClB,IAAI,MAAa,CAAC;QAElB,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;YACpB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,MAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,OAAO,CAAE,YAAY,CAAC,OAAO,CAAC,MAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;QAE7D,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,+DAA+D;QAC/D,oEAAoE;QACpE,iBAAiB;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC;QAElC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,GAAG,SAAS,CACf,YAAY,CAAC,IAAI,CAAC,EAClB,YAAY,CACf,CAAC;IAEF,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-on-same-circle.js","sourceRoot":"","sources":["../../../src/cp-node/fs/is-on-same-circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD
|
|
1
|
+
{"version":3,"file":"is-on-same-circle.js","sourceRoot":"","sources":["../../../src/cp-node/fs/is-on-same-circle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;;;;GAMG;AACH,SAAS,cAAc,CACf,OAAe,EACf,OAAe;IAEnB,iDAAiD;IACjD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAExC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAGD,OAAO,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Curve } from '
|
|
1
|
+
import type { Curve } from 'flo-boolean';
|
|
2
2
|
/** @internal */
|
|
3
3
|
declare function dullCorner(g: SVGGElement, curve: Curve, classes?: string, delay?: number, scaleFactor?: number): SVGCircleElement[];
|
|
4
4
|
export { dullCorner };
|
|
@@ -2,7 +2,7 @@ import { drawFs } from 'flo-draw';
|
|
|
2
2
|
/** @internal */
|
|
3
3
|
function dullCorner(g, curve, classes = 'orange', delay = 0, scaleFactor = 1) {
|
|
4
4
|
const ps = curve.ps;
|
|
5
|
-
const p =
|
|
5
|
+
const p = ps[ps.length - 1];
|
|
6
6
|
const $pos = drawFs.dot(g, p, 0.1 * 0.5 * scaleFactor, classes, delay);
|
|
7
7
|
return $pos;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draw-dull-corner.js","sourceRoot":"","sources":["../../../../src/debug/functions/draw-elem/draw-dull-corner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"draw-dull-corner.js","sourceRoot":"","sources":["../../../../src/debug/functions/draw-elem/draw-dull-corner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,gBAAgB;AAChB,SAAS,UAAU,CACX,CAAc,EACd,KAAY,EACZ,OAAO,GAAG,QAAQ,EAClB,KAAK,GAAG,CAAC,EACT,WAAW,GAAG,CAAC;IAEnB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAC,GAAG,GAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAEnE,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Curve } from '
|
|
1
|
+
import type { Curve } from 'flo-boolean';
|
|
2
2
|
/** @internal */
|
|
3
3
|
declare function sharpCorner(g: SVGGElement, curve: Curve, classes?: string, delay?: number, scaleFactor?: number): SVGCircleElement[];
|
|
4
4
|
export { sharpCorner };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { drawFs } from 'flo-draw';
|
|
2
2
|
/** @internal */
|
|
3
3
|
function sharpCorner(g, curve, classes = 'green', delay = 0, scaleFactor = 1) {
|
|
4
|
-
const
|
|
4
|
+
const { ps } = curve;
|
|
5
|
+
const p = ps[ps.length - 1];
|
|
5
6
|
const $pos = drawFs.dot(g, p, 0.6 * scaleFactor, 'green', delay);
|
|
6
7
|
return $pos;
|
|
7
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draw-sharp-corner.js","sourceRoot":"","sources":["../../../../src/debug/functions/draw-elem/draw-sharp-corner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"draw-sharp-corner.js","sourceRoot":"","sources":["../../../../src/debug/functions/draw-elem/draw-sharp-corner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,gBAAgB;AAChB,SAAS,WAAW,CACZ,CAAc,EACd,KAAY,EACZ,OAAO,GAAG,OAAO,EACjB,KAAK,GAAG,CAAC,EACT,WAAW,GAAG,CAAC;IAEnB,MAAM,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAE/D,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -37,10 +37,15 @@ function findMats(bezierLoops, options) {
|
|
|
37
37
|
...(options || {})
|
|
38
38
|
});
|
|
39
39
|
const { applySat, simplify, satScale, simplifyTolerance } = options_;
|
|
40
|
-
const loopss = simplifyPaths(bezierLoops);
|
|
40
|
+
const loopss = simplifyPaths(bezierLoops, undefined, { forceOrientationNegative: true });
|
|
41
41
|
// console.log(loopsToSvgPathStr(bezierLoops));
|
|
42
|
+
// console.log(loopsToSvgPathStr(loopss[0].map(loop => loop.beziers.map(ps => ps.map(p => p.map(c => Math.round(c*1)/1))))));
|
|
43
|
+
// console.log(loopsToSvgPathStr(loopss[1].map(loop => loop.beziers.map(ps => ps.map(p => p.map(c => Math.round(c*1)/1))))));
|
|
44
|
+
// console.log(loopsToSvgPathStr(loopss[0].map(loop => loop.beziers.map(ps => ps.map(p => p.map(c => Math.round(c*1000)/1000))))));
|
|
45
|
+
// console.log(loopsToSvgPathStr(loopss[1].map(loop => loop.beziers.map(ps => ps.map(p => p.map(c => Math.round(c*1000)/1000))))));
|
|
46
|
+
// console.log(loopss.map(loops => loops.map(loop => loop.beziers)));
|
|
47
|
+
// console.log(loopss.map(loops => loopsToSvgPathStr(loops.map(loop => loop.beziers))));
|
|
42
48
|
// const loopss = [bezierLoops.map(loop => loopFromBeziers(loop,0))];
|
|
43
|
-
// console.log(loopsToSvgPathStr(bezierLoops.map(v => v.map(v => v.map(v => v.map(v => v*2**4))))));
|
|
44
49
|
// console.log(loopsToSvgPathStr(bezierLoops.map(v => v.map(v => v.map(v => [-v[0],v[1]])))));
|
|
45
50
|
// console.log(loopsToSvgPathStr(loopss[0].map(loop => loop.beziers)));
|
|
46
51
|
const mats = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-mats.js","sourceRoot":"","sources":["../../src/find-mat/find-mats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAG,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAc,MAAM,kBAAkB,CAAC;AAGjE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,QAAQ,CACT,WAA2B,EAC3B,OAAoB;IAExB,+EAA+E;IAC/E,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAyB,WAAW,CAC9C,aAAa,EACb,SAAS,EAAE;QACX,GAAG,iBAAiB;QACpB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACrB,CAAC,CAAC;IAEH,MAAM,EACF,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,iBAAiB,EAC9B,GAAG,QAAQ,CAAC;IAGb,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"find-mats.js","sourceRoot":"","sources":["../../src/find-mat/find-mats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAG,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAc,MAAM,kBAAkB,CAAC;AAGjE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,QAAQ,CACT,WAA2B,EAC3B,OAAoB;IAExB,+EAA+E;IAC/E,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAyB,WAAW,CAC9C,aAAa,EACb,SAAS,EAAE;QACX,GAAG,iBAAiB;QACpB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACrB,CAAC,CAAC;IAEH,MAAM,EACF,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,iBAAiB,EAC9B,GAAG,QAAQ,CAAC;IAGb,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzF,+CAA+C;IAC/C,6HAA6H;IAC7H,6HAA6H;IAC7H,mIAAmI;IACnI,mIAAmI;IACnI,qEAAqE;IACrE,wFAAwF;IACxF,qEAAqE;IACrE,8FAA8F;IAC9F,uEAAuE;IAEvE,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAEpC,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAA;QACjD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAID;;;;GAIG;AACH,SAAS,iBAAiB,CAClB,KAAqB;IAEzB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,GAAG,GAAG,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACjD,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Loop } from 'flo-boolean';
|
|
1
|
+
import type { Loop } from 'flo-boolean';
|
|
2
|
+
import type { CpNode } from '../cp-node/cp-node.js';
|
|
3
|
+
import type { TriMap } from '../utils/tri-map.js';
|
|
4
|
+
import type { MatMeta } from '../mat/mat-meta.js';
|
|
2
5
|
import { LlRbTree } from 'flo-ll-rb-tree';
|
|
3
|
-
import { CpNode } from '../cp-node/cp-node.js';
|
|
4
|
-
import { TriMap } from '../utils/tri-map.js';
|
|
5
|
-
import { MatMeta } from '../mat/mat-meta.js';
|
|
6
6
|
/** @internal */
|
|
7
7
|
declare function getPointToCpNode(loops: Loop[], cpTrees: Map<Loop, LlRbTree<CpNode>>): TriMap<Loop, number, number, CpNode>;
|
|
8
8
|
/** @internal */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { TriMapFs } from '../utils/tri-map.js';
|
|
1
2
|
import { getBoundingHull, getBoundingBoxTight } from 'flo-bezier3';
|
|
2
3
|
import { getBoundingBox$ } from '../geometry/get-bounding-box-.js';
|
|
3
|
-
import { TriMapFs } from '../utils/tri-map.js';
|
|
4
4
|
import { getCorner } from '../corner/get-corner.js';
|
|
5
5
|
let timingStart;
|
|
6
6
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-meta.js","sourceRoot":"","sources":["../../src/find-mat/get-meta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-meta.js","sourceRoot":"","sources":["../../src/find-mat/get-meta.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Canonical circle representation.
|
|
3
3
|
*/
|
|
4
4
|
interface Circle {
|
|
5
|
-
center: number[];
|
|
6
|
-
radius: number;
|
|
5
|
+
readonly center: number[];
|
|
6
|
+
readonly radius: number;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* Returns a scaled version of the given circle without changing its center.
|
|
@@ -17,4 +17,5 @@ declare function scaleCircle(circle: Circle, s: number): Circle;
|
|
|
17
17
|
* @param c2
|
|
18
18
|
*/
|
|
19
19
|
declare function engulfsCircle(c1: Circle, c2: Circle): boolean;
|
|
20
|
-
export { Circle
|
|
20
|
+
export type { Circle };
|
|
21
|
+
export { scaleCircle, engulfsCircle };
|
package/node/geometry/circle.js
CHANGED
|
@@ -21,12 +21,5 @@ function engulfsCircle(c1, c2) {
|
|
|
21
21
|
const δ = dr * dr;
|
|
22
22
|
return δ > d;
|
|
23
23
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Returns a human-readable string description of the given circle.
|
|
26
|
-
* @param circle
|
|
27
|
-
*/
|
|
28
|
-
function toString(circle) {
|
|
29
|
-
return 'c: ' + circle.center + ' r: ' + circle.radius;
|
|
30
|
-
}
|
|
31
24
|
export { scaleCircle, engulfsCircle };
|
|
32
25
|
//# sourceMappingURL=circle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circle.js","sourceRoot":"","sources":["../../src/geometry/circle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAYtD;;;;GAIG;AACH,SAAS,WAAW,CAAC,MAAc,EAAE,CAAS;IAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AAChE,CAAC;AAGD;;;;GAIG;AACH,SAAS,aAAa,CAAC,EAAU,EAAE,EAAU;IACzC,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,GAAG,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACjC,MAAM,CAAC,GAAG,EAAE,GAAC,EAAE,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"circle.js","sourceRoot":"","sources":["../../src/geometry/circle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAYtD;;;;GAIG;AACH,SAAS,WAAW,CAAC,MAAc,EAAE,CAAS;IAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AAChE,CAAC;AAGD;;;;GAIG;AACH,SAAS,aAAa,CAAC,EAAU,EAAE,EAAU;IACzC,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,GAAG,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACjC,MAAM,CAAC,GAAG,EAAE,GAAC,EAAE,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAID,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAA"}
|
package/node/index.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
+
export type { Curve, Loop } from 'flo-boolean';
|
|
1
2
|
export { loopFromBeziers, beziersToSvgPathStr, getPathsFromStr } from 'flo-boolean';
|
|
2
3
|
export type { MatMeta } from './mat/mat-meta.js';
|
|
3
|
-
export type { Loop } from 'flo-boolean';
|
|
4
4
|
export type { Mat } from './mat/mat.js';
|
|
5
|
-
export type { Curve } from './curve/curve.js';
|
|
6
5
|
export type { CpNode } from './cp-node/cp-node.js';
|
|
7
6
|
export type { PointOnShape } from './point-on-shape/point-on-shape.js';
|
|
8
7
|
export type { Circle } from './geometry/circle.js';
|
|
@@ -82,3 +81,4 @@ export { getSpeed } from './cp-node/fs/get-speed.js';
|
|
|
82
81
|
export { getSmoothedSpeed$ } from './cp-node/fs/get-smoothed-speed.js';
|
|
83
82
|
export { getInitialDegAngleBetweenMatCurves } from './cp-node/fs/get-angle-between-mat-curves.js';
|
|
84
83
|
export { getAllVertices } from './cp-node/fs/get-all-vertices.js';
|
|
84
|
+
export { isTrivial } from './cp-node/fs/is-trivial.js';
|
package/node/index.js
CHANGED
|
@@ -67,4 +67,5 @@ export { getSpeed } from './cp-node/fs/get-speed.js';
|
|
|
67
67
|
export { getSmoothedSpeed$ } from './cp-node/fs/get-smoothed-speed.js';
|
|
68
68
|
export { getInitialDegAngleBetweenMatCurves } from './cp-node/fs/get-angle-between-mat-curves.js';
|
|
69
69
|
export { getAllVertices } from './cp-node/fs/get-all-vertices.js';
|
|
70
|
+
export { isTrivial } from './cp-node/fs/is-trivial.js';
|
|
70
71
|
//# sourceMappingURL=index.js.map
|
package/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Curve } from '
|
|
1
|
+
import type { Curve } from 'flo-boolean';
|
|
2
2
|
/**
|
|
3
3
|
* @internal
|
|
4
4
|
* Represents a part of a bezier within the shape boundary.
|
|
5
5
|
*/
|
|
6
6
|
interface CurvePiece {
|
|
7
7
|
/** A bezier curve within the shape boundary. */
|
|
8
|
-
curve: Curve;
|
|
8
|
+
readonly curve: Curve;
|
|
9
9
|
/** The start and end t parameter values of the bezier curve. */
|
|
10
|
-
ts: number[];
|
|
10
|
+
readonly ts: number[];
|
|
11
11
|
}
|
|
12
12
|
export { CurvePiece };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CpNode } from '../cp-node/cp-node.js';
|
|
2
|
-
import { CurvePiece } from './curve-piece.js';
|
|
1
|
+
import type { CpNode } from '../cp-node/cp-node.js';
|
|
2
|
+
import type { CurvePiece } from './curve-piece.js';
|
|
3
3
|
/**
|
|
4
4
|
* @internal
|
|
5
5
|
* Returns the ordered cubic bezier pieces (i.e a bezier with a t range)
|
package/node/mat/mat-meta.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import type { Loop } from 'flo-boolean';
|
|
2
|
+
import type { CpNode } from '../cp-node/cp-node.js';
|
|
3
|
+
import type { Curve } from 'flo-boolean';
|
|
4
|
+
import type { TriMap } from '../utils/tri-map.js';
|
|
1
5
|
import { LlRbTree } from 'flo-ll-rb-tree';
|
|
2
|
-
import { Loop } from 'flo-boolean';
|
|
3
|
-
import { CpNode } from '../cp-node/cp-node.js';
|
|
4
|
-
import { Curve } from '../curve/curve.js';
|
|
5
|
-
import { TriMap } from '../utils/tri-map.js';
|
|
6
6
|
interface MatMeta {
|
|
7
7
|
readonly maxCoordinate: number;
|
|
8
8
|
readonly squaredDiagonalLength: number;
|