@leafer/path 2.0.6 → 2.0.7
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/package.json +5 -5
- package/src/BezierHelper.ts +34 -0
- package/src/PathCorner.ts +1 -0
- package/types/index.d.ts +4 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leafer/path",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.7",
|
|
4
4
|
"description": "@leafer/path",
|
|
5
5
|
"author": "Chao (Leafer) Wan",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"leaferjs"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@leafer/data": "2.0.
|
|
26
|
-
"@leafer/math": "2.0.
|
|
27
|
-
"@leafer/debug": "2.0.
|
|
25
|
+
"@leafer/data": "2.0.7",
|
|
26
|
+
"@leafer/math": "2.0.7",
|
|
27
|
+
"@leafer/debug": "2.0.7"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@leafer/interface": "2.0.
|
|
30
|
+
"@leafer/interface": "2.0.7"
|
|
31
31
|
}
|
|
32
32
|
}
|
package/src/BezierHelper.ts
CHANGED
|
@@ -270,6 +270,40 @@ export const BezierHelper = {
|
|
|
270
270
|
return 3 * o * o * (v1 - fromV) + 6 * o * t * (v2 - v1) + 3 * t * t * (toV - v2)
|
|
271
271
|
},
|
|
272
272
|
|
|
273
|
+
cut(t: number, fromX: number, fromY: number, x1: number, y1: number, x2: number, y2: number, toX: number, toY: number) {
|
|
274
|
+
// clamp
|
|
275
|
+
if (t <= 0) return { left: null, right: [x1, y1, x2, y2, toX, toY] }
|
|
276
|
+
else if (t >= 1) return { left: [x1, y1, x2, y2, toX, toY], right: null }
|
|
277
|
+
|
|
278
|
+
const u = 1 - t
|
|
279
|
+
|
|
280
|
+
// 一级插值
|
|
281
|
+
const leftX1 = fromX * u + x1 * t
|
|
282
|
+
const leftY1 = fromY * u + y1 * t
|
|
283
|
+
|
|
284
|
+
const P12x = x1 * u + x2 * t
|
|
285
|
+
const P12y = y1 * u + y2 * t
|
|
286
|
+
|
|
287
|
+
const rightX2 = x2 * u + toX * t
|
|
288
|
+
const rightY2 = y2 * u + toY * t
|
|
289
|
+
|
|
290
|
+
// 二级插值
|
|
291
|
+
const leftX2 = leftX1 * u + P12x * t
|
|
292
|
+
const leftY2 = leftY1 * u + P12y * t
|
|
293
|
+
|
|
294
|
+
const rightX1 = P12x * u + rightX2 * t
|
|
295
|
+
const rightY1 = P12y * u + rightY2 * t
|
|
296
|
+
|
|
297
|
+
// 最终切点
|
|
298
|
+
const leftX = leftX2 * u + rightX1 * t
|
|
299
|
+
const leftY = leftY2 * u + rightY1 * t
|
|
300
|
+
|
|
301
|
+
return {
|
|
302
|
+
left: [leftX1, leftY1, leftX2, leftY2, leftX, leftY],
|
|
303
|
+
right: [rightX1, rightY1, rightX2, rightY2, toX, toY]
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
273
307
|
}
|
|
274
308
|
|
|
275
309
|
const { getPointAndSet, toTwoPointBounds, ellipse } = BezierHelper
|
package/src/PathCorner.ts
CHANGED
|
@@ -10,6 +10,7 @@ const { M, L, Z } = Command
|
|
|
10
10
|
const { getCenterX, getCenterY } = PointHelper
|
|
11
11
|
const { arcTo } = PathCommandDataHelper
|
|
12
12
|
|
|
13
|
+
// @leafer-in/corner will rewrite
|
|
13
14
|
export const PathCorner = {
|
|
14
15
|
|
|
15
16
|
smooth(data: IPathCommandData, cornerRadius: number, _cornerSmoothing?: number): IPathCommandData {
|
package/types/index.d.ts
CHANGED
|
@@ -94,6 +94,10 @@ declare const BezierHelper: {
|
|
|
94
94
|
getPointAndSet(t: number, fromX: number, fromY: number, x1: number, y1: number, x2: number, y2: number, toX: number, toY: number, setPoint: IPointData): void;
|
|
95
95
|
getPoint(t: number, fromX: number, fromY: number, x1: number, y1: number, x2: number, y2: number, toX: number, toY: number): IPointData;
|
|
96
96
|
getDerivative(t: number, fromV: number, v1: number, v2: number, toV: number): number;
|
|
97
|
+
cut(t: number, fromX: number, fromY: number, x1: number, y1: number, x2: number, y2: number, toX: number, toY: number): {
|
|
98
|
+
left: number[];
|
|
99
|
+
right: number[];
|
|
100
|
+
};
|
|
97
101
|
};
|
|
98
102
|
|
|
99
103
|
declare const EllipseHelper: {
|