@flighthq/path 0.5.1-next.920.da8f530 → 0.5.1-next.973.788d3d7
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/README.md +3 -3
- package/dist/contract.d.ts +1 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +1 -0
- package/dist/contract.js.map +1 -1
- package/dist/dashPath.d.ts.map +1 -1
- package/dist/dashPath.js +9 -3
- package/dist/dashPath.js.map +1 -1
- package/dist/getPathCurvatureAtDistance.d.ts +3 -0
- package/dist/getPathCurvatureAtDistance.d.ts.map +1 -0
- package/dist/getPathCurvatureAtDistance.js +64 -0
- package/dist/getPathCurvatureAtDistance.js.map +1 -0
- package/dist/getPathSegmentAtParameter.d.ts +3 -0
- package/dist/getPathSegmentAtParameter.d.ts.map +1 -1
- package/dist/getPathSegmentAtParameter.js +108 -0
- package/dist/getPathSegmentAtParameter.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/path.d.ts.map +1 -1
- package/dist/path.js +29 -5
- package/dist/path.js.map +1 -1
- package/dist/pathMeshPool.d.ts.map +1 -1
- package/dist/pathMeshPool.js +5 -20
- package/dist/pathMeshPool.js.map +1 -1
- package/dist/tessellatePath.d.ts +1 -0
- package/dist/tessellatePath.d.ts.map +1 -1
- package/dist/tessellatePath.js +11 -1
- package/dist/tessellatePath.js.map +1 -1
- package/dist/tessellatePathTyped.d.ts +1 -0
- package/dist/tessellatePathTyped.d.ts.map +1 -1
- package/dist/tessellatePathTyped.js +15 -0
- package/dist/tessellatePathTyped.js.map +1 -1
- package/package.json +5 -5
- package/src/dashPath.test.ts +12 -0
- package/src/decimatePath.test.ts +16 -0
- package/src/fitPathCurves.test.ts +17 -0
- package/src/getPathCurvatureAtDistance.test.ts +45 -0
- package/src/getPathSegmentAtParameter.test.ts +68 -0
- package/src/path.test.ts +20 -6
- package/src/pathMeshPool.test.ts +14 -0
- package/src/reversePath.test.ts +10 -6
- package/src/tessellatePath.test.ts +30 -1
- package/src/tessellatePathTyped.test.ts +33 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @flighthq/path
|
|
2
2
|
|
|
3
|
-
Vector path
|
|
3
|
+
Vector path construction, conversion, measurement, analysis, transformation, editing, and stroking
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/path`. The `@flighth
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/path@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/path@0.5.1-next.973.788d3d7](https://github.com/flighthq/flight/tree/788d3d7375cca3a0233cecedda1a4e031bd26dec/packages/path)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/788d3d7375cca3a0233cecedda1a4e031bd26dec/LICENSE.md)
|
package/dist/contract.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from './fitPathCurves';
|
|
|
6
6
|
export * from './flattenPath';
|
|
7
7
|
export * from './forEachPathSegment';
|
|
8
8
|
export * from './getPathBounds';
|
|
9
|
+
export * from './getPathCurvatureAtDistance';
|
|
9
10
|
export * from './getPathContourLengths';
|
|
10
11
|
export * from './getPathLength';
|
|
11
12
|
export * from './getPathNearestPoint';
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -6,6 +6,7 @@ export * from './fitPathCurves';
|
|
|
6
6
|
export * from './flattenPath';
|
|
7
7
|
export * from './forEachPathSegment';
|
|
8
8
|
export * from './getPathBounds';
|
|
9
|
+
export * from './getPathCurvatureAtDistance';
|
|
9
10
|
export * from './getPathContourLengths';
|
|
10
11
|
export * from './getPathLength';
|
|
11
12
|
export * from './getPathNearestPoint';
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/dashPath.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashPath.d.ts","sourceRoot":"","sources":["../src/dashPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAUrD,wBAAgB,QAAQ,CACtB,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EACtB,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EACxB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,IAAI,EACT,SAAS,SAAO,GACf,IAAI,
|
|
1
|
+
{"version":3,"file":"dashPath.d.ts","sourceRoot":"","sources":["../src/dashPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAUrD,wBAAgB,QAAQ,CACtB,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EACtB,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EACxB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,IAAI,EACT,SAAS,SAAO,GACf,IAAI,CAgBN"}
|
package/dist/dashPath.js
CHANGED
|
@@ -6,15 +6,16 @@ import { flattenPath } from './flattenPath';
|
|
|
6
6
|
//
|
|
7
7
|
// An empty or all-zero dash array copies the source unchanged (solid stroke). Alias-safe.
|
|
8
8
|
export function dashPath(source, dash, dashOffset, out, tolerance = 0.25) {
|
|
9
|
-
out.commands.length = 0;
|
|
10
|
-
out.data.length = 0;
|
|
11
|
-
out.winding = source.winding;
|
|
12
9
|
const totalDashLength = dashTotal(dash);
|
|
13
10
|
if (totalDashLength <= 0) {
|
|
14
11
|
copyCommands(source, out);
|
|
15
12
|
return;
|
|
16
13
|
}
|
|
14
|
+
// Flatten BEFORE clearing — source must be fully read before out is touched (alias safety).
|
|
17
15
|
const contours = flattenPath(source, tolerance);
|
|
16
|
+
out.commands.length = 0;
|
|
17
|
+
out.data.length = 0;
|
|
18
|
+
out.winding = source.winding;
|
|
18
19
|
for (const contour of contours) {
|
|
19
20
|
applyDashToContour(contour, dash, dashOffset, totalDashLength, out);
|
|
20
21
|
}
|
|
@@ -89,6 +90,11 @@ function applyDashToContour(pts, dash, dashOffset, totalDashLength, out) {
|
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
function copyCommands(source, out) {
|
|
93
|
+
if (source === out)
|
|
94
|
+
return;
|
|
95
|
+
out.commands.length = 0;
|
|
96
|
+
out.data.length = 0;
|
|
97
|
+
out.winding = source.winding;
|
|
92
98
|
for (let i = 0; i < source.commands.length; i++) {
|
|
93
99
|
out.commands.push(source.commands[i]);
|
|
94
100
|
}
|
package/dist/dashPath.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashPath.js","sourceRoot":"","sources":["../src/dashPath.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,6FAA6F;AAC7F,8FAA8F;AAC9F,8FAA8F;AAC9F,EAAE;AACF,0FAA0F;AAC1F,MAAM,UAAU,QAAQ,CACtB,MAAsB,EACtB,IAAwB,EACxB,UAAkB,EAClB,GAAS,EACT,SAAS,GAAG,IAAI;IAEhB,GAAG,
|
|
1
|
+
{"version":3,"file":"dashPath.js","sourceRoot":"","sources":["../src/dashPath.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPathCurvatureAtDistance.d.ts","sourceRoot":"","sources":["../src/getPathCurvatureAtDistance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAUrD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,MAAM,CAG3G"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { flattenPath } from './flattenPath';
|
|
2
|
+
// Returns the signed curvature of the path at `distance` arc-length units from the start.
|
|
3
|
+
// Positive curvature is a left turn in screen space (y-down). Returns 0 for empty paths, straight
|
|
4
|
+
// segments, or degenerate geometry.
|
|
5
|
+
//
|
|
6
|
+
// Curves are adaptively flattened to `tolerance` before measurement; the curvature is the Menger
|
|
7
|
+
// curvature of the three nearest flattened vertices around the target distance.
|
|
8
|
+
export function getPathCurvatureAtDistance(path, distance, tolerance = 0.25) {
|
|
9
|
+
const contours = flattenPath(path, tolerance);
|
|
10
|
+
return samplePathCurvature(contours, distance);
|
|
11
|
+
}
|
|
12
|
+
function samplePathCurvature(contours, distance) {
|
|
13
|
+
if (contours.length === 0)
|
|
14
|
+
return 0;
|
|
15
|
+
let remaining = distance;
|
|
16
|
+
for (let ci = 0; ci < contours.length; ci++) {
|
|
17
|
+
const contour = contours[ci];
|
|
18
|
+
const n = contour.length >> 1;
|
|
19
|
+
if (n < 2)
|
|
20
|
+
continue;
|
|
21
|
+
if (remaining <= 0)
|
|
22
|
+
return curvatureAtVertex(contour, n, 0);
|
|
23
|
+
for (let i = 1; i < n; i++) {
|
|
24
|
+
const dx = contour[i * 2] - contour[(i - 1) * 2];
|
|
25
|
+
const dy = contour[i * 2 + 1] - contour[(i - 1) * 2 + 1];
|
|
26
|
+
const segLen = Math.sqrt(dx * dx + dy * dy);
|
|
27
|
+
if (remaining <= segLen) {
|
|
28
|
+
const nearest = segLen === 0 || remaining * 2 >= segLen ? i : i - 1;
|
|
29
|
+
return curvatureAtVertex(contour, n, nearest);
|
|
30
|
+
}
|
|
31
|
+
remaining -= segLen;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const last = contours[contours.length - 1];
|
|
35
|
+
const n = last.length >> 1;
|
|
36
|
+
if (n < 3)
|
|
37
|
+
return 0;
|
|
38
|
+
return mengerCurvature(last[(n - 3) * 2], last[(n - 3) * 2 + 1], last[(n - 2) * 2], last[(n - 2) * 2 + 1], last[(n - 1) * 2], last[(n - 1) * 2 + 1]);
|
|
39
|
+
}
|
|
40
|
+
function curvatureAtVertex(contour, count, vertex) {
|
|
41
|
+
if (count < 3)
|
|
42
|
+
return 0;
|
|
43
|
+
const middle = Math.max(1, Math.min(count - 2, vertex));
|
|
44
|
+
return mengerCurvature(contour[(middle - 1) * 2], contour[(middle - 1) * 2 + 1], contour[middle * 2], contour[middle * 2 + 1], contour[(middle + 1) * 2], contour[(middle + 1) * 2 + 1]);
|
|
45
|
+
}
|
|
46
|
+
// Signed Menger curvature through three points: κ = 2·cross(AB, BC) / (|AB|·|BC|·|AC|).
|
|
47
|
+
// Positive = left turn in y-down screen space.
|
|
48
|
+
function mengerCurvature(x0, y0, x1, y1, x2, y2) {
|
|
49
|
+
const ax = x1 - x0;
|
|
50
|
+
const ay = y1 - y0;
|
|
51
|
+
const bx = x2 - x1;
|
|
52
|
+
const by = y2 - y1;
|
|
53
|
+
const cross = ax * by - ay * bx;
|
|
54
|
+
const a = Math.sqrt(ax * ax + ay * ay);
|
|
55
|
+
const b = Math.sqrt(bx * bx + by * by);
|
|
56
|
+
const cx = x2 - x0;
|
|
57
|
+
const cy = y2 - y0;
|
|
58
|
+
const c = Math.sqrt(cx * cx + cy * cy);
|
|
59
|
+
const denom = a * b * c;
|
|
60
|
+
if (denom === 0)
|
|
61
|
+
return 0;
|
|
62
|
+
return (2 * cross) / denom;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=getPathCurvatureAtDistance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPathCurvatureAtDistance.js","sourceRoot":"","sources":["../src/getPathCurvatureAtDistance.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,0FAA0F;AAC1F,kGAAkG;AAClG,oCAAoC;AACpC,EAAE;AACF,iGAAiG;AACjG,gFAAgF;AAChF,MAAM,UAAU,0BAA0B,CAAC,IAAoB,EAAE,QAAgB,EAAE,SAAS,GAAG,IAAI;IACjG,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,OAAO,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,mBAAmB,CAAC,QAA8B,EAAE,QAAgB;IAC3E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,SAAS,GAAG,QAAQ,CAAC;IAEzB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QAEpB,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,iBAAiB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAE5C,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACpE,OAAO,iBAAiB,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;YACD,SAAS,IAAI,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,eAAe,CACpB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EACjB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EACrB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EACjB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EACrB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EACjB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA2B,EAAE,KAAa,EAAE,MAAc;IACnF,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,OAAO,eAAe,CACpB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EACzB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAC7B,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EACnB,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EACvB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EACzB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,+CAA+C;AAC/C,SAAS,eAAe,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;IAC7F,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;AAC7B,CAAC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { Path, Vector2Like } from '@flighthq/types/contract';
|
|
2
|
+
export declare function getCubicBezierCurvature(x0: number, y0: number, c1x: number, c1y: number, c2x: number, c2y: number, x1: number, y1: number, t: number): number;
|
|
2
3
|
export declare function getCubicBezierPoint(x0: number, y0: number, c1x: number, c1y: number, c2x: number, c2y: number, x1: number, y1: number, t: number, out: Vector2Like): Vector2Like;
|
|
3
4
|
export declare function getCubicBezierTangent(x0: number, y0: number, c1x: number, c1y: number, c2x: number, c2y: number, x1: number, y1: number, t: number, out: Vector2Like): Vector2Like;
|
|
5
|
+
export declare function getPathSegmentCurvatureAtParameter(path: Readonly<Path>, segmentIndex: number, t: number): number | null;
|
|
4
6
|
export declare function getPathSegmentPointAtParameter(path: Readonly<Path>, segmentIndex: number, t: number, out: Vector2Like): boolean;
|
|
5
7
|
export declare function getPathSegmentTangentAtParameter(path: Readonly<Path>, segmentIndex: number, t: number, out: Vector2Like): boolean;
|
|
8
|
+
export declare function getQuadraticBezierCurvature(x0: number, y0: number, cx: number, cy: number, x1: number, y1: number, t: number): number;
|
|
6
9
|
export declare function getQuadraticBezierPoint(x0: number, y0: number, cx: number, cy: number, x1: number, y1: number, t: number, out: Vector2Like): Vector2Like;
|
|
7
10
|
export declare function getQuadraticBezierTangent(x0: number, y0: number, cx: number, cy: number, x1: number, y1: number, t: number, out: Vector2Like): Vector2Like;
|
|
8
11
|
//# sourceMappingURL=getPathSegmentAtParameter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPathSegmentAtParameter.d.ts","sourceRoot":"","sources":["../src/getPathSegmentAtParameter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"getPathSegmentAtParameter.d.ts","sourceRoot":"","sources":["../src/getPathSegmentAtParameter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAMlE,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,GACR,MAAM,CAaR;AAID,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CASb;AAKD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CAOb;AAID,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,MAAM,GACR,MAAM,GAAG,IAAI,CAEf;AASD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,OAAO,CAET;AAKD,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EACpB,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,OAAO,CAET;AAKD,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,GACR,MAAM,CAWR;AAID,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CAKb;AAKD,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,WAAW,GACf,WAAW,CAKb"}
|
|
@@ -1,4 +1,22 @@
|
|
|
1
1
|
import { PathCommand } from '@flighthq/types/contract';
|
|
2
|
+
// Returns the signed curvature κ at parameter `t` on a cubic bezier.
|
|
3
|
+
// κ = (B'x·B''y − B'y·B''x) / |B'|³. Positive = left turn in y-down screen space.
|
|
4
|
+
// Returns 0 at degenerate points where the tangent vanishes.
|
|
5
|
+
export function getCubicBezierCurvature(x0, y0, c1x, c1y, c2x, c2y, x1, y1, t) {
|
|
6
|
+
const u = 1 - t;
|
|
7
|
+
const u2 = u * u;
|
|
8
|
+
const t2 = t * t;
|
|
9
|
+
const dx = 3 * (u2 * (c1x - x0) + 2 * u * t * (c2x - c1x) + t2 * (x1 - c2x));
|
|
10
|
+
const dy = 3 * (u2 * (c1y - y0) + 2 * u * t * (c2y - c1y) + t2 * (y1 - c2y));
|
|
11
|
+
const ddx = 6 * (u * (c2x - 2 * c1x + x0) + t * (x1 - 2 * c2x + c1x));
|
|
12
|
+
const ddy = 6 * (u * (c2y - 2 * c1y + y0) + t * (y1 - 2 * c2y + c1y));
|
|
13
|
+
const cross = dx * ddy - dy * ddx;
|
|
14
|
+
const speed2 = dx * dx + dy * dy;
|
|
15
|
+
const speed = Math.sqrt(speed2);
|
|
16
|
+
if (speed === 0)
|
|
17
|
+
return 0;
|
|
18
|
+
return cross / (speed2 * speed);
|
|
19
|
+
}
|
|
2
20
|
// Returns the point at parameter `t` (0..1) on a cubic bezier
|
|
3
21
|
// P0 → C1 → C2 → P1 using de Casteljau. Writes into `out`.
|
|
4
22
|
export function getCubicBezierPoint(x0, y0, c1x, c1y, c2x, c2y, x1, y1, t, out) {
|
|
@@ -22,6 +40,11 @@ export function getCubicBezierTangent(x0, y0, c1x, c1y, c2x, c2y, x1, y1, t, out
|
|
|
22
40
|
out.y = 3 * (u2 * (c1y - y0) + 2 * u * t * (c2y - c1y) + t2 * (y1 - c2y));
|
|
23
41
|
return out;
|
|
24
42
|
}
|
|
43
|
+
// Returns the signed curvature at parameter `t` on the n-th segment of `path`. Lines return 0.
|
|
44
|
+
// Returns `null` if `segmentIndex` is out of range.
|
|
45
|
+
export function getPathSegmentCurvatureAtParameter(path, segmentIndex, t) {
|
|
46
|
+
return walkPathSegmentCurvature(path, segmentIndex, t);
|
|
47
|
+
}
|
|
25
48
|
// Evaluates the point at parameter `t` on the n-th segment of `path` (0-indexed, counting
|
|
26
49
|
// segments in path-walk order: MOVE_TO does not count as a segment; LINE_TO, CURVE_TO,
|
|
27
50
|
// CUBIC_CURVE_TO each count as one). Writes into `out`. Returns `true` on success; `false` if
|
|
@@ -38,6 +61,22 @@ export function getPathSegmentPointAtParameter(path, segmentIndex, t, out) {
|
|
|
38
61
|
export function getPathSegmentTangentAtParameter(path, segmentIndex, t, out) {
|
|
39
62
|
return walkPathSegment(path, segmentIndex, t, out, true);
|
|
40
63
|
}
|
|
64
|
+
// Returns the signed curvature κ at parameter `t` on a quadratic bezier.
|
|
65
|
+
// The second derivative is constant: B''(t) = 2(P1 − 2C + P0).
|
|
66
|
+
// Returns 0 at degenerate points where the tangent vanishes.
|
|
67
|
+
export function getQuadraticBezierCurvature(x0, y0, cx, cy, x1, y1, t) {
|
|
68
|
+
const u = 1 - t;
|
|
69
|
+
const dx = 2 * (u * (cx - x0) + t * (x1 - cx));
|
|
70
|
+
const dy = 2 * (u * (cy - y0) + t * (y1 - cy));
|
|
71
|
+
const ddx = 2 * (x1 - 2 * cx + x0);
|
|
72
|
+
const ddy = 2 * (y1 - 2 * cy + y0);
|
|
73
|
+
const cross = dx * ddy - dy * ddx;
|
|
74
|
+
const speed2 = dx * dx + dy * dy;
|
|
75
|
+
const speed = Math.sqrt(speed2);
|
|
76
|
+
if (speed === 0)
|
|
77
|
+
return 0;
|
|
78
|
+
return cross / (speed2 * speed);
|
|
79
|
+
}
|
|
41
80
|
// Returns the point at parameter `t` (0..1) on a quadratic bezier defined by (x0,y0) → (cx,cy) → (x1,y1).
|
|
42
81
|
// Writes the result into `out` and returns `out`.
|
|
43
82
|
export function getQuadraticBezierPoint(x0, y0, cx, cy, x1, y1, t, out) {
|
|
@@ -160,4 +199,73 @@ function walkPathSegment(path, segmentIndex, t, out, wantTangent) {
|
|
|
160
199
|
}
|
|
161
200
|
return false;
|
|
162
201
|
}
|
|
202
|
+
function walkPathSegmentCurvature(path, segmentIndex, t) {
|
|
203
|
+
const commands = path.commands;
|
|
204
|
+
const data = path.data;
|
|
205
|
+
let currentSegment = 0;
|
|
206
|
+
let x = 0;
|
|
207
|
+
let y = 0;
|
|
208
|
+
let di = 0;
|
|
209
|
+
for (let ci = 0; ci < commands.length; ci++) {
|
|
210
|
+
const command = commands[ci];
|
|
211
|
+
if (command === PathCommand.MOVE_TO) {
|
|
212
|
+
x = data[di];
|
|
213
|
+
y = data[di + 1];
|
|
214
|
+
di += 2;
|
|
215
|
+
}
|
|
216
|
+
else if (command === PathCommand.WIDE_MOVE_TO) {
|
|
217
|
+
x = data[di + 2];
|
|
218
|
+
y = data[di + 3];
|
|
219
|
+
di += 4;
|
|
220
|
+
}
|
|
221
|
+
else if (command === PathCommand.LINE_TO) {
|
|
222
|
+
di += 2;
|
|
223
|
+
if (currentSegment === segmentIndex)
|
|
224
|
+
return 0;
|
|
225
|
+
x = data[di - 2];
|
|
226
|
+
y = data[di - 1];
|
|
227
|
+
currentSegment++;
|
|
228
|
+
}
|
|
229
|
+
else if (command === PathCommand.WIDE_LINE_TO) {
|
|
230
|
+
di += 4;
|
|
231
|
+
if (currentSegment === segmentIndex)
|
|
232
|
+
return 0;
|
|
233
|
+
x = data[di - 2];
|
|
234
|
+
y = data[di - 1];
|
|
235
|
+
currentSegment++;
|
|
236
|
+
}
|
|
237
|
+
else if (command === PathCommand.CURVE_TO) {
|
|
238
|
+
const cx = data[di];
|
|
239
|
+
const cy = data[di + 1];
|
|
240
|
+
const x1 = data[di + 2];
|
|
241
|
+
const y1 = data[di + 3];
|
|
242
|
+
di += 4;
|
|
243
|
+
if (currentSegment === segmentIndex) {
|
|
244
|
+
return getQuadraticBezierCurvature(x, y, cx, cy, x1, y1, t);
|
|
245
|
+
}
|
|
246
|
+
x = x1;
|
|
247
|
+
y = y1;
|
|
248
|
+
currentSegment++;
|
|
249
|
+
}
|
|
250
|
+
else if (command === PathCommand.CUBIC_CURVE_TO) {
|
|
251
|
+
const c1x = data[di];
|
|
252
|
+
const c1y = data[di + 1];
|
|
253
|
+
const c2x = data[di + 2];
|
|
254
|
+
const c2y = data[di + 3];
|
|
255
|
+
const x1 = data[di + 4];
|
|
256
|
+
const y1 = data[di + 5];
|
|
257
|
+
di += 6;
|
|
258
|
+
if (currentSegment === segmentIndex) {
|
|
259
|
+
return getCubicBezierCurvature(x, y, c1x, c1y, c2x, c2y, x1, y1, t);
|
|
260
|
+
}
|
|
261
|
+
x = x1;
|
|
262
|
+
y = y1;
|
|
263
|
+
currentSegment++;
|
|
264
|
+
}
|
|
265
|
+
else if (command === PathCommand.CLOSE) {
|
|
266
|
+
// CLOSE is not a parametric segment.
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
163
271
|
//# sourceMappingURL=getPathSegmentAtParameter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPathSegmentAtParameter.js","sourceRoot":"","sources":["../src/getPathSegmentAtParameter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getPathSegmentAtParameter.js","sourceRoot":"","sources":["../src/getPathSegmentAtParameter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { acquirePathMesh, acquirePathMeshTyped, appendPathArc, appendPathArcTo, appendPathCircle, appendPathClose, appendPathCubicCurveTo, appendPathCurveTo, appendPathEllipse, appendPathLineTo, appendPathMoveTo, appendPathPolygon, appendPathPolyline, appendPathRectangle, appendPathRoundRectangle, cleanPath, clonePath, containsPathPoint, copyPath, createPath, createPathMorph, dashPath, decimatePath, explainPathMorphCreation, explainStrokePathTessellation, fitPathCurves, flattenPath, forEachPathSegment, getCubicBezierPoint, getCubicBezierTangent, getPathBounds, getPathContourLengths, getPathContourOrientation, getPathLastPoint, getPathLength, getPathNearestPoint, getPathPointAtDistance, getPathPositionAtDistance, getPathSegmentPointAtParameter, getPathSegmentTangentAtParameter, getPathSignedArea, getPathTangentAtDistance, getQuadraticBezierPoint, getQuadraticBezierTangent, releasePathMesh, releasePathMeshTyped, reversePath, samplePathMorph, strokePath, tessellatePath, tessellatePathTyped, tessellateStrokePath, transformPath, translatePath, } from './contract';
|
|
1
|
+
export { acquirePathMesh, acquirePathMeshTyped, appendPathArc, appendPathArcTo, appendPathCircle, appendPathClose, appendPathCubicCurveTo, appendPathCurveTo, appendPathEllipse, appendPathLineTo, appendPathMoveTo, appendPathPolygon, appendPathPolyline, appendPathRectangle, appendPathRoundRectangle, cleanPath, clonePath, containsPathPoint, copyPath, createPath, createPathMorph, dashPath, decimatePath, explainPathMorphCreation, explainStrokePathTessellation, fitPathCurves, flattenPath, forEachPathSegment, getCubicBezierCurvature, getCubicBezierPoint, getCubicBezierTangent, getPathBounds, getPathContourLengths, getPathContourOrientation, getPathCurvatureAtDistance, getPathLastPoint, getPathLength, getPathNearestPoint, getPathPointAtDistance, getPathPositionAtDistance, getPathSegmentCurvatureAtParameter, getPathSegmentPointAtParameter, getPathSegmentTangentAtParameter, getPathSignedArea, getPathTangentAtDistance, getQuadraticBezierCurvature, getQuadraticBezierPoint, getQuadraticBezierTangent, releasePathMesh, releasePathMeshTyped, reversePath, samplePathMorph, strokePath, tessellatePath, tessellatePathInto, tessellatePathTyped, tessellatePathTypedInto, tessellateStrokePath, transformPath, translatePath, } from './contract';
|
|
2
2
|
export type { PathMorph, PathMorphCreationExplanation, PathMorphCreationReason, StrokePathTessellationExplanation, StrokePathTessellationReason, } from './contract';
|
|
3
3
|
export type { StrokeStyle } from './contract';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,wBAAwB,EACxB,6BAA6B,EAC7B,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,SAAS,EACT,4BAA4B,EAC5B,uBAAuB,EACvB,iCAAiC,EACjC,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAKpB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,wBAAwB,EACxB,6BAA6B,EAC7B,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,kCAAkC,EAClC,8BAA8B,EAC9B,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,SAAS,EACT,4BAA4B,EAC5B,uBAAuB,EACvB,iCAAiC,EACjC,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAKpB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { acquirePathMesh, acquirePathMeshTyped, appendPathArc, appendPathArcTo, appendPathCircle, appendPathClose, appendPathCubicCurveTo, appendPathCurveTo, appendPathEllipse, appendPathLineTo, appendPathMoveTo, appendPathPolygon, appendPathPolyline, appendPathRectangle, appendPathRoundRectangle, cleanPath, clonePath, containsPathPoint, copyPath, createPath, createPathMorph, dashPath, decimatePath, explainPathMorphCreation, explainStrokePathTessellation, fitPathCurves, flattenPath, forEachPathSegment, getCubicBezierPoint, getCubicBezierTangent, getPathBounds, getPathContourLengths, getPathContourOrientation, getPathLastPoint, getPathLength, getPathNearestPoint, getPathPointAtDistance, getPathPositionAtDistance, getPathSegmentPointAtParameter, getPathSegmentTangentAtParameter, getPathSignedArea, getPathTangentAtDistance, getQuadraticBezierPoint, getQuadraticBezierTangent, releasePathMesh, releasePathMeshTyped, reversePath, samplePathMorph, strokePath, tessellatePath, tessellatePathTyped, tessellateStrokePath, transformPath, translatePath, } from './contract';
|
|
1
|
+
export { acquirePathMesh, acquirePathMeshTyped, appendPathArc, appendPathArcTo, appendPathCircle, appendPathClose, appendPathCubicCurveTo, appendPathCurveTo, appendPathEllipse, appendPathLineTo, appendPathMoveTo, appendPathPolygon, appendPathPolyline, appendPathRectangle, appendPathRoundRectangle, cleanPath, clonePath, containsPathPoint, copyPath, createPath, createPathMorph, dashPath, decimatePath, explainPathMorphCreation, explainStrokePathTessellation, fitPathCurves, flattenPath, forEachPathSegment, getCubicBezierCurvature, getCubicBezierPoint, getCubicBezierTangent, getPathBounds, getPathContourLengths, getPathContourOrientation, getPathCurvatureAtDistance, getPathLastPoint, getPathLength, getPathNearestPoint, getPathPointAtDistance, getPathPositionAtDistance, getPathSegmentCurvatureAtParameter, getPathSegmentPointAtParameter, getPathSegmentTangentAtParameter, getPathSignedArea, getPathTangentAtDistance, getQuadraticBezierCurvature, getQuadraticBezierPoint, getQuadraticBezierTangent, releasePathMesh, releasePathMeshTyped, reversePath, samplePathMorph, strokePath, tessellatePath, tessellatePathInto, tessellatePathTyped, tessellatePathTypedInto, tessellateStrokePath, transformPath, translatePath, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,wBAAwB,EACxB,6BAA6B,EAC7B,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,wBAAwB,EACxB,6BAA6B,EAC7B,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,kCAAkC,EAClC,8BAA8B,EAC9B,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC"}
|
package/dist/path.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAStF,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,UAAQ,EACrB,gBAAgB,UAAQ,GACvB,IAAI,CAiBN;AAWD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,IAAI,CA8DN;AAKD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAEzF;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAEhD;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,IAAI,CAGN;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,IAAI,CAGN;AAKD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAU5G;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAGvE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAGvE;AAKD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAO9E;AAKD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAM/E;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMzG;AAMD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAChD,IAAI,CAiBN;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,WAAuB,GAAG,IAAI,CAIjE;AAKD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
|
package/dist/path.js
CHANGED
|
@@ -205,14 +205,29 @@ export function createPath(winding = 'nonZero') {
|
|
|
205
205
|
initializePath(out, winding);
|
|
206
206
|
return finishEntity(out);
|
|
207
207
|
}
|
|
208
|
-
//
|
|
209
|
-
//
|
|
210
|
-
//
|
|
208
|
+
// Returns the current pen position after the last command. For most commands this is the
|
|
209
|
+
// last anchor in the data stream. After CLOSE the SVG/Canvas pen resets to the subpath
|
|
210
|
+
// origin (the most recent MOVE_TO), so this walks backward to find it.
|
|
211
211
|
export function getPathLastPoint(path) {
|
|
212
|
-
const data = path
|
|
212
|
+
const { commands, data } = path;
|
|
213
213
|
if (data.length < 2)
|
|
214
214
|
return null;
|
|
215
|
-
|
|
215
|
+
const last = commands.length - 1;
|
|
216
|
+
if (last < 0)
|
|
217
|
+
return null;
|
|
218
|
+
if (commands[last] !== PathCommand.CLOSE) {
|
|
219
|
+
return [data[data.length - 2], data[data.length - 1]];
|
|
220
|
+
}
|
|
221
|
+
let di = data.length;
|
|
222
|
+
for (let ci = last - 1; ci >= 0; ci--) {
|
|
223
|
+
const cmd = commands[ci];
|
|
224
|
+
di -= pathCommandDataCount(cmd);
|
|
225
|
+
if (cmd === PathCommand.MOVE_TO)
|
|
226
|
+
return [data[di], data[di + 1]];
|
|
227
|
+
if (cmd === PathCommand.WIDE_MOVE_TO)
|
|
228
|
+
return [data[di + 2], data[di + 3]];
|
|
229
|
+
}
|
|
230
|
+
return null;
|
|
216
231
|
}
|
|
217
232
|
// Appends a quarter-circle arc (90°) centered at (cx, cy) with the given radius, from `startAngle`
|
|
218
233
|
// to `startAngle + π/2`. Uses a single cubic bezier with the kappa approximation.
|
|
@@ -296,6 +311,15 @@ function vectorAngle(ux, uy, vx, vy) {
|
|
|
296
311
|
const angle = Math.acos(cosAngle);
|
|
297
312
|
return ux * vy - uy * vx < 0 ? -angle : angle;
|
|
298
313
|
}
|
|
314
|
+
function pathCommandDataCount(cmd) {
|
|
315
|
+
if (cmd === PathCommand.MOVE_TO || cmd === PathCommand.LINE_TO)
|
|
316
|
+
return 2;
|
|
317
|
+
if (cmd === PathCommand.CURVE_TO || cmd === PathCommand.WIDE_MOVE_TO || cmd === PathCommand.WIDE_LINE_TO)
|
|
318
|
+
return 4;
|
|
319
|
+
if (cmd === PathCommand.CUBIC_CURVE_TO)
|
|
320
|
+
return 6;
|
|
321
|
+
return 0;
|
|
322
|
+
}
|
|
299
323
|
// Optimal cubic Bezier arc approximation constant: 4*(sqrt(2)-1)/3.
|
|
300
324
|
// Maximum radial error is < 0.03% of the radius.
|
|
301
325
|
//# sourceMappingURL=path.js.map
|
package/dist/path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathMeshPool.d.ts","sourceRoot":"","sources":["../src/pathMeshPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAa9E,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"pathMeshPool.d.ts","sourceRoot":"","sources":["../src/pathMeshPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAa9E,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,QAAQ,CAIhF;AAKD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,aAAa,CAI1F;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAIpD;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAI9D"}
|
package/dist/pathMeshPool.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { tessellatePathInto } from './tessellatePath';
|
|
2
|
+
import { tessellatePathTypedInto } from './tessellatePathTyped';
|
|
3
3
|
// Pool-backed flatten+tessellate for hot-loop usage. Each `acquirePathMesh` retrieves a `PathMesh`
|
|
4
4
|
// from a shared pool, tessellates the given path into it (replacing its contents), and returns it.
|
|
5
5
|
// Call `releasePathMesh` when done; the mesh is returned to the pool and must not be used again.
|
|
@@ -10,30 +10,15 @@ import { tessellatePathTyped } from './tessellatePathTyped';
|
|
|
10
10
|
// Each acquire/release pair is a matching bracket — do not acquire without releasing.
|
|
11
11
|
export function acquirePathMesh(path, tolerance = 0.25) {
|
|
12
12
|
const mesh = pathMeshPool.length > 0 ? pathMeshPool.pop() : { vertices: [], indices: [] };
|
|
13
|
-
|
|
14
|
-
mesh.vertices.length = 0;
|
|
15
|
-
mesh.indices.length = 0;
|
|
16
|
-
const fresh = tessellatePath(path, tolerance);
|
|
17
|
-
// Copy into the pooled mesh rather than replacing, to preserve the array identity the caller
|
|
18
|
-
// receives (important if the caller passed an array reference into a renderer upload).
|
|
19
|
-
for (let i = 0; i < fresh.vertices.length; i++)
|
|
20
|
-
mesh.vertices[i] = fresh.vertices[i];
|
|
21
|
-
mesh.vertices.length = fresh.vertices.length;
|
|
22
|
-
for (let i = 0; i < fresh.indices.length; i++)
|
|
23
|
-
mesh.indices[i] = fresh.indices[i];
|
|
24
|
-
mesh.indices.length = fresh.indices.length;
|
|
13
|
+
tessellatePathInto(path, mesh, tolerance);
|
|
25
14
|
return mesh;
|
|
26
15
|
}
|
|
27
16
|
// Pool-backed flatten+tessellate returning a `PathMeshTyped` (Float32Array / Uint32Array). The same
|
|
28
17
|
// acquire/release contract applies: one matching `releasePathMeshTyped` per `acquirePathMeshTyped`.
|
|
18
|
+
// Typed arrays are grow-only: reused when the new mesh fits, reallocated when it exceeds capacity.
|
|
29
19
|
export function acquirePathMeshTyped(path, tolerance = 0.25) {
|
|
30
|
-
// Typed array meshes are reallocated on each acquire (the underlying ArrayBuffer cannot be
|
|
31
|
-
// resized to a different length). Pooling amortizes the allocation when the path data size is
|
|
32
|
-
// stable across frames; if size varies significantly the gain is smaller.
|
|
33
|
-
const fresh = tessellatePathTyped(path, tolerance);
|
|
34
20
|
const mesh = typedPool.length > 0 ? typedPool.pop() : { vertices: new Float32Array(0), indices: new Uint32Array(0) };
|
|
35
|
-
mesh
|
|
36
|
-
mesh.indices = fresh.indices;
|
|
21
|
+
tessellatePathTypedInto(path, mesh, tolerance);
|
|
37
22
|
return mesh;
|
|
38
23
|
}
|
|
39
24
|
// Returns a `PathMesh` previously obtained from `acquirePathMesh` to the pool.
|
package/dist/pathMeshPool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathMeshPool.js","sourceRoot":"","sources":["../src/pathMeshPool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pathMeshPool.js","sourceRoot":"","sources":["../src/pathMeshPool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,mGAAmG;AACnG,mGAAmG;AACnG,iGAAiG;AACjG,EAAE;AACF,gGAAgG;AAChG,8FAA8F;AAC9F,mGAAmG;AACnG,sFAAsF;AACtF,MAAM,UAAU,eAAe,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACpE,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC3F,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oGAAoG;AACpG,oGAAoG;AACpG,mGAAmG;AACnG,MAAM,UAAU,oBAAoB,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACzE,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtH,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,6CAA6C;AAC7C,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,IAAI,YAAY,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QAC1C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,oBAAoB,CAAC,IAAmB;IACtD,IAAI,SAAS,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,iGAAiG;AACjG,yDAAyD;AACzD,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,YAAY,GAAe,EAAE,CAAC;AACpC,MAAM,SAAS,GAAoB,EAAE,CAAC"}
|
package/dist/tessellatePath.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { Path, PathMesh } from '@flighthq/types/contract';
|
|
2
2
|
export declare function tessellatePath(path: Readonly<Path>, tolerance?: number): PathMesh;
|
|
3
|
+
export declare function tessellatePathInto(path: Readonly<Path>, out: PathMesh, tolerance?: number): void;
|
|
3
4
|
//# sourceMappingURL=tessellatePath.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tessellatePath.d.ts","sourceRoot":"","sources":["../src/tessellatePath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAS/D,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,QAAQ,CAQ/E"}
|
|
1
|
+
{"version":3,"file":"tessellatePath.d.ts","sourceRoot":"","sources":["../src/tessellatePath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAS/D,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,QAAQ,CAQ/E;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,SAAO,GAAG,IAAI,CAO9F"}
|
package/dist/tessellatePath.js
CHANGED
|
@@ -5,14 +5,24 @@ import { flattenPath } from './flattenPath';
|
|
|
5
5
|
// but holes/overlap/self-intersection are NOT subtracted here (a hole contour fills solid). Use the
|
|
6
6
|
// flatten + stencil-then-cover route for those. Winding rule is not consulted by this triangulator.
|
|
7
7
|
export function tessellatePath(path, tolerance = 0.25) {
|
|
8
|
-
const contours = flattenPath(path, tolerance);
|
|
9
8
|
const vertices = [];
|
|
10
9
|
const indices = [];
|
|
10
|
+
const contours = flattenPath(path, tolerance);
|
|
11
11
|
for (let i = 0; i < contours.length; i++) {
|
|
12
12
|
tessellateContour(contours[i], vertices, indices);
|
|
13
13
|
}
|
|
14
14
|
return { vertices, indices };
|
|
15
15
|
}
|
|
16
|
+
// Tessellates into an existing `PathMesh`, clearing and reusing its backing arrays so pool callers
|
|
17
|
+
// avoid per-call allocation. The arrays grow via `push` but are never replaced — identity is stable.
|
|
18
|
+
export function tessellatePathInto(path, out, tolerance = 0.25) {
|
|
19
|
+
out.vertices.length = 0;
|
|
20
|
+
out.indices.length = 0;
|
|
21
|
+
const contours = flattenPath(path, tolerance);
|
|
22
|
+
for (let i = 0; i < contours.length; i++) {
|
|
23
|
+
tessellateContour(contours[i], out.vertices, out.indices);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
16
26
|
// Ear-clips one simple polygon contour (flat x,y pairs) into the shared vertex/index buffers. Vertices
|
|
17
27
|
// are appended in source order; the working order is normalized to CCW for the convexity test.
|
|
18
28
|
function tessellateContour(source, vertices, indices) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tessellatePath.js","sourceRoot":"","sources":["../src/tessellatePath.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,uGAAuG;AACvG,oGAAoG;AACpG,uGAAuG;AACvG,oGAAoG;AACpG,oGAAoG;AACpG,MAAM,UAAU,cAAc,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACnE,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"tessellatePath.js","sourceRoot":"","sources":["../src/tessellatePath.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,uGAAuG;AACvG,oGAAoG;AACpG,uGAAuG;AACvG,oGAAoG;AACpG,oGAAoG;AACpG,MAAM,UAAU,cAAc,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACnE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,mGAAmG;AACnG,qGAAqG;AACrG,MAAM,UAAU,kBAAkB,CAAC,IAAoB,EAAE,GAAa,EAAE,SAAS,GAAG,IAAI;IACtF,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,uGAAuG;AACvG,+FAA+F;AAC/F,SAAS,iBAAiB,CAAC,MAAgB,EAAE,QAAkB,EAAE,OAAiB;IAChF,sGAAsG;IACtG,sGAAsG;IACtG,iGAAiG;IACjG,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;YAAE,SAAS;QACxF,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC;IAEpB,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAChC,kFAAkF;IAClF,IAAI,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACzG,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO;IAEtB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAC1B,SAAS,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,8FAA8F;IAC9F,iDAAiD;IACjD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACtC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACtC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClB,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,6DAA6D;IACpF,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,SAAS,KAAK,CAAC,OAAiB,EAAE,IAAc,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IAC/E,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,4CAA4C;IAC5C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QAC5C,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;IAClG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU;IAEV,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,OAAO,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { Path, PathMeshTyped } from '@flighthq/types/contract';
|
|
2
2
|
export declare function tessellatePathTyped(path: Readonly<Path>, tolerance?: number): PathMeshTyped;
|
|
3
|
+
export declare function tessellatePathTypedInto(path: Readonly<Path>, out: PathMeshTyped, tolerance?: number): void;
|
|
3
4
|
//# sourceMappingURL=tessellatePathTyped.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tessellatePathTyped.d.ts","sourceRoot":"","sources":["../src/tessellatePathTyped.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOpE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,aAAa,CAMzF"}
|
|
1
|
+
{"version":3,"file":"tessellatePathTyped.d.ts","sourceRoot":"","sources":["../src/tessellatePathTyped.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOpE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,SAAO,GAAG,aAAa,CAMzF;AAID,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,SAAO,GAAG,IAAI,CAQxG"}
|
|
@@ -9,4 +9,19 @@ export function tessellatePathTyped(path, tolerance = 0.25) {
|
|
|
9
9
|
indices: new Uint32Array(mesh.indices),
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
+
// Tessellates into an existing `PathMeshTyped`, reusing its typed arrays when they are large enough
|
|
13
|
+
// and reallocating grow-only when the new mesh exceeds their capacity.
|
|
14
|
+
export function tessellatePathTypedInto(path, out, tolerance = 0.25) {
|
|
15
|
+
const mesh = tessellatePath(path, tolerance);
|
|
16
|
+
const vLen = mesh.vertices.length;
|
|
17
|
+
const iLen = mesh.indices.length;
|
|
18
|
+
if (out.vertices.length < vLen)
|
|
19
|
+
out.vertices = new Float32Array(vLen);
|
|
20
|
+
if (out.indices.length < iLen)
|
|
21
|
+
out.indices = new Uint32Array(iLen);
|
|
22
|
+
for (let i = 0; i < vLen; i++)
|
|
23
|
+
out.vertices[i] = mesh.vertices[i];
|
|
24
|
+
for (let i = 0; i < iLen; i++)
|
|
25
|
+
out.indices[i] = mesh.indices[i];
|
|
26
|
+
}
|
|
12
27
|
//# sourceMappingURL=tessellatePathTyped.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tessellatePathTyped.js","sourceRoot":"","sources":["../src/tessellatePathTyped.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,oGAAoG;AACpG,+FAA+F;AAC/F,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACxE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO;QACL,QAAQ,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzC,OAAO,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;KACvC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"tessellatePathTyped.js","sourceRoot":"","sources":["../src/tessellatePathTyped.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,oGAAoG;AACpG,+FAA+F;AAC/F,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CAAC,IAAoB,EAAE,SAAS,GAAG,IAAI;IACxE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO;QACL,QAAQ,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzC,OAAO,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,uEAAuE;AACvE,MAAM,UAAU,uBAAuB,CAAC,IAAoB,EAAE,GAAkB,EAAE,SAAS,GAAG,IAAI;IAChG,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACjC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI;QAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI;QAAE,GAAG,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/path",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.973.788d3d7",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/entity": "0.5.1-next.
|
|
42
|
-
"@flighthq/math": "0.5.1-next.
|
|
43
|
-
"@flighthq/types": "0.5.1-next.
|
|
41
|
+
"@flighthq/entity": "0.5.1-next.973.788d3d7",
|
|
42
|
+
"@flighthq/math": "0.5.1-next.973.788d3d7",
|
|
43
|
+
"@flighthq/types": "0.5.1-next.973.788d3d7"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"typescript": "^5.3.0"
|
|
47
47
|
},
|
|
48
|
-
"description": "Vector path
|
|
48
|
+
"description": "Vector path construction, conversion, measurement, analysis, transformation, editing, and stroking",
|
|
49
49
|
"sideEffects": false
|
|
50
50
|
}
|
package/src/dashPath.test.ts
CHANGED
|
@@ -80,6 +80,18 @@ describe('dashPath', () => {
|
|
|
80
80
|
expect(moves.length).toBeGreaterThanOrEqual(2);
|
|
81
81
|
});
|
|
82
82
|
|
|
83
|
+
it('is alias-safe when source and out are the same path', () => {
|
|
84
|
+
const path = createPath();
|
|
85
|
+
appendPathMoveTo(path, 0, 0);
|
|
86
|
+
appendPathLineTo(path, 100, 0);
|
|
87
|
+
appendPathLineTo(path, 100, 100);
|
|
88
|
+
const ref = createPath();
|
|
89
|
+
dashPath(path, [15, 10], 0, ref);
|
|
90
|
+
dashPath(path, [15, 10], 0, path);
|
|
91
|
+
expect(path.commands).toStrictEqual(ref.commands);
|
|
92
|
+
expect(path.data).toStrictEqual(ref.data);
|
|
93
|
+
});
|
|
94
|
+
|
|
83
95
|
it('preserves winding rule', () => {
|
|
84
96
|
const source = createPath('evenOdd');
|
|
85
97
|
appendPathMoveTo(source, 0, 0);
|
package/src/decimatePath.test.ts
CHANGED
|
@@ -66,4 +66,20 @@ describe('decimatePath', () => {
|
|
|
66
66
|
decimatePath(createPath(), 1, out);
|
|
67
67
|
expect(out.commands).toStrictEqual([]);
|
|
68
68
|
});
|
|
69
|
+
|
|
70
|
+
it('is alias-safe when source and out are the same path', () => {
|
|
71
|
+
const path = createPath('evenOdd');
|
|
72
|
+
appendPathMoveTo(path, 0, 0);
|
|
73
|
+
appendPathLineTo(path, 25, 0.1);
|
|
74
|
+
appendPathLineTo(path, 50, -0.1);
|
|
75
|
+
appendPathLineTo(path, 100, 0);
|
|
76
|
+
const expected = createPath();
|
|
77
|
+
decimatePath(path, 1, expected);
|
|
78
|
+
|
|
79
|
+
decimatePath(path, 1, path);
|
|
80
|
+
|
|
81
|
+
expect(path.commands).toStrictEqual(expected.commands);
|
|
82
|
+
expect(path.data).toStrictEqual(expected.data);
|
|
83
|
+
expect(path.winding).toBe(expected.winding);
|
|
84
|
+
});
|
|
69
85
|
});
|
|
@@ -53,6 +53,23 @@ describe('fitPathCurves', () => {
|
|
|
53
53
|
expect(out.commands).toStrictEqual([]);
|
|
54
54
|
});
|
|
55
55
|
|
|
56
|
+
it('is alias-safe when source and out are the same path', () => {
|
|
57
|
+
const path = createPath('evenOdd');
|
|
58
|
+
appendPathMoveTo(path, 0, 0);
|
|
59
|
+
appendPathLineTo(path, 25, 20);
|
|
60
|
+
appendPathLineTo(path, 50, 30);
|
|
61
|
+
appendPathLineTo(path, 75, 20);
|
|
62
|
+
appendPathLineTo(path, 100, 0);
|
|
63
|
+
const expected = createPath();
|
|
64
|
+
fitPathCurves(path, 1, expected);
|
|
65
|
+
|
|
66
|
+
fitPathCurves(path, 1, path);
|
|
67
|
+
|
|
68
|
+
expect(path.commands).toStrictEqual(expected.commands);
|
|
69
|
+
expect(path.data).toStrictEqual(expected.data);
|
|
70
|
+
expect(path.winding).toBe(expected.winding);
|
|
71
|
+
});
|
|
72
|
+
|
|
56
73
|
it('preserves winding rule', () => {
|
|
57
74
|
const source = createPath('evenOdd');
|
|
58
75
|
appendPathMoveTo(source, 0, 0);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { getPathCurvatureAtDistance } from './getPathCurvatureAtDistance';
|
|
2
|
+
import { getPathLength } from './getPathLength';
|
|
3
|
+
import { appendPathCircle, appendPathCurveTo, appendPathLineTo, appendPathMoveTo, createPath } from './path';
|
|
4
|
+
|
|
5
|
+
describe('getPathCurvatureAtDistance', () => {
|
|
6
|
+
it('returns zero for an empty path', () => {
|
|
7
|
+
expect(getPathCurvatureAtDistance(createPath(), 0)).toBe(0);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('returns zero for a straight line', () => {
|
|
11
|
+
const path = createPath();
|
|
12
|
+
appendPathMoveTo(path, 0, 0);
|
|
13
|
+
appendPathLineTo(path, 100, 0);
|
|
14
|
+
expect(getPathCurvatureAtDistance(path, 50)).toBe(0);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('returns nonzero curvature on a curved path', () => {
|
|
18
|
+
const path = createPath();
|
|
19
|
+
appendPathMoveTo(path, 0, 0);
|
|
20
|
+
appendPathCurveTo(path, 50, 100, 100, 0);
|
|
21
|
+
const k = getPathCurvatureAtDistance(path, 50);
|
|
22
|
+
expect(k).not.toBe(0);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('returns approximately 1/r for a circle of known radius', () => {
|
|
26
|
+
const r = 50;
|
|
27
|
+
const path = createPath();
|
|
28
|
+
appendPathCircle(path, 0, 0, r);
|
|
29
|
+
const circumference = 2 * Math.PI * r;
|
|
30
|
+
const k = getPathCurvatureAtDistance(path, circumference / 4);
|
|
31
|
+
expect(Math.abs(k)).toBeCloseTo(1 / r, 1);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('clamps at the end of the path for distances beyond length', () => {
|
|
35
|
+
const path = createPath();
|
|
36
|
+
appendPathMoveTo(path, 0, 0);
|
|
37
|
+
appendPathCurveTo(path, 50, 100, 100, 0);
|
|
38
|
+
const tolerance = 0.01;
|
|
39
|
+
const length = getPathLength(path, tolerance);
|
|
40
|
+
const kEnd = getPathCurvatureAtDistance(path, length, tolerance);
|
|
41
|
+
const kBeyond = getPathCurvatureAtDistance(path, length + 100, tolerance);
|
|
42
|
+
expect(kEnd).not.toBe(0);
|
|
43
|
+
expect(kBeyond).toBeCloseTo(kEnd, 12);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
@@ -1,13 +1,34 @@
|
|
|
1
1
|
import {
|
|
2
|
+
getCubicBezierCurvature,
|
|
2
3
|
getCubicBezierPoint,
|
|
3
4
|
getCubicBezierTangent,
|
|
5
|
+
getPathSegmentCurvatureAtParameter,
|
|
4
6
|
getPathSegmentPointAtParameter,
|
|
5
7
|
getPathSegmentTangentAtParameter,
|
|
8
|
+
getQuadraticBezierCurvature,
|
|
6
9
|
getQuadraticBezierPoint,
|
|
7
10
|
getQuadraticBezierTangent,
|
|
8
11
|
} from './getPathSegmentAtParameter';
|
|
9
12
|
import { appendPathCubicCurveTo, appendPathCurveTo, appendPathLineTo, appendPathMoveTo, createPath } from './path';
|
|
10
13
|
|
|
14
|
+
describe('getCubicBezierCurvature', () => {
|
|
15
|
+
it('returns zero for a straight cubic', () => {
|
|
16
|
+
expect(getCubicBezierCurvature(0, 0, 1, 0, 2, 0, 3, 0, 0.5)).toBe(0);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('returns nonzero curvature for a curved cubic', () => {
|
|
20
|
+
const k = getCubicBezierCurvature(0, 0, 0, 1, 1, 1, 1, 0, 0.5);
|
|
21
|
+
expect(k).not.toBe(0);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('returns a known curvature for a circular-arc approximation', () => {
|
|
25
|
+
// Quarter circle approximation r=1: P0=(1,0), C1=(1,0.5523), C2=(0.5523,1), P1=(0,1)
|
|
26
|
+
// κ should be close to 1/r = 1 at the midpoint.
|
|
27
|
+
const k = getCubicBezierCurvature(1, 0, 1, 0.5523, 0.5523, 1, 0, 1, 0.5);
|
|
28
|
+
expect(Math.abs(k)).toBeCloseTo(1, 1);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
11
32
|
describe('getCubicBezierPoint', () => {
|
|
12
33
|
it('returns the start point at t=0', () => {
|
|
13
34
|
const out = { x: 0, y: 0 };
|
|
@@ -50,6 +71,36 @@ describe('getCubicBezierTangent', () => {
|
|
|
50
71
|
});
|
|
51
72
|
});
|
|
52
73
|
|
|
74
|
+
describe('getPathSegmentCurvatureAtParameter', () => {
|
|
75
|
+
it('returns null for an out-of-range segment index', () => {
|
|
76
|
+
const path = createPath();
|
|
77
|
+
appendPathMoveTo(path, 0, 0);
|
|
78
|
+
appendPathLineTo(path, 1, 0);
|
|
79
|
+
expect(getPathSegmentCurvatureAtParameter(path, 5, 0.5)).toBeNull();
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('returns zero for a line segment', () => {
|
|
83
|
+
const path = createPath();
|
|
84
|
+
appendPathMoveTo(path, 0, 0);
|
|
85
|
+
appendPathLineTo(path, 10, 0);
|
|
86
|
+
expect(getPathSegmentCurvatureAtParameter(path, 0, 0.5)).toBe(0);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it('returns nonzero for a quadratic bezier segment', () => {
|
|
90
|
+
const path = createPath();
|
|
91
|
+
appendPathMoveTo(path, 0, 0);
|
|
92
|
+
appendPathCurveTo(path, 50, 100, 100, 0);
|
|
93
|
+
expect(getPathSegmentCurvatureAtParameter(path, 0, 0.5)).not.toBe(0);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it('returns nonzero for a cubic bezier segment', () => {
|
|
97
|
+
const path = createPath();
|
|
98
|
+
appendPathMoveTo(path, 0, 0);
|
|
99
|
+
appendPathCubicCurveTo(path, 0, 1, 1, 1, 1, 0);
|
|
100
|
+
expect(getPathSegmentCurvatureAtParameter(path, 0, 0.5)).not.toBe(0);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
53
104
|
describe('getPathSegmentPointAtParameter', () => {
|
|
54
105
|
it('returns false for out-of-range segment index', () => {
|
|
55
106
|
const path = createPath();
|
|
@@ -150,6 +201,23 @@ describe('getPathSegmentTangentAtParameter', () => {
|
|
|
150
201
|
});
|
|
151
202
|
});
|
|
152
203
|
|
|
204
|
+
describe('getQuadraticBezierCurvature', () => {
|
|
205
|
+
it('returns zero for a straight quadratic', () => {
|
|
206
|
+
expect(getQuadraticBezierCurvature(0, 0, 5, 0, 10, 0, 0.5)).toBe(0);
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
it('returns nonzero for a curved quadratic', () => {
|
|
210
|
+
const k = getQuadraticBezierCurvature(0, 0, 50, 100, 100, 0, 0.5);
|
|
211
|
+
expect(k).not.toBe(0);
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
it('returns consistent sign for a right-turning curve', () => {
|
|
215
|
+
// P0=(0,0) → C=(0,10) → P1=(10,10) — in y-down, second derivative turns right → negative
|
|
216
|
+
const k = getQuadraticBezierCurvature(0, 0, 0, 10, 10, 10, 0.5);
|
|
217
|
+
expect(k).toBeLessThan(0);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
|
|
153
221
|
describe('getQuadraticBezierPoint', () => {
|
|
154
222
|
it('returns midpoint at t=0.5 for a known quadratic curve', () => {
|
|
155
223
|
// P0=(0,0), C=(50,100), P1=(100,0)
|
package/src/path.test.ts
CHANGED
|
@@ -75,6 +75,20 @@ describe('appendPathArc', () => {
|
|
|
75
75
|
});
|
|
76
76
|
|
|
77
77
|
describe('appendPathArcTo', () => {
|
|
78
|
+
it('starts after CLOSE from the subpath origin', () => {
|
|
79
|
+
const path = createPath();
|
|
80
|
+
appendPathMoveTo(path, 10, 20);
|
|
81
|
+
appendPathLineTo(path, 30, 40);
|
|
82
|
+
appendPathClose(path);
|
|
83
|
+
appendPathArcTo(path, 10, 10, 0, false, true, 30, 20);
|
|
84
|
+
|
|
85
|
+
const expected = createPath();
|
|
86
|
+
appendPathMoveTo(expected, 10, 20);
|
|
87
|
+
appendPathArcTo(expected, 10, 10, 0, false, true, 30, 20);
|
|
88
|
+
|
|
89
|
+
expect(path.data.slice(4)).toStrictEqual(expected.data.slice(2));
|
|
90
|
+
});
|
|
91
|
+
|
|
78
92
|
it('appends a LINE_TO when radiusX is 0', () => {
|
|
79
93
|
const path = createPath();
|
|
80
94
|
appendPathMoveTo(path, 0, 0);
|
|
@@ -333,18 +347,18 @@ describe('getPathLastPoint', () => {
|
|
|
333
347
|
expect(getPathLastPoint(path)).toStrictEqual([70, 80]);
|
|
334
348
|
});
|
|
335
349
|
|
|
336
|
-
it('returns the
|
|
350
|
+
it('returns the MOVE_TO origin after appendPathClose', () => {
|
|
337
351
|
const path = createPath();
|
|
338
352
|
appendPathMoveTo(path, 10, 20);
|
|
339
353
|
appendPathLineTo(path, 30, 40);
|
|
340
354
|
appendPathClose(path);
|
|
341
|
-
expect(getPathLastPoint(path)).toStrictEqual([
|
|
355
|
+
expect(getPathLastPoint(path)).toStrictEqual([10, 20]);
|
|
342
356
|
});
|
|
343
357
|
|
|
344
|
-
it('returns the
|
|
358
|
+
it('returns the MOVE_TO origin after appendPathRectangle (ends with CLOSE)', () => {
|
|
345
359
|
const path = createPath();
|
|
346
360
|
appendPathRectangle(path, 10, 20, 100, 50);
|
|
347
|
-
expect(getPathLastPoint(path)).toStrictEqual([10,
|
|
361
|
+
expect(getPathLastPoint(path)).toStrictEqual([10, 20]);
|
|
348
362
|
});
|
|
349
363
|
|
|
350
364
|
it('returns the endpoint after appendPathArc', () => {
|
|
@@ -363,10 +377,10 @@ describe('getPathLastPoint', () => {
|
|
|
363
377
|
expect(last[1]).toBeCloseTo(20);
|
|
364
378
|
});
|
|
365
379
|
|
|
366
|
-
it('returns the
|
|
380
|
+
it('returns the MOVE_TO origin after appendPathPolygon (ends with CLOSE)', () => {
|
|
367
381
|
const path = createPath();
|
|
368
382
|
appendPathPolygon(path, [0, 0, 100, 0, 100, 100]);
|
|
369
|
-
expect(getPathLastPoint(path)).toStrictEqual([
|
|
383
|
+
expect(getPathLastPoint(path)).toStrictEqual([0, 0]);
|
|
370
384
|
});
|
|
371
385
|
|
|
372
386
|
it('returns the last point after appendPathPolyline', () => {
|
package/src/pathMeshPool.test.ts
CHANGED
|
@@ -57,6 +57,20 @@ describe('acquirePathMeshTyped', () => {
|
|
|
57
57
|
expect(mesh.indices.length).toBeGreaterThan(0);
|
|
58
58
|
releasePathMeshTyped(mesh);
|
|
59
59
|
});
|
|
60
|
+
it('reuses a released wrapper and its typed arrays', () => {
|
|
61
|
+
const path = createPath();
|
|
62
|
+
appendPathRectangle(path, 0, 0, 100, 50);
|
|
63
|
+
const first = acquirePathMeshTyped(path);
|
|
64
|
+
const vertices = first.vertices;
|
|
65
|
+
const indices = first.indices;
|
|
66
|
+
releasePathMeshTyped(first);
|
|
67
|
+
|
|
68
|
+
const second = acquirePathMeshTyped(path);
|
|
69
|
+
expect(second).toBe(first);
|
|
70
|
+
expect(second.vertices).toBe(vertices);
|
|
71
|
+
expect(second.indices).toBe(indices);
|
|
72
|
+
releasePathMeshTyped(second);
|
|
73
|
+
});
|
|
60
74
|
});
|
|
61
75
|
|
|
62
76
|
describe('releasePathMesh', () => {
|
package/src/reversePath.test.ts
CHANGED
|
@@ -38,14 +38,18 @@ describe('reversePath', () => {
|
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
it('is alias-safe when out is the same as source', () => {
|
|
41
|
-
const path = createPath();
|
|
41
|
+
const path = createPath('evenOdd');
|
|
42
42
|
appendPathMoveTo(path, 0, 0);
|
|
43
43
|
appendPathLineTo(path, 10, 0);
|
|
44
|
-
appendPathLineTo(path, 20,
|
|
44
|
+
appendPathLineTo(path, 20, 10);
|
|
45
|
+
appendPathClose(path);
|
|
46
|
+
const expected = createPath();
|
|
47
|
+
reversePath(path, expected);
|
|
48
|
+
|
|
45
49
|
reversePath(path, path);
|
|
46
|
-
|
|
47
|
-
expect(path.
|
|
48
|
-
expect(path.data
|
|
49
|
-
expect(path.
|
|
50
|
+
|
|
51
|
+
expect(path.commands).toStrictEqual(expected.commands);
|
|
52
|
+
expect(path.data).toStrictEqual(expected.data);
|
|
53
|
+
expect(path.winding).toBe(expected.winding);
|
|
50
54
|
});
|
|
51
55
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { PathMesh } from '@flighthq/types/contract';
|
|
2
2
|
|
|
3
3
|
import { appendPathLineTo, appendPathMoveTo, createPath } from './path';
|
|
4
|
-
import { tessellatePath } from './tessellatePath';
|
|
4
|
+
import { tessellatePath, tessellatePathInto } from './tessellatePath';
|
|
5
5
|
|
|
6
6
|
function meshArea(mesh: PathMesh): number {
|
|
7
7
|
let area = 0;
|
|
@@ -60,3 +60,32 @@ describe('tessellatePath', () => {
|
|
|
60
60
|
expect(mesh.vertices).toHaveLength(0);
|
|
61
61
|
});
|
|
62
62
|
});
|
|
63
|
+
|
|
64
|
+
describe('tessellatePathInto', () => {
|
|
65
|
+
it('writes the same result as tessellatePath into a provided mesh', () => {
|
|
66
|
+
const path = polygon(0, 0, 10, 0, 10, 10, 0, 10);
|
|
67
|
+
const expected = tessellatePath(path);
|
|
68
|
+
const out = { vertices: [] as number[], indices: [] as number[] };
|
|
69
|
+
tessellatePathInto(path, out);
|
|
70
|
+
expect(out.vertices).toStrictEqual(expected.vertices);
|
|
71
|
+
expect(out.indices).toStrictEqual(expected.indices);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it('clears previous contents before writing', () => {
|
|
75
|
+
const path = polygon(0, 0, 10, 0, 0, 10);
|
|
76
|
+
const out = { vertices: [99, 99, 99], indices: [0, 1, 2, 3] };
|
|
77
|
+
tessellatePathInto(path, out);
|
|
78
|
+
expect(out.indices).toHaveLength(3);
|
|
79
|
+
expect(out.vertices).toHaveLength(6);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('reuses the same array identity across calls', () => {
|
|
83
|
+
const path = polygon(0, 0, 10, 0, 10, 10, 0, 10);
|
|
84
|
+
const out = { vertices: [] as number[], indices: [] as number[] };
|
|
85
|
+
const vRef = out.vertices;
|
|
86
|
+
const iRef = out.indices;
|
|
87
|
+
tessellatePathInto(path, out);
|
|
88
|
+
expect(out.vertices).toBe(vRef);
|
|
89
|
+
expect(out.indices).toBe(iRef);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { appendPathRectangle, createPath } from './path';
|
|
2
2
|
import { tessellatePath } from './tessellatePath';
|
|
3
|
-
import { tessellatePathTyped } from './tessellatePathTyped';
|
|
3
|
+
import { tessellatePathTyped, tessellatePathTypedInto } from './tessellatePathTyped';
|
|
4
4
|
|
|
5
5
|
describe('tessellatePathTyped', () => {
|
|
6
6
|
it('returns Float32Array vertices and Uint32Array indices', () => {
|
|
@@ -24,3 +24,35 @@ describe('tessellatePathTyped', () => {
|
|
|
24
24
|
expect(mesh.indices.length).toBe(0);
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
|
+
|
|
28
|
+
describe('tessellatePathTypedInto', () => {
|
|
29
|
+
it('writes into an existing PathMeshTyped with the same values', () => {
|
|
30
|
+
const path = createPath();
|
|
31
|
+
appendPathRectangle(path, 0, 0, 100, 100);
|
|
32
|
+
const expected = tessellatePath(path);
|
|
33
|
+
const out = { vertices: new Float32Array(0), indices: new Uint32Array(0) };
|
|
34
|
+
tessellatePathTypedInto(path, out);
|
|
35
|
+
expect(Array.from(out.vertices).slice(0, expected.vertices.length)).toStrictEqual(expected.vertices);
|
|
36
|
+
expect(Array.from(out.indices).slice(0, expected.indices.length)).toStrictEqual(expected.indices);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('grows typed arrays when the mesh exceeds capacity', () => {
|
|
40
|
+
const path = createPath();
|
|
41
|
+
appendPathRectangle(path, 0, 0, 50, 50);
|
|
42
|
+
const out = { vertices: new Float32Array(2), indices: new Uint32Array(1) };
|
|
43
|
+
tessellatePathTypedInto(path, out);
|
|
44
|
+
expect(out.vertices.length).toBeGreaterThanOrEqual(8);
|
|
45
|
+
expect(out.indices.length).toBeGreaterThanOrEqual(6);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('reuses typed arrays when capacity is sufficient', () => {
|
|
49
|
+
const path = createPath();
|
|
50
|
+
appendPathRectangle(path, 0, 0, 50, 50);
|
|
51
|
+
const big = { vertices: new Float32Array(1000), indices: new Uint32Array(1000) };
|
|
52
|
+
const vRef = big.vertices;
|
|
53
|
+
const iRef = big.indices;
|
|
54
|
+
tessellatePathTypedInto(path, big);
|
|
55
|
+
expect(big.vertices).toBe(vRef);
|
|
56
|
+
expect(big.indices).toBe(iRef);
|
|
57
|
+
});
|
|
58
|
+
});
|