flo-mat 4.1.0 → 4.1.1
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__/helpers/jest.setup.ts +35 -0
- package/__tests__/specific-cases/specific-cases.spec.ts +1 -1
- package/browser/index.js +10511 -10224
- package/browser/index.min.js +1 -1
- package/node/cp-node/fs/get-implied-boundary-bezier-between.js.map +1 -1
- package/node/find-mat/find-mats.js +3 -1
- package/node/find-mat/find-mats.js.map +1 -1
- package/package.json +14 -14
- package/src/cp-node/fs/get-implied-boundary-bezier-between.ts +0 -1
- package/src/find-mat/find-mats.ts +3 -1
- package/src/debug/functions/draw/draw-bezier-pieces.ts +0 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-implied-boundary-bezier-between.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-implied-boundary-bezier-between.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"get-implied-boundary-bezier-between.js","sourceRoot":"","sources":["../../../src/cp-node/fs/get-implied-boundary-bezier-between.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,9 @@ function findMats(bezierLoops, options) {
|
|
|
39
39
|
...(options || {})
|
|
40
40
|
});
|
|
41
41
|
const { applySat, simplify, satScale, simplifyTolerance } = options_;
|
|
42
|
-
const loopss = simplifyPaths(bezierLoops,
|
|
42
|
+
const loopss = simplifyPaths(bezierLoops, {
|
|
43
|
+
forceOrientationNegative: true,
|
|
44
|
+
});
|
|
43
45
|
// console.log(loopsToSvgPathStr(bezierLoops));
|
|
44
46
|
const mats = [];
|
|
45
47
|
for (const loops of loopss) {
|
|
@@ -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,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAG5B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,QAAQ,CACT,WAA2B,EAC3B,OAAoB;IAExB,+EAA+E;IAC/E,MAAM,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAyB,WAAW,CAC9C,gBAAgB,EAAE;QAClB,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,
|
|
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,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;AAG5B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,QAAQ,CACT,WAA2B,EAC3B,OAAoB;IAExB,+EAA+E;IAC/E,MAAM,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAyB,WAAW,CAC9C,gBAAgB,EAAE;QAClB,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;QACtC,wBAAwB,EAAE,IAAI;KACjC,CAAC,CAAC;IAEH,+CAA+C;IAE/C,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACrD,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,yDAAyD;IACzD,6BAA6B;IAE7B,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"}
|
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": "4.1.
|
|
5
|
+
"version": "4.1.1",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Floris Steenkamp"
|
|
8
8
|
},
|
|
@@ -33,33 +33,32 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"big-float-ts": "^4.0.4",
|
|
35
35
|
"double-double": "^3.0.4",
|
|
36
|
-
"flo-bezier3": "^8.0.
|
|
37
|
-
"flo-boolean": "^
|
|
38
|
-
"flo-draw": "^2.0.5",
|
|
36
|
+
"flo-bezier3": "^8.0.14",
|
|
37
|
+
"flo-boolean": "^6.0.2",
|
|
39
38
|
"flo-gauss-quadrature": "^2.1.4",
|
|
40
39
|
"flo-ll-rb-tree": "^1.0.1",
|
|
41
40
|
"flo-memoize": "^2.0.1",
|
|
42
41
|
"flo-poly": "^8.1.4",
|
|
43
|
-
"flo-vector2d": "^4.0.6"
|
|
44
|
-
"squares-rng": "^2.0.4"
|
|
42
|
+
"flo-vector2d": "^4.0.6"
|
|
45
43
|
},
|
|
46
44
|
"devDependencies": {
|
|
47
|
-
"
|
|
48
|
-
"@
|
|
45
|
+
"squares-rng": "^2.0.4",
|
|
46
|
+
"@jest/globals": "^30.5.1",
|
|
47
|
+
"@swc/core": "^1.16.1",
|
|
49
48
|
"@swc/jest": "^0.2.39",
|
|
50
49
|
"@types/jest": "^30.0.0",
|
|
51
|
-
"@types/node": "^26.
|
|
50
|
+
"@types/node": "^26.4.1",
|
|
52
51
|
"c8": "^12.0.0",
|
|
53
52
|
"cheerio": "^1.2.0",
|
|
54
53
|
"circular-dependency-plugin": "^5.2.2",
|
|
55
|
-
"jest": "^30.
|
|
54
|
+
"jest": "^30.5.1",
|
|
56
55
|
"jest-ts-webcompat-resolver": "^1.0.1",
|
|
57
56
|
"rimraf": "^6.1.3",
|
|
58
57
|
"ts-loader": "^9.6.2",
|
|
59
58
|
"ts-node": "^10.9.2",
|
|
60
59
|
"typescript": "^6.0.3",
|
|
61
|
-
"webpack": "^5.
|
|
62
|
-
"webpack-cli": "^7.2.
|
|
60
|
+
"webpack": "^5.110.3",
|
|
61
|
+
"webpack-cli": "^7.2.3"
|
|
63
62
|
},
|
|
64
63
|
"scripts": {
|
|
65
64
|
"build": "npm run build-browser && npm run build-node",
|
|
@@ -69,7 +68,8 @@
|
|
|
69
68
|
"test-package": "npm pack"
|
|
70
69
|
},
|
|
71
70
|
"allowScripts": {
|
|
72
|
-
"@swc/core@1.
|
|
73
|
-
"unrs-resolver@1.
|
|
71
|
+
"@swc/core@1.16.1": true,
|
|
72
|
+
"unrs-resolver@1.12.2": true,
|
|
73
|
+
"@parcel/watcher@2.6.0": true
|
|
74
74
|
}
|
|
75
75
|
}
|
|
@@ -55,7 +55,9 @@ function findMats(
|
|
|
55
55
|
} = options_;
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
const loopss = simplifyPaths(bezierLoops,
|
|
58
|
+
const loopss = simplifyPaths(bezierLoops, {
|
|
59
|
+
forceOrientationNegative: true,
|
|
60
|
+
});
|
|
59
61
|
|
|
60
62
|
// console.log(loopsToSvgPathStr(bezierLoops));
|
|
61
63
|
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { BezierPiece, fromTo } from "flo-bezier3"
|
|
2
|
-
import { drawFs } from "flo-draw"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const clss = [
|
|
6
|
-
'red thin10 nofill',
|
|
7
|
-
'green thin10 nofill'
|
|
8
|
-
]
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
function drawBezierPieces(
|
|
12
|
-
g: SVGGElement,
|
|
13
|
-
bezierPieces: BezierPiece[],
|
|
14
|
-
classes_ = 'red thin10 nofill, green thin10 nofill, deeppink thin10 nofill',
|
|
15
|
-
delay = 0,
|
|
16
|
-
scaleFactor = 1) {
|
|
17
|
-
|
|
18
|
-
const $svgs: SVGElement[] = [];
|
|
19
|
-
|
|
20
|
-
const classes = classes_.split(',');
|
|
21
|
-
for (let i=0; i<bezierPieces.length; i++) {
|
|
22
|
-
const piece = bezierPieces[i];
|
|
23
|
-
const { ps, ts } = piece;
|
|
24
|
-
if (ts[0] === ts[1]) {
|
|
25
|
-
$svgs.push(...drawFs.crossHair(g, ps[0], classes[i%classes.length], scaleFactor, delay));
|
|
26
|
-
}
|
|
27
|
-
const bezier = fromTo(ps, ts[0], ts[1]);
|
|
28
|
-
$svgs.push(...drawFs.bezier(g, bezier, classes[i%classes.length], delay));
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return $svgs;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export { drawBezierPieces }
|