flo-mat 3.0.6 → 3.0.9
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/fs/add-distance-from.spec.ts +7 -0
- package/__tests__/cp-node/fs/check-jsog-eql-calc.spec.ts +30 -0
- package/__tests__/cp-node/fs/clone.spec.ts +7 -0
- package/__tests__/cp-node/fs/cp-nodes-to-boundary-beziers.spec.ts +7 -0
- package/__tests__/cp-node/fs/create-cp-node.spec.ts +7 -0
- package/__tests__/cp-node/fs/enhance-cp-node.spec.ts +7 -0
- package/__tests__/cp-node/fs/find-first.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-all-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-all-on-circle.spec.ts +92 -0
- package/__tests__/cp-node/fs/get-all-on-loop.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-all-vertices.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-angle-between-mat-curves.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-avg-speed.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-boundary-bezier-parts-to-next.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-boundary-beziers-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-boundary-beziers-to-next.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-boundary-distance-to-next.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-branch-beziers.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-branch.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-children.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-cp-node-ordering.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-distance-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-distance-to-next.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-edge-direction.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-first-exit.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-hole-closers.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-implied-boundary-bezier-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-mat-curve-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-mat-curve-to-next.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-mat-curves-between.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-non-terminating-on-circle.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-prong-count.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-real-prong-count.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-salience.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-smoothed-speed.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-smoothed.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-speed.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-terminating-on-circle.spec.ts +7 -0
- package/__tests__/cp-node/fs/get-vertex-forward-children.spec.ts +7 -0
- package/__tests__/cp-node/fs/insert-cp-node.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-fully-terminating.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-on-same-circle.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-one-prong.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-order-correct.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-sharp.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-single-3-prong.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-special.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-terminating.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-trivial.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-two-prong.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-vertex-special.spec.ts +7 -0
- package/__tests__/cp-node/fs/is-vertex.spec.ts +7 -0
- package/__tests__/cp-node/fs/iterate-all-on-loop.spec.ts +7 -0
- package/__tests__/cp-node/fs/mat-dummys.ts +6716 -0
- package/__tests__/cp-node/fs/remove-cp-node.spec.ts +7 -0
- package/__tests__/cp-node/fs/traverse-all-forward.spec.ts +7 -0
- package/__tests__/cp-node/fs/traverse-cp.spec.ts +7 -0
- package/__tests__/cp-node/fs/traverse-edges.spec.ts +7 -0
- package/__tests__/cp-node/fs/traverse-vertices.spec.ts +7 -0
- package/__tests__/lib-load.spec.ts +9 -10
- package/browser/index.js +259 -174
- package/browser/index.min.js +1 -1
- package/jest.config.cjs +32 -0
- package/node/corner/get-interface-ccw.js +0 -1
- package/node/corner/get-interface-ccw.js.map +1 -1
- package/node/cp-node/cp-node-fs.d.ts +43 -43
- package/node/cp-node/cp-node-fs.js +43 -43
- package/node/cp-node/cp-node.d.ts +27 -35
- package/node/cp-node/fs/clone.d.ts +3 -3
- package/node/cp-node/fs/clone.js +3 -3
- package/node/cp-node/fs/enhance-cp-node.d.ts +1 -5
- package/node/cp-node/fs/enhance-cp-node.js.map +1 -1
- package/node/cp-node/fs/get-all-between.d.ts +3 -3
- package/node/cp-node/fs/get-all-between.js +3 -3
- package/node/cp-node/fs/get-all-between.js.map +1 -1
- package/node/cp-node/fs/get-all-on-circle.d.ts +7 -1
- package/node/cp-node/fs/get-all-on-circle.js +11 -7
- package/node/cp-node/fs/get-all-on-circle.js.map +1 -1
- package/node/cp-node/fs/get-all-on-loop.d.ts +1 -1
- package/node/cp-node/fs/get-all-on-loop.js.map +1 -1
- package/node/cp-node/fs/get-boundary-bezier-parts-to-next.d.ts +12 -3
- package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js +22 -7
- package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js.map +1 -1
- package/node/cp-node/fs/get-boundary-beziers-between.d.ts +1 -1
- package/node/cp-node/fs/get-boundary-beziers-between.js.map +1 -1
- package/node/cp-node/fs/get-boundary-beziers-to-next.js.map +1 -1
- package/node/cp-node/fs/insert-cp-node.d.ts +3 -1
- package/node/cp-node/fs/insert-cp-node.js +12 -2
- package/node/cp-node/fs/insert-cp-node.js.map +1 -1
- package/node/cp-node/fs/is-fully-terminating.d.ts +7 -0
- package/node/cp-node/fs/is-fully-terminating.js +7 -0
- package/node/cp-node/fs/is-fully-terminating.js.map +1 -1
- package/node/cp-node/fs/is-terminating.d.ts +1 -1
- package/node/cp-node/fs/remove-cp-node.d.ts +3 -4
- package/node/cp-node/fs/remove-cp-node.js +3 -1
- package/node/cp-node/fs/remove-cp-node.js.map +1 -1
- package/node/curve/curve.d.ts +18 -11
- package/node/find-2-prong/add-1-prong.js +1 -1
- package/node/find-2-prong/add-1-prong.js.map +1 -1
- package/node/find-2-prong/add-2-prong.js +9 -7
- package/node/find-2-prong/add-2-prong.js.map +1 -1
- package/node/find-2-prong/calc-seperation-tolerance.d.ts +8 -1
- package/node/find-2-prong/calc-seperation-tolerance.js +73 -59
- package/node/find-2-prong/calc-seperation-tolerance.js.map +1 -1
- package/node/find-2-prong/find-2-prong.js +2 -2
- package/node/find-2-prong/find-2-prong.js.map +1 -1
- package/node/find-2-prong/get-initial-bezier-pieces.d.ts +2 -3
- package/node/find-2-prong/get-initial-bezier-pieces.js +4 -1
- package/node/find-2-prong/get-initial-bezier-pieces.js.map +1 -1
- package/node/find-3-prong.ts/find-and-add-3-prong.js +1 -1
- package/node/find-3-prong.ts/find-and-add-3-prong.js.map +1 -1
- package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.d.ts +2 -2
- package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.js +8 -3
- package/node/find-3-prong.ts/find-and-add-3-prongs-on-loop.js.map +1 -1
- package/node/find-mat/create-initial-cp-tree.d.ts +7 -3
- package/node/find-mat/create-initial-cp-tree.js +7 -5
- package/node/find-mat/create-initial-cp-tree.js.map +1 -1
- package/node/find-mat/find-mat.d.ts +2 -1
- package/node/find-mat/find-mat.js +14 -4
- package/node/find-mat/find-mat.js.map +1 -1
- package/node/find-mat/get-meta.d.ts +5 -2
- package/node/find-mat/get-meta.js +15 -14
- package/node/find-mat/get-meta.js.map +1 -1
- package/node/index.d.ts +1 -1
- package/node/index.js +1 -1
- package/node/index.js.map +1 -1
- package/node/mat/add-to-cp-tree.d.ts +5 -6
- package/node/mat/add-to-cp-tree.js +5 -2
- package/node/mat/add-to-cp-tree.js.map +1 -1
- package/node/mat/get-branches.d.ts +7 -0
- package/node/mat/get-branches.js +7 -0
- package/node/mat/get-branches.js.map +1 -1
- package/node/mat/mat-meta.d.ts +8 -1
- package/node/mat/mat.d.ts +3 -3
- package/node/mat/simplify-mat.js +1 -1
- package/node/mat/simplify-mat.js.map +1 -1
- package/node/point-on-shape/compare-poss.d.ts +3 -3
- package/node/point-on-shape/compare-poss.js +3 -3
- package/node/point-on-shape/get-osculating-circle.d.ts +1 -1
- package/node/point-on-shape/get-osculating-circle.js +1 -1
- package/node/point-on-shape/point-on-shape.d.ts +1 -1
- package/node/point-on-shape/pos-to-human-string.d.ts +1 -1
- package/node/point-on-shape/pos-to-human-string.js +1 -1
- package/node/sat/to-scale-axis.d.ts +1 -1
- package/node/sat/to-scale-axis.js +1 -1
- package/node/vertex/remove-vertex.d.ts +3 -4
- package/node/vertex/remove-vertex.js +3 -2
- package/node/vertex/remove-vertex.js.map +1 -1
- package/package.json +9 -6
- package/src/corner/get-interface-ccw.ts +0 -1
- package/src/cp-node/cp-node-fs.ts +43 -43
- package/src/cp-node/cp-node.ts +27 -39
- package/src/cp-node/fs/clone.ts +3 -3
- package/src/cp-node/fs/enhance-cp-node.ts +0 -1
- package/src/cp-node/fs/get-all-between.ts +31 -28
- package/src/cp-node/fs/get-all-on-circle.ts +13 -8
- package/src/cp-node/fs/get-all-on-loop.ts +12 -10
- package/src/cp-node/fs/get-boundary-bezier-parts-to-next.ts +39 -22
- package/src/cp-node/fs/get-boundary-beziers-between.ts +6 -2
- package/src/cp-node/fs/get-boundary-beziers-to-next.ts +6 -4
- package/src/cp-node/fs/insert-cp-node.ts +13 -2
- package/src/cp-node/fs/is-fully-terminating.ts +7 -0
- package/src/cp-node/fs/is-terminating.ts +1 -1
- package/src/cp-node/fs/remove-cp-node.ts +8 -4
- package/src/curve/curve.ts +19 -13
- package/src/debug/functions/check-ordering.ts +7 -3
- package/src/find-2-prong/add-1-prong.ts +1 -1
- package/src/find-2-prong/add-2-prong.ts +79 -74
- package/src/find-2-prong/calc-seperation-tolerance.ts +88 -78
- package/src/find-2-prong/find-2-prong.ts +2 -2
- package/src/find-2-prong/get-initial-bezier-pieces.ts +5 -1
- package/src/find-3-prong.ts/add-3-prong.ts +73 -70
- package/src/find-3-prong.ts/find-and-add-3-prong.ts +1 -1
- package/src/find-3-prong.ts/find-and-add-3-prongs-on-loop.ts +9 -8
- package/src/find-mat/create-initial-cp-tree.ts +10 -6
- package/src/find-mat/find-mat.ts +18 -5
- package/src/find-mat/get-meta.ts +36 -20
- package/src/get-curve/get-curve-between.ts +2 -2
- package/src/index.ts +1 -1
- package/src/mat/add-to-cp-tree.ts +18 -9
- package/src/mat/get-branches.ts +35 -28
- package/src/mat/mat-meta.ts +6 -1
- package/src/mat/mat.ts +3 -3
- package/src/mat/simplify-mat.ts +1 -1
- package/src/point-on-shape/compare-poss.ts +3 -3
- package/src/point-on-shape/get-osculating-circle.ts +1 -1
- package/src/point-on-shape/point-on-shape.ts +1 -1
- package/src/point-on-shape/pos-to-human-string.ts +1 -1
- package/src/sat/to-scale-axis.ts +1 -1
- package/src/vertex/remove-vertex.ts +7 -5
- package/.mocharc.cjs +0 -17
- package/src/debug/functions/draw-elem/branch.ts +0 -26
- package/src/find-mat/create-initial-cp-graph.ts +0 -59
package/src/sat/to-scale-axis.ts
CHANGED
|
@@ -20,7 +20,7 @@ import { getSatCulls } from './get-sat-culls.js';
|
|
|
20
20
|
* boundary of the shape. The SAT is a simplification of the MAT that preserves
|
|
21
21
|
* less detail the higher the applied scale factor. The severity at which noise
|
|
22
22
|
* are removed depends on the local scale of the shape.
|
|
23
|
-
* @param mat The Medial Axis Transform (
|
|
23
|
+
* @param mat The Medial Axis Transform (`Mat`) on which to apply the SAT.
|
|
24
24
|
* @param s The scale factor >= 1 (e.g. 1.3)
|
|
25
25
|
*/
|
|
26
26
|
function toScaleAxis(
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Loop } from 'flo-boolean';
|
|
2
|
-
import { LlRbTree } from 'flo-ll-rb-tree';
|
|
3
|
-
import { CpNode } from "../cp-node/cp-node.js";
|
|
1
|
+
// import { Loop } from 'flo-boolean';
|
|
2
|
+
// import { LlRbTree } from 'flo-ll-rb-tree';
|
|
3
|
+
import type { CpNode } from "../cp-node/cp-node.js";
|
|
4
|
+
import type { MatMeta } from '../mat/mat-meta.js';
|
|
4
5
|
import { getAllOnCircle } from '../cp-node/fs/get-all-on-circle.js';
|
|
5
6
|
import { getProngCount } from '../cp-node/fs/get-prong-count.js';
|
|
6
7
|
import { removeCpNode } from '../cp-node/fs/remove-cp-node.js';
|
|
@@ -8,14 +9,15 @@ import { removeCpNode } from '../cp-node/fs/remove-cp-node.js';
|
|
|
8
9
|
|
|
9
10
|
function removeVertex(
|
|
10
11
|
cpNode: CpNode,
|
|
11
|
-
|
|
12
|
+
meta: MatMeta): void {
|
|
13
|
+
// cpTrees: Map<Loop, LlRbTree<CpNode>>): void {
|
|
12
14
|
|
|
13
15
|
const prongCount = getProngCount(cpNode);
|
|
14
16
|
if (prongCount !== 2) {
|
|
15
17
|
throw new Error(`Cannot delete \`CpNode\` on ${prongCount}-prong`)
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
getAllOnCircle(cpNode).forEach(cpNode => removeCpNode(cpNode,
|
|
20
|
+
getAllOnCircle(cpNode).forEach(cpNode => removeCpNode(cpNode, meta));
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
|
package/.mocharc.cjs
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
extension: ['ts', 'tsx'],
|
|
5
|
-
spec: ['__tests__/**/*.spec.ts'],
|
|
6
|
-
recursive: true,
|
|
7
|
-
loader: ['ts-node/esm'],
|
|
8
|
-
// slow: '75',
|
|
9
|
-
// timeout: '2000',
|
|
10
|
-
// ignore: ['/path/to/some/ignored/file'],
|
|
11
|
-
color: true,
|
|
12
|
-
diff: true,
|
|
13
|
-
exit: false,
|
|
14
|
-
parallel: true,
|
|
15
|
-
timeout: '2000',
|
|
16
|
-
'v8-stack-trace-limit': 100 // V8 flags are prepended with "v8-"
|
|
17
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { drawFs } from 'flo-draw';
|
|
2
|
-
import { CpNode, isTerminating } from '../../../cp-node/cp-node.js';
|
|
3
|
-
import { getCurveToNext } from '../../../cp-node/get-curve-to-next.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
/** @internal */
|
|
7
|
-
function drawBranch(g: SVGGElement, branch: CpNode[], delay?: number) {
|
|
8
|
-
|
|
9
|
-
const classes = 'thin5 purple nofill';
|
|
10
|
-
|
|
11
|
-
const $svgs: SVGElement[] = [];
|
|
12
|
-
let i = 0;
|
|
13
|
-
|
|
14
|
-
for (const cpNode of branch) {
|
|
15
|
-
if (isTerminating(cpNode)) { continue; }
|
|
16
|
-
const bezier = getCurveToNext(cpNode);
|
|
17
|
-
if (!bezier) { continue; }
|
|
18
|
-
i++;
|
|
19
|
-
$svgs.push( ...drawFs.bezier(g, bezier, classes, delay));
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return $svgs;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export { drawBranch }
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { LlRbTree } from 'flo-ll-rb-tree';
|
|
2
|
-
import { Loop } from 'flo-boolean';
|
|
3
|
-
import { CpNode, cpNodeComparator, insertCpNode } from '../cp-node/cp-node.js';
|
|
4
|
-
import { PointOnShape } from '../point-on-shape/point-on-shape.js';
|
|
5
|
-
import { ContactPoint } from '../contact-point/contact-point.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @internal
|
|
10
|
-
* Creates the initial ContactPoint loops from the given sharp corners.
|
|
11
|
-
* @param shape
|
|
12
|
-
* @param sharpCornerss
|
|
13
|
-
*/
|
|
14
|
-
function createInitialCpGraph(
|
|
15
|
-
loops: Loop[],
|
|
16
|
-
cpTrees: Map<Loop, LlRbTree<CpNode>>,
|
|
17
|
-
sharpCornerss: PointOnShape[][]/*,
|
|
18
|
-
xMap: Map<number[][],{ ps: number[][] }>*/) {
|
|
19
|
-
|
|
20
|
-
let cpNode;
|
|
21
|
-
|
|
22
|
-
for (let k=0; k<sharpCornerss.length; k++) {
|
|
23
|
-
const sharpCorners = sharpCornerss[k];
|
|
24
|
-
|
|
25
|
-
const cpTree = new LlRbTree(cpNodeComparator, false);
|
|
26
|
-
|
|
27
|
-
let cpNode1: CpNode = undefined!;
|
|
28
|
-
let cpNode2: CpNode = undefined!;
|
|
29
|
-
for (const pos of sharpCorners) {
|
|
30
|
-
const ps = pos.curve.next.ps;
|
|
31
|
-
//const x = xMap.get(ps);
|
|
32
|
-
//const isIntersection = !!x;
|
|
33
|
-
|
|
34
|
-
const circle = { center: pos.p, radius: 0 };
|
|
35
|
-
|
|
36
|
-
const cp1: ContactPoint = { pointOnShape: pos, circle, order: -1, order2: 0 };
|
|
37
|
-
const cp2: ContactPoint = { pointOnShape: pos, circle, order: +1, order2: 0 };
|
|
38
|
-
|
|
39
|
-
cpNode1 = insertCpNode(false, /*isIntersection*/ false, cpTree, cp1, cpNode2!);
|
|
40
|
-
cpNode2 = insertCpNode(false, /*isIntersection*/ false, cpTree, cp2, cpNode1);
|
|
41
|
-
|
|
42
|
-
cpNode1.prevOnCircle = cpNode2;
|
|
43
|
-
cpNode2.prevOnCircle = cpNode1;
|
|
44
|
-
|
|
45
|
-
cpNode1.nextOnCircle = cpNode2;
|
|
46
|
-
cpNode2.nextOnCircle = cpNode1;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (!cpNode) { cpNode = cpNode1; }
|
|
50
|
-
|
|
51
|
-
const loop = loops[k];
|
|
52
|
-
cpTrees.set(loop, cpTree);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return cpNode;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
export { createInitialCpGraph }
|