flo-mat 3.0.7 → 3.0.10
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 +215 -208
- package/browser/index.min.js +1 -1
- package/node/closest-boundary-point/cull-bezier-pieces.d.ts +5 -4
- package/node/closest-boundary-point/cull-bezier-pieces.js +9 -8
- package/node/closest-boundary-point/cull-bezier-pieces.js.map +1 -1
- package/node/closest-boundary-point/cull-by-loose-bounding-box.d.ts +2 -2
- package/node/closest-boundary-point/cull-by-loose-bounding-box.js +8 -8
- package/node/closest-boundary-point/cull-by-loose-bounding-box.js.map +1 -1
- package/node/closest-boundary-point/cull-by-tight-boundary-box.d.ts +2 -2
- package/node/closest-boundary-point/cull-by-tight-boundary-box.js +8 -8
- package/node/closest-boundary-point/cull-by-tight-boundary-box.js.map +1 -1
- package/node/closest-boundary-point/get-best-distance-squared.d.ts +1 -1
- package/node/closest-boundary-point/get-best-distance-squared.js +6 -6
- package/node/closest-boundary-point/get-best-distance-squared.js.map +1 -1
- package/node/closest-boundary-point/get-close-boundary-points-certified.d.ts +2 -2
- package/node/closest-boundary-point/get-close-boundary-points-certified.js +7 -7
- package/node/closest-boundary-point/get-close-boundary-points-certified.js.map +1 -1
- package/node/cp-node/cp-node-fs.d.ts +11 -11
- package/node/cp-node/cp-node-fs.js +11 -11
- package/node/cp-node/cp-node.d.ts +15 -15
- package/node/cp-node/fs/get-boundary-bezier-parts-to-next.d.ts +1 -1
- package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js +11 -16
- package/node/cp-node/fs/get-boundary-bezier-parts-to-next.js.map +1 -1
- package/node/cp-node/fs/get-boundary-beziers-between.js +4 -6
- package/node/cp-node/fs/get-boundary-beziers-between.js.map +1 -1
- package/node/cp-node/fs/get-boundary-beziers-to-next.d.ts +10 -1
- package/node/cp-node/fs/get-boundary-beziers-to-next.js +70 -35
- package/node/cp-node/fs/get-boundary-beziers-to-next.js.map +1 -1
- package/node/cp-node/fs/get-salience.js +2 -2
- package/node/cp-node/fs/get-salience.js.map +1 -1
- package/node/cp-node/fs/get-speed.js +0 -1
- package/node/cp-node/fs/get-speed.js.map +1 -1
- package/node/find-2-prong/cull-bezier-pieces.d.ts +4 -4
- package/node/find-2-prong/cull-bezier-pieces.js +9 -9
- package/node/find-2-prong/cull-bezier-pieces.js.map +1 -1
- package/node/find-2-prong/find-2-prong.js +8 -8
- package/node/find-2-prong/find-2-prong.js.map +1 -1
- package/node/find-2-prong/get-initial-bezier-pieces.d.ts +2 -2
- package/node/find-2-prong/get-initial-bezier-pieces.js +2 -2
- package/node/find-2-prong/get-initial-bezier-pieces.js.map +1 -1
- package/node/find-2-prong/reduce-radius.d.ts +1 -1
- package/node/find-2-prong/reduce-radius.js +5 -5
- package/node/find-2-prong/reduce-radius.js.map +1 -1
- package/node/find-3-prong.ts/calc-better-x.d.ts +2 -2
- package/node/find-3-prong.ts/calc-better-x.js +3 -3
- package/node/find-3-prong.ts/calc-better-x.js.map +1 -1
- package/node/find-3-prong.ts/calc-initial-3-prong-center.d.ts +2 -2
- package/node/find-3-prong.ts/calc-initial-3-prong-center.js +3 -3
- package/node/find-3-prong.ts/calc-initial-3-prong-center.js.map +1 -1
- package/node/find-3-prong.ts/find-3-prong-for-delta3s.d.ts +2 -2
- package/node/find-3-prong.ts/find-3-prong-for-delta3s.js +16 -16
- package/node/find-3-prong.ts/find-3-prong-for-delta3s.js.map +1 -1
- package/node/find-3-prong.ts/find-3-prong.js +2 -2
- package/node/find-3-prong.ts/find-3-prong.js.map +1 -1
- package/node/find-3-prong.ts/get-closest-points.d.ts +2 -2
- package/node/find-3-prong.ts/get-closest-points.js +4 -4
- package/node/find-3-prong.ts/get-closest-points.js.map +1 -1
- package/node/find-mat/find-mat.js +4 -0
- package/node/find-mat/find-mat.js.map +1 -1
- package/node/find-mat/get-meta.js.map +1 -1
- package/node/index.d.ts +1 -0
- package/node/index.js +1 -1
- package/node/index.js.map +1 -1
- package/node/mat/get-boundary-piece-beziers.js +7 -7
- package/node/mat/get-boundary-piece-beziers.js.map +1 -1
- package/node/mat/mat.d.ts +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/pos-to-human-string.d.ts +1 -1
- package/node/point-on-shape/pos-to-human-string.js +1 -1
- package/node/sat/cull.d.ts +7 -5
- package/node/sat/cull.js +7 -4
- package/node/sat/cull.js.map +1 -1
- package/node/sat/to-scale-axis.d.ts +3 -2
- package/node/sat/to-scale-axis.js +3 -2
- package/node/sat/to-scale-axis.js.map +1 -1
- package/package.json +5 -5
- package/src/closest-boundary-point/cull-bezier-pieces.ts +12 -11
- package/src/closest-boundary-point/cull-by-loose-bounding-box.ts +8 -8
- package/src/closest-boundary-point/cull-by-tight-boundary-box.ts +8 -8
- package/src/closest-boundary-point/get-best-distance-squared.ts +6 -6
- package/src/closest-boundary-point/get-close-boundary-points-certified.ts +8 -8
- package/src/cp-node/fs/get-boundary-bezier-parts-to-next.ts +12 -18
- package/src/cp-node/fs/get-boundary-beziers-between.ts +6 -7
- package/src/cp-node/fs/get-boundary-beziers-to-next.ts +79 -53
- package/src/cp-node/fs/get-salience.ts +2 -2
- package/src/cp-node/fs/get-speed.ts +1 -6
- package/src/curve/curve.ts +5 -5
- package/src/debug/functions/draw-elem/two-prong.ts +40 -40
- package/src/debug/functions/two-prong.ts +195 -195
- package/src/debug/two-prong-for-debugging.ts +26 -26
- package/src/find-2-prong/add-debug-info.ts +38 -38
- package/src/find-2-prong/cull-bezier-pieces.ts +10 -10
- package/src/find-2-prong/find-2-prong.ts +8 -8
- package/src/find-2-prong/get-initial-bezier-pieces.ts +2 -2
- package/src/find-2-prong/reduce-radius.ts +5 -5
- package/src/find-3-prong.ts/calc-better-x.ts +3 -3
- package/src/find-3-prong.ts/calc-initial-3-prong-center.ts +3 -3
- package/src/find-3-prong.ts/find-3-prong-for-delta3s.ts +16 -16
- package/src/find-3-prong.ts/find-3-prong.ts +2 -2
- package/src/find-3-prong.ts/get-closest-points.ts +4 -4
- package/src/find-mat/add-2-prongs-by-error.ts +7 -7
- package/src/find-mat/find-mat.ts +6 -0
- package/src/find-mat/get-meta.ts +7 -1
- package/src/index.ts +2 -2
- package/src/mat/get-boundary-piece-beziers.ts +7 -7
- package/src/mat/get-two-prong-type.ts +8 -8
- package/src/sat/cull.ts +10 -7
- package/src/sat/to-scale-axis.ts +18 -17
- package/src/utils/bezier-piece-to-bezier.ts +7 -7
- package/node/cp-node/fs/cp-nodes-to-boundary-beziers.d.ts +0 -3
- package/node/cp-node/fs/cp-nodes-to-boundary-beziers.js +0 -6
- package/node/cp-node/fs/cp-nodes-to-boundary-beziers.js.map +0 -1
- package/src/closest-boundary-point/get-closest-boundary-point-certified.ts +0 -70
- package/src/cp-node/fs/cp-nodes-to-boundary-beziers.ts +0 -10
|
@@ -8,13 +8,13 @@ import { getBoundaryPieceBeziers } from '../mat/get-boundary-piece-beziers.js';
|
|
|
8
8
|
* tolerances.
|
|
9
9
|
*/
|
|
10
10
|
function find3Prong(δs, extreme) {
|
|
11
|
-
const
|
|
11
|
+
const curvePiecess = δs.map(getBoundaryPieceBeziers);
|
|
12
12
|
// The best candidate amongst the different 'permutations' of the given δs.
|
|
13
13
|
let threeProng;
|
|
14
14
|
let smallestError = Number.POSITIVE_INFINITY;
|
|
15
15
|
for (let i = 1; i < δs.length - 1; i++) {
|
|
16
16
|
for (let k = 0; k < 3; k++) {
|
|
17
|
-
const threeProngInfo = find3ProngForDelta3s(δs, i, k,
|
|
17
|
+
const threeProngInfo = find3ProngForDelta3s(δs, i, k, curvePiecess, extreme);
|
|
18
18
|
if (!threeProngInfo) {
|
|
19
19
|
continue;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-3-prong.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/find-3-prong.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAG/E;;;;;;GAMG;AACH,SAAS,UAAU,CACjB,EAAc,EAAE,OAAe;IAEhC,MAAM,
|
|
1
|
+
{"version":3,"file":"find-3-prong.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/find-3-prong.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAG/E;;;;;;GAMG;AACH,SAAS,UAAU,CACjB,EAAc,EAAE,OAAe;IAEhC,MAAM,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAErD,2EAA2E;IAC3E,IAAI,UAIA,CAAC;IACL,IAAI,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,EAAE,CAAC,MAAM,GAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,cAAc,GACnB,oBAAoB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,cAAc,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAElC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC;YAE1D,IAAI,KAAK,GAAG,aAAa,EAAE,CAAC;gBAC3B,aAAa,GAAG,KAAK,CAAC;gBAEtB,UAAU,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAsB,EAAE,GAAG,EAAE,CAAC;YAC5D,CAAC;QACF,CAAC;IACF,CAAC;IAGD,OAAO,UAAW,CAAC;AACpB,CAAC;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -2,8 +2,8 @@ import { CurvePiece } from '../mat/curve-piece.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* @internal
|
|
4
4
|
* @param x
|
|
5
|
-
* @param
|
|
5
|
+
* @param curvePiece3s
|
|
6
6
|
* @param extreme
|
|
7
7
|
*/
|
|
8
|
-
declare function getClosestPoints(x: number[],
|
|
8
|
+
declare function getClosestPoints(x: number[], curvePiece3s: CurvePiece[][]): import("../index.js").PointOnShape[];
|
|
9
9
|
export { getClosestPoints };
|
|
@@ -2,13 +2,13 @@ import { getCloseBoundaryPointsCertified } from '../closest-boundary-point/get-c
|
|
|
2
2
|
/**
|
|
3
3
|
* @internal
|
|
4
4
|
* @param x
|
|
5
|
-
* @param
|
|
5
|
+
* @param curvePiece3s
|
|
6
6
|
* @param extreme
|
|
7
7
|
*/
|
|
8
|
-
function getClosestPoints(x,
|
|
9
|
-
return
|
|
8
|
+
function getClosestPoints(x, curvePiece3s) {
|
|
9
|
+
return curvePiece3s.map(curvePieces => {
|
|
10
10
|
return getCloseBoundaryPointsCertified(5, // TODO - see find-2-prong
|
|
11
|
-
|
|
11
|
+
curvePieces, x)[0];
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
export { getClosestPoints };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-closest-points.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/get-closest-points.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AAGnH;;;;;GAKG;AACH,SAAS,gBAAgB,CACjB,CAAW,EACX,
|
|
1
|
+
{"version":3,"file":"get-closest-points.js","sourceRoot":"","sources":["../../src/find-3-prong.ts/get-closest-points.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AAGnH;;;;;GAKG;AACH,SAAS,gBAAgB,CACjB,CAAW,EACX,YAA4B;IAEhC,OAAO,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAClC,OAAO,+BAA+B,CAClC,CAAC,EAAG,0BAA0B;QAC9B,WAAW,EAAE,CAAC,CACjB,CAAC,CAAC,CAAC,CAAC;IACT,CAAC,CAAC,CAAC;AACP,CAAC;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -33,6 +33,10 @@ function findMat(loops, maxCoordinate, options) {
|
|
|
33
33
|
maxCoordinate, squaredDiagonalLength, loops, cpTrees, pointToCpNode,
|
|
34
34
|
lastInsertId, ..._meta
|
|
35
35
|
};
|
|
36
|
+
// const cpTrees: Map<Loop, LlRbTree<CpNode>> = new Map();
|
|
37
|
+
// const lastInsertId = { id: 0 };
|
|
38
|
+
// createInitialCpTree(loops, cpTrees, sharpCornersPerLoop, lastInsertId);
|
|
39
|
+
// const meta = getMeta(maxCoordinate, squaredDiagonalLength, loops, cpTrees, lastInsertId);
|
|
36
40
|
let cpNode;
|
|
37
41
|
cpNode = findAndAddHoleClosing2Prongs(meta);
|
|
38
42
|
if (typeof _debug_ !== 'undefined') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-mat.js","sourceRoot":"","sources":["../../src/find-mat/find-mat.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uDAAuD,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uDAAuD,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAK5D;;;;;GAKG;AACH,SAAS,OAAO,CACR,KAAa,EACb,aAAqB,EACrB,OAA6B;IAEjC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAE1E,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACnE,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACjE,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACxF,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAE/D,MAAM,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,qBAAqB,GACvB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC;QACxC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAgC,IAAI,GAAG,EAAE,CAAC;IACvD,MAAM,YAAY,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAC/B,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,IAAI,GAAY;QAClB,aAAa,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa;QACnE,YAAY,EAAE,GAAG,KAAK;KACzB,CAAC;
|
|
1
|
+
{"version":3,"file":"find-mat.js","sourceRoot":"","sources":["../../src/find-mat/find-mat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-meta.js","sourceRoot":"","sources":["../../src/find-mat/get-meta.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"get-meta.js","sourceRoot":"","sources":["../../src/find-mat/get-meta.ts"],"names":[],"mappings":"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"}
|
package/node/index.d.ts
CHANGED
|
@@ -46,4 +46,5 @@ export { getSharpCornersOnLoop } from './find-mat/get-sharp-corners.js';
|
|
|
46
46
|
export { getFor2ProngsOnLoop } from './find-mat/get-for-2-prongs-on-loop.js';
|
|
47
47
|
export { getPotentialClosestPointsOnCurveCertified } from './closest-boundary-point/get-potential-closest-points-on-curve-certified.js';
|
|
48
48
|
export { getCloseBoundaryPointsCertified } from './closest-boundary-point/get-close-boundary-points-certified.js';
|
|
49
|
+
export { getPartialMeta, getPointToCpNode } from './find-mat/get-meta.js';
|
|
49
50
|
export { findAndAddHoleClosing2Prongs } from './find-2-prong/find-and-add-hole-closing-2-prongs.js';
|
package/node/index.js
CHANGED
|
@@ -30,6 +30,6 @@ export { getSharpCornersOnLoop } from './find-mat/get-sharp-corners.js';
|
|
|
30
30
|
export { getFor2ProngsOnLoop } from './find-mat/get-for-2-prongs-on-loop.js';
|
|
31
31
|
export { getPotentialClosestPointsOnCurveCertified } from './closest-boundary-point/get-potential-closest-points-on-curve-certified.js';
|
|
32
32
|
export { getCloseBoundaryPointsCertified } from './closest-boundary-point/get-close-boundary-points-certified.js';
|
|
33
|
-
|
|
33
|
+
export { getPartialMeta, getPointToCpNode } from './find-mat/get-meta.js';
|
|
34
34
|
export { findAndAddHoleClosing2Prongs } from './find-2-prong/find-and-add-hole-closing-2-prongs.js';
|
|
35
35
|
//# 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;AAmBpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,yCAAyC,EAAE,MAAM,6EAA6E,CAAC;AACxI,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,
|
|
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;AAmBpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,yCAAyC,EAAE,MAAM,6EAA6E,CAAC;AACxI,OAAO,EAAE,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAClH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sDAAsD,CAAC"}
|
|
@@ -11,7 +11,7 @@ import { compareCps } from '../contact-point/contact-point.js';
|
|
|
11
11
|
function getBoundaryPieceBeziers(cpNodes) {
|
|
12
12
|
let cpThis = cpNodes[0];
|
|
13
13
|
const cpEnd = cpNodes[1];
|
|
14
|
-
const
|
|
14
|
+
const curvePieces = [];
|
|
15
15
|
// As opposed to going around the circle and taking the last exit
|
|
16
16
|
let goStraight = true;
|
|
17
17
|
do {
|
|
@@ -30,28 +30,28 @@ function getBoundaryPieceBeziers(cpNodes) {
|
|
|
30
30
|
}
|
|
31
31
|
else if (posNext.curve === posThis.curve &&
|
|
32
32
|
compareCps(cpThis.next.cp, cpThis.cp) > 0) {
|
|
33
|
-
|
|
33
|
+
curvePieces.push({ curve: posThis.curve, ts: [posThis.t, posNext.t] });
|
|
34
34
|
}
|
|
35
35
|
else {
|
|
36
|
-
|
|
36
|
+
curvePieces.push({ curve: posThis.curve, ts: [posThis.t, 1] });
|
|
37
37
|
if (posThis.curve.loop === posNext.curve.loop) {
|
|
38
|
-
addSkippedBeziers(
|
|
38
|
+
addSkippedBeziers(curvePieces, posThis.curve, posNext.curve, posNext.t);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
cpThis = cpThis.next;
|
|
42
42
|
} while (cpThis !== cpEnd);
|
|
43
|
-
return
|
|
43
|
+
return curvePieces;
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* @internal
|
|
47
47
|
* Adds pieces of skipped beziers
|
|
48
48
|
*/
|
|
49
|
-
function addSkippedBeziers(
|
|
49
|
+
function addSkippedBeziers(curvePieces, curveStart, curveEnd, t1) {
|
|
50
50
|
let curveThis = curveStart;
|
|
51
51
|
do {
|
|
52
52
|
curveThis = curveThis.next;
|
|
53
53
|
const tEnd = curveThis === curveEnd ? t1 : 1;
|
|
54
|
-
|
|
54
|
+
curvePieces.push({ curve: curveThis, ts: [0, tEnd] });
|
|
55
55
|
} while (curveThis !== curveEnd);
|
|
56
56
|
}
|
|
57
57
|
export { getBoundaryPieceBeziers };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-boundary-piece-beziers.js","sourceRoot":"","sources":["../../src/mat/get-boundary-piece-beziers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAG/D;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,OAAiB;IAC9C,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,KAAK,GAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAE1B,MAAM,
|
|
1
|
+
{"version":3,"file":"get-boundary-piece-beziers.js","sourceRoot":"","sources":["../../src/mat/get-boundary-piece-beziers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAG/D;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,OAAiB;IAC9C,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,KAAK,GAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAE1B,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,iEAAiE;IACjE,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,GAAG,CAAC;QACA,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,UAAU,GAAG,IAAI,CAAC;YAClB,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,iBAAiB;YAC/C,SAAS;QACb,CAAC;QAED,UAAU,GAAG,KAAK,CAAC;QAEnB,MAAM,OAAO,GAAG,MAAM,CAAM,EAAE,CAAC,YAAY,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;QAE5C,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;YAC/B,qBAAqB,CAAC,OAAO,CAAC;YAC9B,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YAEjC,aAAa;QACjB,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;YAC/B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;YAEnD,WAAW,CAAC,IAAI,CACZ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CACvD,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,WAAW,CAAC,IAAI,CACZ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAC/C,CAAC;YAEF,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC5C,iBAAiB,CACT,WAAW,EACX,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,CAAC,CAChB,CAAC;YACN,CAAC;QACL,CAAC;QAED,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,CAAC,QAAQ,MAAM,KAAK,KAAK,EAAE;IAG3B,OAAO,WAAW,CAAC;AACvB,CAAC;AAGD;;;GAGG;AACH,SAAS,iBAAiB,CAClB,WAAyB,EACzB,UAAiB,EACjB,QAAe,EACf,EAAU;IAEd,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,GAAG,CAAC;QACA,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACrC,CAAC;AAGD,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
|
package/node/mat/mat.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { MatMeta } from './mat-meta.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Represents a complete Medial Axis Transform (MAT).
|
|
5
5
|
*
|
|
6
|
-
* The MAT is fully described through its `CpNode` property. The
|
|
6
|
+
* The MAT is fully described through its `CpNode` property. The `cpTrees`
|
|
7
7
|
* property is only added to facilitate extension of the MAT, e.g. by adding
|
|
8
8
|
* extra maximal disks and is typically not used. See `CpNode` for more
|
|
9
9
|
* details.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { PointOnShape } from "./point-on-shape.js";
|
|
2
2
|
/**
|
|
3
|
-
* Compares two
|
|
3
|
+
* Compares two `PointOnShape`s according to their cyclic ordering imposed
|
|
4
4
|
* by their relative positions on the shape boundary.
|
|
5
|
-
* @param a The first
|
|
6
|
-
* @param b The second
|
|
5
|
+
* @param a The first `PointOnShape`.
|
|
6
|
+
* @param b The second `PointOnShape`.
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
9
9
|
declare function comparePoss(a: PointOnShape, b: PointOnShape): number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Compares two
|
|
2
|
+
* Compares two `PointOnShape`s according to their cyclic ordering imposed
|
|
3
3
|
* by their relative positions on the shape boundary.
|
|
4
|
-
* @param a The first
|
|
5
|
-
* @param b The second
|
|
4
|
+
* @param a The first `PointOnShape`.
|
|
5
|
+
* @param b The second `PointOnShape`.
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
8
|
function comparePoss(a, b) {
|
|
@@ -5,7 +5,7 @@ import { PointOnShape } from './point-on-shape.js';
|
|
|
5
5
|
*
|
|
6
6
|
* @param minCurvature If not Number.POSITIVE_INFINITY then the
|
|
7
7
|
* circle radius will be limited to this value.
|
|
8
|
-
* @param pos The
|
|
8
|
+
* @param pos The `PointOnShape` identifying the point.
|
|
9
9
|
* @param useMaxRadius
|
|
10
10
|
*/
|
|
11
11
|
declare function getOsculatingCircle(minCurvature: number, pos: PointOnShape, useMaxRadius?: boolean): Circle;
|
|
@@ -4,7 +4,7 @@ import { tangentExact, ddCurvature } from 'flo-bezier3';
|
|
|
4
4
|
*
|
|
5
5
|
* @param minCurvature If not Number.POSITIVE_INFINITY then the
|
|
6
6
|
* circle radius will be limited to this value.
|
|
7
|
-
* @param pos The
|
|
7
|
+
* @param pos The `PointOnShape` identifying the point.
|
|
8
8
|
* @param useMaxRadius
|
|
9
9
|
*/
|
|
10
10
|
function getOsculatingCircle(minCurvature, pos,
|
package/node/sat/cull.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { CpNode } from '../cp-node/cp-node.js';
|
|
2
|
-
import { DualSet } from '../utils/dual-set.js';
|
|
1
|
+
import type { CpNode } from '../cp-node/cp-node.js';
|
|
2
|
+
import type { DualSet } from '../utils/dual-set.js';
|
|
3
3
|
/**
|
|
4
|
-
* @internal
|
|
5
4
|
* Returns the set of Vertices passing the following test: walk the MAT tree and
|
|
6
5
|
* keep all Vertices not in the current cull set and any Vertices that have a
|
|
7
6
|
* non-culled node further down the line toward the tree leaves.
|
|
8
|
-
*
|
|
9
|
-
* @param
|
|
7
|
+
*
|
|
8
|
+
* @param culls the `CpNode`s (referred to by circles) that should be culled
|
|
9
|
+
* @param maxCpNode the start `CpNode` which must represent the maximal vertex
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
10
12
|
*/
|
|
11
13
|
declare function cull(culls: DualSet<number, number>, maxCpNode: CpNode): void;
|
|
12
14
|
export { cull };
|
package/node/sat/cull.js
CHANGED
|
@@ -4,8 +4,9 @@ import { isTerminating } from '../cp-node/fs/is-terminating.js';
|
|
|
4
4
|
import { DualSetFs } from '../utils/dual-set.js';
|
|
5
5
|
const { isOnSameCircle } = CpNodeFs;
|
|
6
6
|
/**
|
|
7
|
+
* Returns the set of non-trivial forward edges starting from the given `CpNode`.
|
|
7
8
|
*
|
|
8
|
-
* @param cpStart
|
|
9
|
+
* @param cpStart the start `CpNode`
|
|
9
10
|
*/
|
|
10
11
|
function getNonTrivialForwardEdges(cpStart) {
|
|
11
12
|
let cpNode = cpStart;
|
|
@@ -23,12 +24,14 @@ function getNonTrivialForwardEdges(cpStart) {
|
|
|
23
24
|
return cps;
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
|
-
* @internal
|
|
27
27
|
* Returns the set of Vertices passing the following test: walk the MAT tree and
|
|
28
28
|
* keep all Vertices not in the current cull set and any Vertices that have a
|
|
29
29
|
* non-culled node further down the line toward the tree leaves.
|
|
30
|
-
*
|
|
31
|
-
* @param
|
|
30
|
+
*
|
|
31
|
+
* @param culls the `CpNode`s (referred to by circles) that should be culled
|
|
32
|
+
* @param maxCpNode the start `CpNode` which must represent the maximal vertex
|
|
33
|
+
*
|
|
34
|
+
* @internal
|
|
32
35
|
*/
|
|
33
36
|
function cull(culls, maxCpNode) {
|
|
34
37
|
const leaves = getLeaves(maxCpNode);
|
package/node/sat/cull.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cull.js","sourceRoot":"","sources":["../../src/sat/cull.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cull.js","sourceRoot":"","sources":["../../src/sat/cull.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,9 @@ import { Mat } from '../mat/mat.js';
|
|
|
8
8
|
* boundary of the shape. The SAT is a simplification of the MAT that preserves
|
|
9
9
|
* less detail the higher the applied scale factor. The severity at which noise
|
|
10
10
|
* are removed depends on the local scale of the shape.
|
|
11
|
-
*
|
|
12
|
-
* @param
|
|
11
|
+
*
|
|
12
|
+
* @param mat the Medial Axis Transform (MAT) on which to apply the SAT
|
|
13
|
+
* @param s the scale factor >= 1 (e.g. 1.3)
|
|
13
14
|
*/
|
|
14
15
|
declare function toScaleAxis(mat: Mat, s: number): Mat;
|
|
15
16
|
export { toScaleAxis };
|
|
@@ -13,8 +13,9 @@ import { getSatCulls } from './get-sat-culls.js';
|
|
|
13
13
|
* boundary of the shape. The SAT is a simplification of the MAT that preserves
|
|
14
14
|
* less detail the higher the applied scale factor. The severity at which noise
|
|
15
15
|
* are removed depends on the local scale of the shape.
|
|
16
|
-
*
|
|
17
|
-
* @param
|
|
16
|
+
*
|
|
17
|
+
* @param mat the Medial Axis Transform (MAT) on which to apply the SAT
|
|
18
|
+
* @param s the scale factor >= 1 (e.g. 1.3)
|
|
18
19
|
*/
|
|
19
20
|
function toScaleAxis(mat, s) {
|
|
20
21
|
let timingStart = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-scale-axis.js","sourceRoot":"","sources":["../../src/sat/to-scale-axis.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD
|
|
1
|
+
{"version":3,"file":"to-scale-axis.js","sourceRoot":"","sources":["../../src/sat/to-scale-axis.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;;;;;;;;;;;GAYG;AACH,SAAS,WAAW,CACZ,GAAQ,EACR,CAAS;IAEb,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACjC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAErC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEpB,MAAM,GAAG,GAAQ;QACb,MAAM,EAAE,MAAM;QACd,IAAI,EAAE;YACF,GAAG,GAAG,CAAC,IAAI;YACX,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC;SACnC;KACJ,CAAC;IAGF,YAAY,CAAC,WAAW,CAAC,CAAC;IAE1B,OAAO,GAAG,CAAC;AACf,CAAC;AAGD,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "flo-mat",
|
|
3
3
|
"sideEffects": false,
|
|
4
4
|
"description": "Medial / Scale Axis Transform (MAT/SAT) Library.",
|
|
5
|
-
"version": "3.0.
|
|
5
|
+
"version": "3.0.10",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Floris Steenkamp"
|
|
8
8
|
},
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"big-float-ts": "^4.0.2",
|
|
35
35
|
"double-double": "^3.0.4",
|
|
36
|
-
"flo-bezier3": "^6.0.
|
|
36
|
+
"flo-bezier3": "^6.0.8",
|
|
37
37
|
"flo-boolean": "^5.0.3",
|
|
38
38
|
"flo-draw": "^2.0.5",
|
|
39
39
|
"flo-gauss-quadrature": "^2.1.4",
|
|
@@ -47,19 +47,19 @@
|
|
|
47
47
|
"@swc/core": "^1.15.33",
|
|
48
48
|
"@swc/jest": "^0.2.39",
|
|
49
49
|
"@types/jest": "^30.0.0",
|
|
50
|
-
"@types/node": "^25.9.
|
|
50
|
+
"@types/node": "^25.9.1",
|
|
51
51
|
"jest": "^30.4.2",
|
|
52
52
|
"jest-ts-webcompat-resolver": "^1.0.1",
|
|
53
53
|
"c8": "^11.0.0",
|
|
54
54
|
"chai": "^6.2.2",
|
|
55
55
|
"circular-dependency-plugin": "^5.2.2",
|
|
56
|
-
"mocha": "^11.7.
|
|
56
|
+
"mocha": "^11.7.6",
|
|
57
57
|
"rimraf": "^6.1.3",
|
|
58
58
|
"source-map-support": "^0.5.21",
|
|
59
59
|
"ts-loader": "^9.5.7",
|
|
60
60
|
"ts-node": "^10.9.2",
|
|
61
61
|
"typescript": "^6.0.3",
|
|
62
|
-
"webpack": "^5.
|
|
62
|
+
"webpack": "^5.107.1",
|
|
63
63
|
"webpack-cli": "^7.0.2"
|
|
64
64
|
},
|
|
65
65
|
"scripts": {
|
|
@@ -5,31 +5,32 @@ import { cullByTightBoundingBox } from './cull-by-tight-boundary-box.js';
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* @
|
|
9
|
-
* @param bezierPieces
|
|
8
|
+
* @param curvePieces
|
|
10
9
|
* @param p
|
|
11
10
|
* @param extreme
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
12
13
|
*/
|
|
13
|
-
function
|
|
14
|
-
|
|
14
|
+
function cullCurvePieces1(
|
|
15
|
+
curvePieces: CurvePiece[],
|
|
15
16
|
p: number[]) {
|
|
16
17
|
|
|
17
18
|
const bestSquaredDistance = getBestDistanceSquared(
|
|
18
|
-
|
|
19
|
+
curvePieces, p
|
|
19
20
|
);
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
curvePieces = cullByLooseBoundingBox(
|
|
22
|
+
curvePieces, p,
|
|
22
23
|
bestSquaredDistance
|
|
23
24
|
);
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
curvePieces = cullByTightBoundingBox(
|
|
27
|
+
curvePieces, p,
|
|
27
28
|
bestSquaredDistance
|
|
28
29
|
);
|
|
29
30
|
|
|
30
31
|
|
|
31
|
-
return
|
|
32
|
+
return curvePieces;
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
|
|
35
|
-
export {
|
|
36
|
+
export { cullCurvePieces1 }
|
|
@@ -8,20 +8,20 @@ import { getBoundingBox$ } from '../geometry/get-bounding-box-.js';
|
|
|
8
8
|
* @internal
|
|
9
9
|
* When checking distances, ignore all those with closest possible distance
|
|
10
10
|
* further than 'bestSquaredDistance', i.e. cull them.
|
|
11
|
-
* @param
|
|
11
|
+
* @param curvePieces
|
|
12
12
|
* @param p
|
|
13
13
|
* @param dSquared
|
|
14
14
|
*/
|
|
15
15
|
function cullByLooseBoundingBox(
|
|
16
|
-
|
|
16
|
+
curvePieces: CurvePiece[],
|
|
17
17
|
p: number[],
|
|
18
18
|
dSquared: number) {
|
|
19
19
|
|
|
20
|
-
const
|
|
20
|
+
const candidateCurvePieces = [];
|
|
21
21
|
|
|
22
|
-
for (let i=0; i<
|
|
23
|
-
const
|
|
24
|
-
const ps =
|
|
22
|
+
for (let i=0; i<curvePieces.length; i++) {
|
|
23
|
+
const curvePiece = curvePieces[i];
|
|
24
|
+
const ps = curvePiece.curve.ps;
|
|
25
25
|
|
|
26
26
|
const boundingBox = getBoundingBox$(ps);
|
|
27
27
|
|
|
@@ -30,11 +30,11 @@ function cullByLooseBoundingBox(
|
|
|
30
30
|
p
|
|
31
31
|
);
|
|
32
32
|
if (d <= dSquared) {
|
|
33
|
-
|
|
33
|
+
candidateCurvePieces.push(curvePiece);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
return
|
|
37
|
+
return candidateCurvePieces;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
|
|
@@ -11,20 +11,20 @@ const getBoundingBoxTight_ = memoize(getBoundingBoxTight);
|
|
|
11
11
|
* @internal
|
|
12
12
|
* When checking distances, ignore all those with closest possible distance
|
|
13
13
|
* further than 'bestSquaredDistance', i.e. cull them.
|
|
14
|
-
* @param
|
|
14
|
+
* @param curvePieces
|
|
15
15
|
* @param p
|
|
16
16
|
* @param bestSquaredDistance
|
|
17
17
|
*/
|
|
18
18
|
function cullByTightBoundingBox(
|
|
19
|
-
|
|
19
|
+
curvePieces: CurvePiece[],
|
|
20
20
|
p: number[],
|
|
21
21
|
bestSquaredDistance: number) {
|
|
22
22
|
|
|
23
|
-
const
|
|
23
|
+
const candidateCurvePieces = [];
|
|
24
24
|
|
|
25
|
-
for (let i=0; i<
|
|
26
|
-
const
|
|
27
|
-
const ps =
|
|
25
|
+
for (let i=0; i<curvePieces.length; i++) {
|
|
26
|
+
const curvePiece = curvePieces[i];
|
|
27
|
+
const ps = curvePiece.curve.ps;
|
|
28
28
|
|
|
29
29
|
const tightBoundingBox = getBoundingBoxTight_(ps);
|
|
30
30
|
const d = getClosestSquaredDistanceToRotatedRect(
|
|
@@ -32,11 +32,11 @@ function cullByTightBoundingBox(
|
|
|
32
32
|
p
|
|
33
33
|
);
|
|
34
34
|
if (d <= bestSquaredDistance) {
|
|
35
|
-
|
|
35
|
+
candidateCurvePieces.push(curvePiece);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
return
|
|
39
|
+
return candidateCurvePieces;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
|
|
@@ -9,17 +9,17 @@ import { CurvePiece } from "../mat/curve-piece.js";
|
|
|
9
9
|
* this distance away.
|
|
10
10
|
*/
|
|
11
11
|
function getBestDistanceSquared(
|
|
12
|
-
|
|
12
|
+
curvePieces: CurvePiece[],
|
|
13
13
|
p: number[]) {
|
|
14
14
|
|
|
15
15
|
let bestSquaredDistance = Number.POSITIVE_INFINITY;
|
|
16
|
-
for (let i=0; i<
|
|
17
|
-
const
|
|
16
|
+
for (let i=0; i<curvePieces.length; i++) {
|
|
17
|
+
const curvePiece = curvePieces[i];
|
|
18
18
|
|
|
19
|
-
const ps =
|
|
19
|
+
const ps = curvePiece.curve.ps;
|
|
20
20
|
|
|
21
|
-
const p1 = evalDeCasteljau(ps,
|
|
22
|
-
const p2 = evalDeCasteljau(ps,
|
|
21
|
+
const p1 = evalDeCasteljau(ps, curvePiece.ts[0]);
|
|
22
|
+
const p2 = evalDeCasteljau(ps, curvePiece.ts[1]);
|
|
23
23
|
|
|
24
24
|
const d = Math.min(
|
|
25
25
|
squaredDistanceBetween(p, p1),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CurvePiece } from '../mat/curve-piece.js';
|
|
2
2
|
import { getPotentialClosestPointsOnCurveCertified } from './get-potential-closest-points-on-curve-certified.js';
|
|
3
|
-
import {
|
|
3
|
+
import { cullCurvePieces1 } from './cull-bezier-pieces.js';
|
|
4
4
|
import { Curve } from '../curve/curve.js';
|
|
5
5
|
import { FootAndEndpointInfo } from './foot-and-endpoint-info.js';
|
|
6
6
|
import { PointOnShape } from '../point-on-shape/point-on-shape.js';
|
|
@@ -13,7 +13,7 @@ import { createPos } from '../point-on-shape/create-pos.js';
|
|
|
13
13
|
* bezier pieces, including the beziers actually checked after culling.
|
|
14
14
|
*
|
|
15
15
|
* @param pow
|
|
16
|
-
* @param
|
|
16
|
+
* @param curvePieces
|
|
17
17
|
* @param x
|
|
18
18
|
* @param touchedCurve
|
|
19
19
|
* @param t
|
|
@@ -22,24 +22,24 @@ import { createPos } from '../point-on-shape/create-pos.js';
|
|
|
22
22
|
*/
|
|
23
23
|
function getCloseBoundaryPointsCertified(
|
|
24
24
|
pow: number,
|
|
25
|
-
|
|
25
|
+
curvePieces: CurvePiece[],
|
|
26
26
|
x: number[],
|
|
27
27
|
touchedCurve: Curve | undefined = undefined,
|
|
28
28
|
t: number | undefined = undefined,
|
|
29
29
|
for1Prong = false,
|
|
30
30
|
angle = 0): PointOnShape[] {
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
curvePieces = cullCurvePieces1(curvePieces, x);
|
|
33
33
|
|
|
34
34
|
const pInfoss: FootAndEndpointInfo[] = [];
|
|
35
|
-
for (let i=0; i<
|
|
36
|
-
const
|
|
35
|
+
for (let i=0; i<curvePieces.length; i++) {
|
|
36
|
+
const curvePiece = curvePieces[i];
|
|
37
37
|
|
|
38
38
|
const pInfos = getPotentialClosestPointsOnCurveCertified(
|
|
39
39
|
pow,
|
|
40
|
-
|
|
40
|
+
curvePiece.curve,
|
|
41
41
|
x,
|
|
42
|
-
|
|
42
|
+
curvePiece.ts,
|
|
43
43
|
touchedCurve,
|
|
44
44
|
t,
|
|
45
45
|
for1Prong,
|