curvy 1.0.2 → 1.0.4
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/dist/curve/cubic2d.d.mts +2 -2
- package/dist/curve/cubic2d.d.ts +2 -2
- package/dist/curve/cubic2d.mjs +5 -4
- package/dist/curve/linear2d.d.mts +2 -2
- package/dist/curve/linear2d.d.ts +2 -2
- package/dist/curve/linear2d.mjs +4 -3
- package/dist/curve/quadratic2d.d.mts +2 -2
- package/dist/curve/quadratic2d.d.ts +2 -2
- package/dist/curve/quadratic2d.mjs +5 -4
- package/dist/interval.d.mts +1 -1
- package/dist/interval.d.ts +1 -1
- package/dist/interval.mjs +2 -1
- package/dist/matrix/matrix2x2.d.mts +1 -1
- package/dist/matrix/matrix2x2.d.ts +1 -1
- package/dist/matrix/matrix2x2.mjs +4 -3
- package/dist/matrix/matrix3x3.d.mts +2 -2
- package/dist/matrix/matrix3x3.d.ts +2 -2
- package/dist/matrix/matrix3x3.mjs +6 -5
- package/dist/matrix/matrix4x4.d.mts +1 -1
- package/dist/matrix/matrix4x4.d.ts +1 -1
- package/dist/matrix/matrix4x4.mjs +7 -6
- package/dist/path/cubic2d.d.mts +2 -2
- package/dist/path/cubic2d.d.ts +2 -2
- package/dist/path/cubic2d.mjs +5 -4
- package/dist/path/linear2d.d.mts +2 -2
- package/dist/path/linear2d.d.ts +2 -2
- package/dist/path/linear2d.mjs +4 -3
- package/dist/path/quadratic2d.d.mts +2 -2
- package/dist/path/quadratic2d.d.ts +2 -2
- package/dist/path/quadratic2d.mjs +5 -4
- package/dist/{shared/curvy.BN-oFBsc.d.mts → pipe.d.mts} +33 -1
- package/dist/{shared/curvy.BN-oFBsc.d.ts → pipe.d.ts} +33 -1
- package/dist/{shared/curvy.DLOeble8.mjs → pipe.mjs} +1 -37
- package/dist/polynomial/cubic.d.mts +2 -2
- package/dist/polynomial/cubic.d.ts +2 -2
- package/dist/polynomial/cubic.mjs +4 -3
- package/dist/polynomial/linear.d.mts +2 -2
- package/dist/polynomial/linear.d.ts +2 -2
- package/dist/polynomial/linear.mjs +3 -2
- package/dist/polynomial/quadratic.d.mts +2 -2
- package/dist/polynomial/quadratic.d.ts +2 -2
- package/dist/polynomial/quadratic.mjs +4 -3
- package/dist/shared/{curvy.O57gIOmy.mjs → curvy.BDhiZ7He.mjs} +2 -1
- package/dist/shared/{curvy.BrrC9QVB.mjs → curvy.BYDuJMHv.mjs} +3 -2
- package/dist/shared/{curvy.CkJRVnqj.d.ts → curvy.BsHoYJNv.d.ts} +1 -1
- package/dist/shared/{curvy.DTco5vku.mjs → curvy.BvJuXVua.mjs} +4 -3
- package/dist/shared/{curvy.ZjG-q57I.mjs → curvy.BzVmUIKm.mjs} +3 -2
- package/dist/shared/{curvy.B1zfBfvf.mjs → curvy.C2XGH0R0.mjs} +2 -1
- package/dist/shared/curvy.CE4X6_Is.mjs +181 -0
- package/dist/shared/{curvy.DV4S13Cq.mjs → curvy.D7YvJAMV.mjs} +2 -1
- package/dist/shared/{curvy.BPOevbwG.mjs → curvy.DSxnsSFS.mjs} +2 -1
- package/dist/shared/{curvy.DwHW5Fqt.d.mts → curvy.NsmY7zcr.d.mts} +1 -1
- package/dist/splines/basis2d.d.mts +5 -3
- package/dist/splines/basis2d.d.ts +5 -3
- package/dist/splines/basis2d.mjs +13 -10
- package/dist/splines/bezier2d.d.mts +11 -6
- package/dist/splines/bezier2d.d.ts +11 -6
- package/dist/splines/bezier2d.mjs +13 -105
- package/dist/splines/cardinal2d.d.mts +8 -3
- package/dist/splines/cardinal2d.d.ts +8 -3
- package/dist/splines/cardinal2d.mjs +17 -10
- package/dist/splines/hermite2d.d.mts +5 -3
- package/dist/splines/hermite2d.d.ts +5 -3
- package/dist/splines/hermite2d.mjs +13 -10
- package/dist/utils.d.mts +27 -0
- package/dist/utils.d.ts +27 -0
- package/dist/utils.mjs +47 -0
- package/dist/vector/vector2.d.mts +1 -1
- package/dist/vector/vector2.d.ts +1 -1
- package/dist/vector/vector2.mjs +3 -2
- package/dist/vector/vector3.d.mts +1 -1
- package/dist/vector/vector3.d.ts +1 -1
- package/dist/vector/vector3.mjs +3 -2
- package/dist/vector/vector4.d.mts +1 -1
- package/dist/vector/vector4.d.ts +1 -1
- package/dist/vector/vector4.mjs +3 -2
- package/package.json +9 -1
- package/dist/shared/curvy.DN9ptodP.mjs +0 -55
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import '../shared/curvy.BN-oFBsc.js';
|
|
2
1
|
import '../interval.js';
|
|
2
|
+
import '../pipe.js';
|
|
3
3
|
import '../vector/vector2.js';
|
|
4
|
-
export { L as LinearPolynomial, U as antiderivative, T as derivative, V as domain, J as fromPointSlope, K as fromPoints, I as fromVector, G as isLinearPolynomial, X as length, H as make, S as monotonicity, W as range, R as root, M as solve, O as solveInverse, P as toInverseSolver, N as toSolver } from '../shared/curvy.
|
|
4
|
+
export { L as LinearPolynomial, U as antiderivative, T as derivative, V as domain, J as fromPointSlope, K as fromPoints, I as fromVector, G as isLinearPolynomial, X as length, H as make, S as monotonicity, W as range, R as root, M as solve, O as solveInverse, P as toInverseSolver, N as toSolver } from '../shared/curvy.BsHoYJNv.js';
|
|
5
5
|
import '../shared/curvy.Bf5TIk31.js';
|
|
6
6
|
import '../vector/vector3.js';
|
|
7
7
|
import '../vector/vector4.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { i as isLinearPolynomial$1, a as make$1, f as fromVector$1, d as fromPointSlope$1, e as fromPoints$1, s as solve$1, t as toSolver$1, c as solveInverse$1, g as toInverseSolver$1, m as monotonicity$1, h as derivative$1, j as antiderivative$1, k as domain$1, r as range$1, l as length$1 } from '../shared/curvy.
|
|
2
|
-
import '../shared/curvy.DLOeble8.mjs';
|
|
1
|
+
import { i as isLinearPolynomial$1, a as make$1, f as fromVector$1, d as fromPointSlope$1, e as fromPoints$1, s as solve$1, t as toSolver$1, c as solveInverse$1, g as toInverseSolver$1, m as monotonicity$1, h as derivative$1, j as antiderivative$1, k as domain$1, r as range$1, l as length$1 } from '../shared/curvy.BDhiZ7He.mjs';
|
|
3
2
|
import '../interval.mjs';
|
|
3
|
+
import '../pipe.mjs';
|
|
4
|
+
import '../utils.mjs';
|
|
4
5
|
|
|
5
6
|
const isLinearPolynomial = isLinearPolynomial$1;
|
|
6
7
|
const make = make$1;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import '../shared/curvy.BN-oFBsc.mjs';
|
|
2
1
|
import '../interval.mjs';
|
|
2
|
+
import '../pipe.mjs';
|
|
3
3
|
import '../vector/vector3.mjs';
|
|
4
|
-
export { Q as QuadraticPolynomial, A as antiderivative, F as curvature, w as derivative, B as domain, y as extreme, o as fromVector, k as isQuadraticPolynomial, E as length, n as make, z as monotonicity, D as range, x as roots, p as solve, u as solveInverse, v as toInverseSolver, q as toSolver } from '../shared/curvy.
|
|
4
|
+
export { Q as QuadraticPolynomial, A as antiderivative, F as curvature, w as derivative, B as domain, y as extreme, o as fromVector, k as isQuadraticPolynomial, E as length, n as make, z as monotonicity, D as range, x as roots, p as solve, u as solveInverse, v as toInverseSolver, q as toSolver } from '../shared/curvy.NsmY7zcr.mjs';
|
|
5
5
|
import '../shared/curvy.Bf5TIk31.mjs';
|
|
6
6
|
import '../vector/vector2.mjs';
|
|
7
7
|
import '../vector/vector4.mjs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import '../shared/curvy.BN-oFBsc.js';
|
|
2
1
|
import '../interval.js';
|
|
2
|
+
import '../pipe.js';
|
|
3
3
|
import '../vector/vector3.js';
|
|
4
|
-
export { Q as QuadraticPolynomial, A as antiderivative, F as curvature, w as derivative, B as domain, y as extreme, o as fromVector, k as isQuadraticPolynomial, E as length, n as make, z as monotonicity, D as range, x as roots, p as solve, u as solveInverse, v as toInverseSolver, q as toSolver } from '../shared/curvy.
|
|
4
|
+
export { Q as QuadraticPolynomial, A as antiderivative, F as curvature, w as derivative, B as domain, y as extreme, o as fromVector, k as isQuadraticPolynomial, E as length, n as make, z as monotonicity, D as range, x as roots, p as solve, u as solveInverse, v as toInverseSolver, q as toSolver } from '../shared/curvy.BsHoYJNv.js';
|
|
5
5
|
import '../shared/curvy.Bf5TIk31.js';
|
|
6
6
|
import '../vector/vector2.js';
|
|
7
7
|
import '../vector/vector4.js';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { i as isQuadraticPolynomial$1, m as make$1, f as fromVector$1, c as solve$1, t as toSolver$1, s as solveInverse$1, e as toInverseSolver$1, d as derivative$1, r as roots$1, h as extreme$1, b as monotonicity$1, j as antiderivative$1, k as domain$1, n as range$1, l as length$1, o as curvature$1 } from '../shared/curvy.
|
|
2
|
-
import '../shared/curvy.DLOeble8.mjs';
|
|
1
|
+
import { i as isQuadraticPolynomial$1, m as make$1, f as fromVector$1, c as solve$1, t as toSolver$1, s as solveInverse$1, e as toInverseSolver$1, d as derivative$1, r as roots$1, h as extreme$1, b as monotonicity$1, j as antiderivative$1, k as domain$1, n as range$1, l as length$1, o as curvature$1 } from '../shared/curvy.BzVmUIKm.mjs';
|
|
3
2
|
import '../interval.mjs';
|
|
4
|
-
import '../
|
|
3
|
+
import '../pipe.mjs';
|
|
4
|
+
import '../utils.mjs';
|
|
5
|
+
import '../shared/curvy.BDhiZ7He.mjs';
|
|
5
6
|
|
|
6
7
|
const isQuadraticPolynomial = isQuadraticPolynomial$1;
|
|
7
8
|
const make = make$1;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { P as Pipeable, r as round, d as dual } from './curvy.DLOeble8.mjs';
|
|
2
1
|
import { make as make$1, size } from '../interval.mjs';
|
|
2
|
+
import { Pipeable, dual } from '../pipe.mjs';
|
|
3
|
+
import { round } from '../utils.mjs';
|
|
3
4
|
|
|
4
5
|
const QuadraticPolynomialTypeId = Symbol.for(
|
|
5
6
|
"curvy/polynomial/quadratic"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { invariant, round } from '../utils.mjs';
|
|
2
|
+
import { dual, Pipeable } from '../pipe.mjs';
|
|
3
|
+
import { m as make$1, d as dot } from './curvy.DSxnsSFS.mjs';
|
|
3
4
|
|
|
4
5
|
function toIndex(input) {
|
|
5
6
|
if (typeof input === "number") {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as Pipeable } from './curvy.BN-oFBsc.js';
|
|
2
1
|
import { Interval } from '../interval.js';
|
|
2
|
+
import { Pipeable } from '../pipe.js';
|
|
3
3
|
import { Vector2 } from '../vector/vector2.js';
|
|
4
4
|
import { Vector3 } from '../vector/vector3.js';
|
|
5
5
|
import { Vector4 } from '../vector/vector4.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { o as toThreeDimensionalIndex, d as determinant$1, m as make$1 } from './curvy.
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { o as toThreeDimensionalIndex, d as determinant$1, m as make$1 } from './curvy.BYDuJMHv.mjs';
|
|
2
|
+
import { dual, Pipeable } from '../pipe.mjs';
|
|
3
|
+
import { round, invariant } from '../utils.mjs';
|
|
4
|
+
import { c as components, m as make$2, d as dot } from './curvy.D7YvJAMV.mjs';
|
|
4
5
|
|
|
5
6
|
const Matrix3x3TypeId = Symbol.for("curvy/matrix3x3");
|
|
6
7
|
class Matrix3x3Impl extends Pipeable {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { P as Pipeable, r as round, d as dual } from './curvy.DLOeble8.mjs';
|
|
2
1
|
import { size, contains, fromMinMax } from '../interval.mjs';
|
|
3
|
-
import {
|
|
2
|
+
import { Pipeable, dual } from '../pipe.mjs';
|
|
3
|
+
import { round } from '../utils.mjs';
|
|
4
|
+
import { Q as QuadraticPolynomialImpl, b as QuadraticPolynomialTypeId, a as make$1, c as solveInverse$1, m as monotonicity$1, r as range$1, l as length$1, s as solve$1 } from './curvy.BDhiZ7He.mjs';
|
|
4
5
|
|
|
5
6
|
const CubicPolynomialTypeId = Symbol.for(
|
|
6
7
|
"curvy/polynomial/cubic"
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { vectorProductLeft, make as make$3, solveSystem } from '../matrix/matrix4x4.mjs';
|
|
2
|
+
import { fromCurves } from '../path/cubic2d.mjs';
|
|
3
|
+
import { dual, Pipeable } from '../pipe.mjs';
|
|
4
|
+
import { invariant } from '../utils.mjs';
|
|
5
|
+
import { make as make$4 } from '../vector/vector2.mjs';
|
|
6
|
+
import { make as make$2 } from '../vector/vector4.mjs';
|
|
7
|
+
import { fromPolynomials } from '../curve/cubic2d.mjs';
|
|
8
|
+
import { fromVector } from '../polynomial/cubic.mjs';
|
|
9
|
+
|
|
10
|
+
function* toPointQuads(points, stride) {
|
|
11
|
+
let p0;
|
|
12
|
+
let p1;
|
|
13
|
+
let p2;
|
|
14
|
+
let p3;
|
|
15
|
+
for (const point of points) {
|
|
16
|
+
if (p0 === void 0) {
|
|
17
|
+
p0 = point;
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (p1 === void 0) {
|
|
21
|
+
p1 = point;
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (p2 === void 0) {
|
|
25
|
+
p2 = point;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
p3 = point;
|
|
29
|
+
yield [p0, p1, p2, p3];
|
|
30
|
+
if (stride === 1) {
|
|
31
|
+
p0 = p1;
|
|
32
|
+
p1 = p2;
|
|
33
|
+
p2 = p3;
|
|
34
|
+
} else if (stride === 2) {
|
|
35
|
+
p0 = p2;
|
|
36
|
+
p1 = p3;
|
|
37
|
+
p2 = void 0;
|
|
38
|
+
} else if (stride === 3) {
|
|
39
|
+
p0 = p3;
|
|
40
|
+
p1 = void 0;
|
|
41
|
+
p2 = void 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function* toCurves(points, matrix, stride) {
|
|
46
|
+
for (const [p0, p1, p2, p3] of toPointQuads(points, stride)) {
|
|
47
|
+
yield fromPolynomials(
|
|
48
|
+
fromVector(
|
|
49
|
+
vectorProductLeft(
|
|
50
|
+
matrix,
|
|
51
|
+
make$2(p0.x, p1.x, p2.x, p3.x)
|
|
52
|
+
)
|
|
53
|
+
),
|
|
54
|
+
fromVector(
|
|
55
|
+
vectorProductLeft(
|
|
56
|
+
matrix,
|
|
57
|
+
make$2(p0.y, p1.y, p2.y, p3.y)
|
|
58
|
+
)
|
|
59
|
+
)
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const characteristic$1 = make$3(
|
|
65
|
+
1,
|
|
66
|
+
0,
|
|
67
|
+
0,
|
|
68
|
+
0,
|
|
69
|
+
-3,
|
|
70
|
+
3,
|
|
71
|
+
0,
|
|
72
|
+
0,
|
|
73
|
+
3,
|
|
74
|
+
-6,
|
|
75
|
+
3,
|
|
76
|
+
0,
|
|
77
|
+
-1,
|
|
78
|
+
3,
|
|
79
|
+
-3,
|
|
80
|
+
1
|
|
81
|
+
);
|
|
82
|
+
const Bezier2dTypeId = Symbol("curvy/splines/bezier2d");
|
|
83
|
+
class Bezier2dImpl extends Pipeable {
|
|
84
|
+
[Bezier2dTypeId] = Bezier2dTypeId;
|
|
85
|
+
points;
|
|
86
|
+
constructor(points) {
|
|
87
|
+
invariant(points.length >= 4, "cubic splines requires 4 or more points");
|
|
88
|
+
invariant(
|
|
89
|
+
points.length % 3 === 1,
|
|
90
|
+
"cubic splines requires (n * 3) + 1 points"
|
|
91
|
+
);
|
|
92
|
+
super();
|
|
93
|
+
this.points = points;
|
|
94
|
+
}
|
|
95
|
+
[Symbol.iterator]() {
|
|
96
|
+
return this.points[Symbol.iterator]();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const isCubicBezier2d$1 = (p) => typeof p === "object" && p !== null && Bezier2dTypeId in p;
|
|
100
|
+
const make$1 = (p0, p1, p2, p3) => new Bezier2dImpl([p0, p1, p2, p3]);
|
|
101
|
+
const fromArray$1 = (points) => new Bezier2dImpl(points);
|
|
102
|
+
const append$1 = dual(
|
|
103
|
+
4,
|
|
104
|
+
(p, p1, p2, p3) => new Bezier2dImpl(
|
|
105
|
+
(p instanceof Bezier2dImpl ? p.points : Array.from(p)).concat(p1, p2, p3)
|
|
106
|
+
)
|
|
107
|
+
);
|
|
108
|
+
const fromSpline$1 = (p, matrix, stride) => {
|
|
109
|
+
const points = [];
|
|
110
|
+
let x;
|
|
111
|
+
let y;
|
|
112
|
+
for (const [p0, p1, p2, p3] of toPointQuads(p, stride)) {
|
|
113
|
+
x = solveSystem(
|
|
114
|
+
characteristic$1,
|
|
115
|
+
vectorProductLeft(matrix, make$2(p0.x, p1.x, p2.x, p3.x))
|
|
116
|
+
);
|
|
117
|
+
y = solveSystem(
|
|
118
|
+
characteristic$1,
|
|
119
|
+
vectorProductLeft(matrix, make$2(p0.y, p1.y, p2.y, p3.y))
|
|
120
|
+
);
|
|
121
|
+
points.push(
|
|
122
|
+
make$4(x.x, y.x),
|
|
123
|
+
make$4(x.y, y.y),
|
|
124
|
+
make$4(x.z, y.z)
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
if (x && y) {
|
|
128
|
+
points.push(make$4(x.w, y.w));
|
|
129
|
+
}
|
|
130
|
+
return fromArray$1(points);
|
|
131
|
+
};
|
|
132
|
+
const appendTangentAligned$1 = dual(4, (p, a, p5, p6) => {
|
|
133
|
+
const points = p instanceof Bezier2dImpl ? p.points : Array.from(p);
|
|
134
|
+
const p2 = points[points.length - 2];
|
|
135
|
+
const p3 = points[points.length - 1];
|
|
136
|
+
const p4 = make$4(p3.x + (p3.x - p2.x) * a, p3.y + (p3.y - p2.y) * a);
|
|
137
|
+
return append$1(p, p4, p5, p6);
|
|
138
|
+
});
|
|
139
|
+
const appendCurvatureAligned = dual(
|
|
140
|
+
4,
|
|
141
|
+
(p, a, b, p6) => {
|
|
142
|
+
const points = p instanceof Bezier2dImpl ? p.points : Array.from(p);
|
|
143
|
+
const p1 = points[points.length - 3];
|
|
144
|
+
const p2 = points[points.length - 2];
|
|
145
|
+
const p3 = points[points.length - 1];
|
|
146
|
+
const p4 = make$4(p3.x + (p3.x - p2.x) * a, p3.y + (p3.y - p2.y) * a);
|
|
147
|
+
const p5 = make$4(
|
|
148
|
+
p3.x + (p3.x - p2.x) * (2 * a + a ** 2 + b / 2) + (p1.x - p2.x) * a ** 2,
|
|
149
|
+
p3.y + (p3.y - p2.y) * (2 * a + a ** 2 + b / 2) + (p1.y - p2.y) * a ** 2
|
|
150
|
+
);
|
|
151
|
+
return append$1(p, p4, p5, p6);
|
|
152
|
+
}
|
|
153
|
+
);
|
|
154
|
+
const appendVelocityAligned$1 = dual(
|
|
155
|
+
3,
|
|
156
|
+
(p, p5, p6) => appendTangentAligned$1(p, 1, p5, p6)
|
|
157
|
+
);
|
|
158
|
+
const appendAccelerationAligned$1 = dual(2, (p, p6) => {
|
|
159
|
+
const points = p instanceof Bezier2dImpl ? p.points : Array.from(p);
|
|
160
|
+
const p1 = points[points.length - 3];
|
|
161
|
+
const p2 = points[points.length - 2];
|
|
162
|
+
const p3 = points[points.length - 1];
|
|
163
|
+
const p4 = make$4(2 * p3.x - p2.x, 2 * p3.y - p2.y);
|
|
164
|
+
const p5 = make$4(p1.x + 4 * (p3.x - p2.x), p1.y + 4 * (p3.y - p2.y));
|
|
165
|
+
return append$1(p, p4, p5, p6);
|
|
166
|
+
});
|
|
167
|
+
const toPath$1 = (p) => fromCurves(...toCurves(p, characteristic$1, 3));
|
|
168
|
+
|
|
169
|
+
const characteristic = characteristic$1;
|
|
170
|
+
const make = make$1;
|
|
171
|
+
const fromArray = fromArray$1;
|
|
172
|
+
const fromSpline = fromSpline$1;
|
|
173
|
+
const isCubicBezier2d = isCubicBezier2d$1;
|
|
174
|
+
const append = append$1;
|
|
175
|
+
const appendTangentAligned = appendTangentAligned$1;
|
|
176
|
+
const appendCurvatureMirrored = appendCurvatureAligned;
|
|
177
|
+
const appendVelocityAligned = appendVelocityAligned$1;
|
|
178
|
+
const appendAccelerationAligned = appendAccelerationAligned$1;
|
|
179
|
+
const toPath = toPath$1;
|
|
180
|
+
|
|
181
|
+
export { fromArray as a, append as b, characteristic as c, appendTangentAligned as d, appendCurvatureMirrored as e, fromSpline as f, appendVelocityAligned as g, appendAccelerationAligned as h, isCubicBezier2d as i, toPath as j, make as m, toCurves as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as Pipeable } from './curvy.BN-oFBsc.mjs';
|
|
2
1
|
import { Interval } from '../interval.mjs';
|
|
2
|
+
import { Pipeable } from '../pipe.mjs';
|
|
3
3
|
import { Vector2 } from '../vector/vector2.mjs';
|
|
4
4
|
import { Vector3 } from '../vector/vector3.mjs';
|
|
5
5
|
import { Vector4 } from '../vector/vector4.mjs';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { P as Pipeable } from '../shared/curvy.BN-oFBsc.mjs';
|
|
2
1
|
import { Matrix4x4 } from '../matrix/matrix4x4.mjs';
|
|
3
2
|
import { CubicPath2d } from '../path/cubic2d.mjs';
|
|
3
|
+
import { Pipeable } from '../pipe.mjs';
|
|
4
4
|
import { Vector2 } from '../vector/vector2.mjs';
|
|
5
|
+
import { Bezier2d } from './bezier2d.mjs';
|
|
5
6
|
import '../shared/curvy.Bf5TIk31.mjs';
|
|
6
7
|
import '../vector/vector4.mjs';
|
|
7
8
|
import '../matrix/matrix3x3.mjs';
|
|
@@ -9,7 +10,7 @@ import '../vector/vector3.mjs';
|
|
|
9
10
|
import '../matrix/matrix2x2.mjs';
|
|
10
11
|
import '../curve/cubic2d.mjs';
|
|
11
12
|
import '../interval.mjs';
|
|
12
|
-
import '../shared/curvy.
|
|
13
|
+
import '../shared/curvy.NsmY7zcr.mjs';
|
|
13
14
|
|
|
14
15
|
declare const Basis2dTypeId: unique symbol;
|
|
15
16
|
type Basis2dTypeId = typeof Basis2dTypeId;
|
|
@@ -32,5 +33,6 @@ declare const prepend: {
|
|
|
32
33
|
};
|
|
33
34
|
declare const withTriplicatedEndpoints: (p: Basis2d) => Basis2d;
|
|
34
35
|
declare const toPath: (p: Basis2d) => CubicPath2d;
|
|
36
|
+
declare const toBezier: (p: Basis2d) => Bezier2d;
|
|
35
37
|
|
|
36
|
-
export { type Basis2d, append, characteristic, fromArray, isBasis2d, make, prepend, toPath, withTriplicatedEndpoints };
|
|
38
|
+
export { type Basis2d, append, characteristic, fromArray, isBasis2d, make, prepend, toBezier, toPath, withTriplicatedEndpoints };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { P as Pipeable } from '../shared/curvy.BN-oFBsc.js';
|
|
2
1
|
import { Matrix4x4 } from '../matrix/matrix4x4.js';
|
|
3
2
|
import { CubicPath2d } from '../path/cubic2d.js';
|
|
3
|
+
import { Pipeable } from '../pipe.js';
|
|
4
4
|
import { Vector2 } from '../vector/vector2.js';
|
|
5
|
+
import { Bezier2d } from './bezier2d.js';
|
|
5
6
|
import '../shared/curvy.Bf5TIk31.js';
|
|
6
7
|
import '../vector/vector4.js';
|
|
7
8
|
import '../matrix/matrix3x3.js';
|
|
@@ -9,7 +10,7 @@ import '../vector/vector3.js';
|
|
|
9
10
|
import '../matrix/matrix2x2.js';
|
|
10
11
|
import '../curve/cubic2d.js';
|
|
11
12
|
import '../interval.js';
|
|
12
|
-
import '../shared/curvy.
|
|
13
|
+
import '../shared/curvy.BsHoYJNv.js';
|
|
13
14
|
|
|
14
15
|
declare const Basis2dTypeId: unique symbol;
|
|
15
16
|
type Basis2dTypeId = typeof Basis2dTypeId;
|
|
@@ -32,5 +33,6 @@ declare const prepend: {
|
|
|
32
33
|
};
|
|
33
34
|
declare const withTriplicatedEndpoints: (p: Basis2d) => Basis2d;
|
|
34
35
|
declare const toPath: (p: Basis2d) => CubicPath2d;
|
|
36
|
+
declare const toBezier: (p: Basis2d) => Bezier2d;
|
|
35
37
|
|
|
36
|
-
export { type Basis2d, append, characteristic, fromArray, isBasis2d, make, prepend, toPath, withTriplicatedEndpoints };
|
|
38
|
+
export { type Basis2d, append, characteristic, fromArray, isBasis2d, make, prepend, toBezier, toPath, withTriplicatedEndpoints };
|
package/dist/splines/basis2d.mjs
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import { a as roundDown, d as dual, P as Pipeable, i as invariant } from '../shared/curvy.DLOeble8.mjs';
|
|
2
1
|
import { make as make$2 } from '../matrix/matrix4x4.mjs';
|
|
3
2
|
import { fromCurves } from '../path/cubic2d.mjs';
|
|
4
|
-
import {
|
|
5
|
-
import '../
|
|
6
|
-
import '../shared/curvy.
|
|
7
|
-
import '../shared/curvy.
|
|
8
|
-
import '../shared/curvy.
|
|
9
|
-
import '../shared/curvy.
|
|
3
|
+
import { dual, Pipeable } from '../pipe.mjs';
|
|
4
|
+
import { roundDown, invariant } from '../utils.mjs';
|
|
5
|
+
import { t as toCurves, f as fromSpline } from '../shared/curvy.CE4X6_Is.mjs';
|
|
6
|
+
import '../shared/curvy.BYDuJMHv.mjs';
|
|
7
|
+
import '../shared/curvy.DSxnsSFS.mjs';
|
|
8
|
+
import '../shared/curvy.C2XGH0R0.mjs';
|
|
9
|
+
import '../shared/curvy.BvJuXVua.mjs';
|
|
10
|
+
import '../shared/curvy.D7YvJAMV.mjs';
|
|
10
11
|
import '../curve/cubic2d.mjs';
|
|
11
12
|
import '../interval.mjs';
|
|
12
13
|
import '../shared/curvy.DmVFTi0N.mjs';
|
|
13
14
|
import '../polynomial/cubic.mjs';
|
|
14
|
-
import '../shared/curvy.
|
|
15
|
-
import '../shared/curvy.
|
|
15
|
+
import '../shared/curvy.BzVmUIKm.mjs';
|
|
16
|
+
import '../shared/curvy.BDhiZ7He.mjs';
|
|
16
17
|
import '../polynomial/quadratic.mjs';
|
|
17
18
|
import '../vector/vector2.mjs';
|
|
18
19
|
import '../curve/linear2d.mjs';
|
|
@@ -73,6 +74,7 @@ const withTriplicatedEndpoints$1 = (p) => {
|
|
|
73
74
|
]);
|
|
74
75
|
};
|
|
75
76
|
const toPath$1 = (p) => fromCurves(...toCurves(p, characteristic$1, 1));
|
|
77
|
+
const toBezier$1 = (p) => fromSpline(p, characteristic$1, 1);
|
|
76
78
|
|
|
77
79
|
const characteristic = characteristic$1;
|
|
78
80
|
const isBasis2d = isBasis2d$1;
|
|
@@ -82,5 +84,6 @@ const append = append$1;
|
|
|
82
84
|
const prepend = prepend$1;
|
|
83
85
|
const withTriplicatedEndpoints = withTriplicatedEndpoints$1;
|
|
84
86
|
const toPath = toPath$1;
|
|
87
|
+
const toBezier = toBezier$1;
|
|
85
88
|
|
|
86
|
-
export { append, characteristic, fromArray, isBasis2d, make, prepend, toPath, withTriplicatedEndpoints };
|
|
89
|
+
export { append, characteristic, fromArray, isBasis2d, make, prepend, toBezier, toPath, withTriplicatedEndpoints };
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Matrix4x4 } from '../matrix/matrix4x4.mjs';
|
|
2
2
|
import { CubicPath2d } from '../path/cubic2d.mjs';
|
|
3
|
+
import { Pipeable } from '../pipe.mjs';
|
|
3
4
|
import { Vector2 } from '../vector/vector2.mjs';
|
|
4
|
-
import '../curve/cubic2d.mjs';
|
|
5
5
|
import '../shared/curvy.Bf5TIk31.mjs';
|
|
6
|
-
import '../interval.mjs';
|
|
7
|
-
import '../shared/curvy.DwHW5Fqt.mjs';
|
|
8
|
-
import '../vector/vector3.mjs';
|
|
9
6
|
import '../vector/vector4.mjs';
|
|
7
|
+
import '../matrix/matrix3x3.mjs';
|
|
8
|
+
import '../vector/vector3.mjs';
|
|
9
|
+
import '../matrix/matrix2x2.mjs';
|
|
10
|
+
import '../curve/cubic2d.mjs';
|
|
11
|
+
import '../interval.mjs';
|
|
12
|
+
import '../shared/curvy.NsmY7zcr.mjs';
|
|
10
13
|
|
|
11
14
|
declare const Bezier2dTypeId: unique symbol;
|
|
12
15
|
type Bezier2dTypeId = typeof Bezier2dTypeId;
|
|
@@ -15,8 +18,10 @@ interface Bezier2d extends Pipeable {
|
|
|
15
18
|
readonly [Bezier2dTypeId]: Bezier2dTypeId;
|
|
16
19
|
[Symbol.iterator](): IterableIterator<Vector2>;
|
|
17
20
|
}
|
|
21
|
+
declare const characteristic: Matrix4x4;
|
|
18
22
|
declare const make: (p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2) => Bezier2d;
|
|
19
23
|
declare const fromArray: (points: ReadonlyArray<Vector2>) => Bezier2d;
|
|
24
|
+
declare const fromSpline: (points: Iterable<Vector2>, matrix: Matrix4x4, stride: 1 | 2 | 3) => Bezier2d;
|
|
20
25
|
declare const isCubicBezier2d: (p: unknown) => p is Bezier2d;
|
|
21
26
|
declare const append: {
|
|
22
27
|
(p1: Vector2, p2: Vector2, p3: Vector2): (p: Bezier2d) => Bezier2d;
|
|
@@ -40,4 +45,4 @@ declare const appendAccelerationAligned: {
|
|
|
40
45
|
};
|
|
41
46
|
declare const toPath: (p: Bezier2d) => CubicPath2d;
|
|
42
47
|
|
|
43
|
-
export { type Bezier2d, append, appendAccelerationAligned, appendCurvatureMirrored, appendTangentAligned, appendVelocityAligned, fromArray, isCubicBezier2d, make, toPath };
|
|
48
|
+
export { type Bezier2d, append, appendAccelerationAligned, appendCurvatureMirrored, appendTangentAligned, appendVelocityAligned, characteristic, fromArray, fromSpline, isCubicBezier2d, make, toPath };
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Matrix4x4 } from '../matrix/matrix4x4.js';
|
|
2
2
|
import { CubicPath2d } from '../path/cubic2d.js';
|
|
3
|
+
import { Pipeable } from '../pipe.js';
|
|
3
4
|
import { Vector2 } from '../vector/vector2.js';
|
|
4
|
-
import '../curve/cubic2d.js';
|
|
5
5
|
import '../shared/curvy.Bf5TIk31.js';
|
|
6
|
-
import '../interval.js';
|
|
7
|
-
import '../shared/curvy.CkJRVnqj.js';
|
|
8
|
-
import '../vector/vector3.js';
|
|
9
6
|
import '../vector/vector4.js';
|
|
7
|
+
import '../matrix/matrix3x3.js';
|
|
8
|
+
import '../vector/vector3.js';
|
|
9
|
+
import '../matrix/matrix2x2.js';
|
|
10
|
+
import '../curve/cubic2d.js';
|
|
11
|
+
import '../interval.js';
|
|
12
|
+
import '../shared/curvy.BsHoYJNv.js';
|
|
10
13
|
|
|
11
14
|
declare const Bezier2dTypeId: unique symbol;
|
|
12
15
|
type Bezier2dTypeId = typeof Bezier2dTypeId;
|
|
@@ -15,8 +18,10 @@ interface Bezier2d extends Pipeable {
|
|
|
15
18
|
readonly [Bezier2dTypeId]: Bezier2dTypeId;
|
|
16
19
|
[Symbol.iterator](): IterableIterator<Vector2>;
|
|
17
20
|
}
|
|
21
|
+
declare const characteristic: Matrix4x4;
|
|
18
22
|
declare const make: (p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2) => Bezier2d;
|
|
19
23
|
declare const fromArray: (points: ReadonlyArray<Vector2>) => Bezier2d;
|
|
24
|
+
declare const fromSpline: (points: Iterable<Vector2>, matrix: Matrix4x4, stride: 1 | 2 | 3) => Bezier2d;
|
|
20
25
|
declare const isCubicBezier2d: (p: unknown) => p is Bezier2d;
|
|
21
26
|
declare const append: {
|
|
22
27
|
(p1: Vector2, p2: Vector2, p3: Vector2): (p: Bezier2d) => Bezier2d;
|
|
@@ -40,4 +45,4 @@ declare const appendAccelerationAligned: {
|
|
|
40
45
|
};
|
|
41
46
|
declare const toPath: (p: Bezier2d) => CubicPath2d;
|
|
42
47
|
|
|
43
|
-
export { type Bezier2d, append, appendAccelerationAligned, appendCurvatureMirrored, appendTangentAligned, appendVelocityAligned, fromArray, isCubicBezier2d, make, toPath };
|
|
48
|
+
export { type Bezier2d, append, appendAccelerationAligned, appendCurvatureMirrored, appendTangentAligned, appendVelocityAligned, characteristic, fromArray, fromSpline, isCubicBezier2d, make, toPath };
|
|
@@ -1,114 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import '../shared/curvy.
|
|
7
|
-
import '../shared/curvy.
|
|
8
|
-
import '../shared/curvy.
|
|
9
|
-
import '../shared/curvy.
|
|
10
|
-
import '../
|
|
1
|
+
export { b as append, h as appendAccelerationAligned, e as appendCurvatureMirrored, d as appendTangentAligned, g as appendVelocityAligned, c as characteristic, a as fromArray, f as fromSpline, i as isCubicBezier2d, m as make, j as toPath } from '../shared/curvy.CE4X6_Is.mjs';
|
|
2
|
+
import '../matrix/matrix4x4.mjs';
|
|
3
|
+
import '../shared/curvy.BYDuJMHv.mjs';
|
|
4
|
+
import '../utils.mjs';
|
|
5
|
+
import '../pipe.mjs';
|
|
6
|
+
import '../shared/curvy.DSxnsSFS.mjs';
|
|
7
|
+
import '../shared/curvy.C2XGH0R0.mjs';
|
|
8
|
+
import '../shared/curvy.BvJuXVua.mjs';
|
|
9
|
+
import '../shared/curvy.D7YvJAMV.mjs';
|
|
10
|
+
import '../path/cubic2d.mjs';
|
|
11
11
|
import '../curve/cubic2d.mjs';
|
|
12
12
|
import '../interval.mjs';
|
|
13
13
|
import '../shared/curvy.DmVFTi0N.mjs';
|
|
14
14
|
import '../polynomial/cubic.mjs';
|
|
15
|
-
import '../shared/curvy.
|
|
16
|
-
import '../shared/curvy.
|
|
15
|
+
import '../shared/curvy.BzVmUIKm.mjs';
|
|
16
|
+
import '../shared/curvy.BDhiZ7He.mjs';
|
|
17
17
|
import '../polynomial/quadratic.mjs';
|
|
18
|
+
import '../vector/vector2.mjs';
|
|
18
19
|
import '../curve/linear2d.mjs';
|
|
19
20
|
import '../polynomial/linear.mjs';
|
|
20
21
|
import '../curve/quadratic2d.mjs';
|
|
21
22
|
import '../vector/vector4.mjs';
|
|
22
|
-
|
|
23
|
-
const characteristic = make$2(
|
|
24
|
-
1,
|
|
25
|
-
0,
|
|
26
|
-
0,
|
|
27
|
-
0,
|
|
28
|
-
-3,
|
|
29
|
-
3,
|
|
30
|
-
0,
|
|
31
|
-
0,
|
|
32
|
-
3,
|
|
33
|
-
-6,
|
|
34
|
-
3,
|
|
35
|
-
0,
|
|
36
|
-
-1,
|
|
37
|
-
3,
|
|
38
|
-
-3,
|
|
39
|
-
1
|
|
40
|
-
);
|
|
41
|
-
const Bezier2dTypeId = Symbol("curvy/splines/bezier2d");
|
|
42
|
-
class Bezier2dImpl extends Pipeable {
|
|
43
|
-
[Bezier2dTypeId] = Bezier2dTypeId;
|
|
44
|
-
points;
|
|
45
|
-
constructor(points) {
|
|
46
|
-
invariant(points.length >= 4, "cubic splines requires 4 or more points");
|
|
47
|
-
invariant(
|
|
48
|
-
points.length % 3 === 1,
|
|
49
|
-
"cubic splines requires (n * 3) + 1 points"
|
|
50
|
-
);
|
|
51
|
-
super();
|
|
52
|
-
this.points = points;
|
|
53
|
-
}
|
|
54
|
-
[Symbol.iterator]() {
|
|
55
|
-
return this.points[Symbol.iterator]();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
const isCubicBezier2d$1 = (p) => typeof p === "object" && p !== null && Bezier2dTypeId in p;
|
|
59
|
-
const make$1 = (p0, p1, p2, p3) => new Bezier2dImpl([p0, p1, p2, p3]);
|
|
60
|
-
const fromArray$1 = (points) => new Bezier2dImpl(points);
|
|
61
|
-
const append$1 = dual(
|
|
62
|
-
4,
|
|
63
|
-
(p, p1, p2, p3) => new Bezier2dImpl(
|
|
64
|
-
(p instanceof Bezier2dImpl ? p.points : Array.from(p)).concat(p1, p2, p3)
|
|
65
|
-
)
|
|
66
|
-
);
|
|
67
|
-
const appendTangentAligned$1 = dual(4, (p, a, p5, p6) => {
|
|
68
|
-
const points = p instanceof Bezier2dImpl ? p.points : Array.from(p);
|
|
69
|
-
const p2 = points[points.length - 2];
|
|
70
|
-
const p3 = points[points.length - 1];
|
|
71
|
-
const p4 = make$3(p3.x + (p3.x - p2.x) * a, p3.y + (p3.y - p2.y) * a);
|
|
72
|
-
return append$1(p, p4, p5, p6);
|
|
73
|
-
});
|
|
74
|
-
const appendCurvatureAligned = dual(
|
|
75
|
-
4,
|
|
76
|
-
(p, a, b, p6) => {
|
|
77
|
-
const points = p instanceof Bezier2dImpl ? p.points : Array.from(p);
|
|
78
|
-
const p1 = points[points.length - 3];
|
|
79
|
-
const p2 = points[points.length - 2];
|
|
80
|
-
const p3 = points[points.length - 1];
|
|
81
|
-
const p4 = make$3(p3.x + (p3.x - p2.x) * a, p3.y + (p3.y - p2.y) * a);
|
|
82
|
-
const p5 = make$3(
|
|
83
|
-
p3.x + (p3.x - p2.x) * (2 * a + a ** 2 + b / 2) + (p1.x - p2.x) * a ** 2,
|
|
84
|
-
p3.y + (p3.y - p2.y) * (2 * a + a ** 2 + b / 2) + (p1.y - p2.y) * a ** 2
|
|
85
|
-
);
|
|
86
|
-
return append$1(p, p4, p5, p6);
|
|
87
|
-
}
|
|
88
|
-
);
|
|
89
|
-
const appendVelocityAligned$1 = dual(
|
|
90
|
-
3,
|
|
91
|
-
(p, p5, p6) => appendTangentAligned$1(p, 1, p5, p6)
|
|
92
|
-
);
|
|
93
|
-
const appendAccelerationAligned$1 = dual(2, (p, p6) => {
|
|
94
|
-
const points = p instanceof Bezier2dImpl ? p.points : Array.from(p);
|
|
95
|
-
const p1 = points[points.length - 3];
|
|
96
|
-
const p2 = points[points.length - 2];
|
|
97
|
-
const p3 = points[points.length - 1];
|
|
98
|
-
const p4 = make$3(2 * p3.x - p2.x, 2 * p3.y - p2.y);
|
|
99
|
-
const p5 = make$3(p1.x + 4 * (p3.x - p2.x), p1.y + 4 * (p3.y - p2.y));
|
|
100
|
-
return append$1(p, p4, p5, p6);
|
|
101
|
-
});
|
|
102
|
-
const toPath$1 = (p) => fromCurves(...toCurves(p, characteristic, 3));
|
|
103
|
-
|
|
104
|
-
const make = make$1;
|
|
105
|
-
const fromArray = fromArray$1;
|
|
106
|
-
const isCubicBezier2d = isCubicBezier2d$1;
|
|
107
|
-
const append = append$1;
|
|
108
|
-
const appendTangentAligned = appendTangentAligned$1;
|
|
109
|
-
const appendCurvatureMirrored = appendCurvatureAligned;
|
|
110
|
-
const appendVelocityAligned = appendVelocityAligned$1;
|
|
111
|
-
const appendAccelerationAligned = appendAccelerationAligned$1;
|
|
112
|
-
const toPath = toPath$1;
|
|
113
|
-
|
|
114
|
-
export { append, appendAccelerationAligned, appendCurvatureMirrored, appendTangentAligned, appendVelocityAligned, fromArray, isCubicBezier2d, make, toPath };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { P as Pipeable } from '../shared/curvy.BN-oFBsc.mjs';
|
|
2
1
|
import { Matrix4x4 } from '../matrix/matrix4x4.mjs';
|
|
3
2
|
import { CubicPath2d } from '../path/cubic2d.mjs';
|
|
3
|
+
import { Pipeable } from '../pipe.mjs';
|
|
4
4
|
import { Vector2 } from '../vector/vector2.mjs';
|
|
5
|
+
import { Bezier2d } from './bezier2d.mjs';
|
|
5
6
|
import '../shared/curvy.Bf5TIk31.mjs';
|
|
6
7
|
import '../vector/vector4.mjs';
|
|
7
8
|
import '../matrix/matrix3x3.mjs';
|
|
@@ -9,7 +10,7 @@ import '../vector/vector3.mjs';
|
|
|
9
10
|
import '../matrix/matrix2x2.mjs';
|
|
10
11
|
import '../curve/cubic2d.mjs';
|
|
11
12
|
import '../interval.mjs';
|
|
12
|
-
import '../shared/curvy.
|
|
13
|
+
import '../shared/curvy.NsmY7zcr.mjs';
|
|
13
14
|
|
|
14
15
|
declare const Cardinal2dTypeId: unique symbol;
|
|
15
16
|
type Cardinal2dTypeId = typeof Cardinal2dTypeId;
|
|
@@ -40,5 +41,9 @@ declare const toPath: {
|
|
|
40
41
|
(scale: number): (c: Cardinal2d) => CubicPath2d;
|
|
41
42
|
(c: Cardinal2d, scale?: number): CubicPath2d;
|
|
42
43
|
};
|
|
44
|
+
declare const toBezier: {
|
|
45
|
+
(p: Cardinal2d): Bezier2d;
|
|
46
|
+
(p: Cardinal2d, scale: number): Bezier2d;
|
|
47
|
+
};
|
|
43
48
|
|
|
44
|
-
export { type Cardinal2d, append, catRomCharacteristic, characteristic, fromArray, isCardinal2d, make, prepend, toPath, withDuplicatedEndpoints, withReflectedEndpoints };
|
|
49
|
+
export { type Cardinal2d, append, catRomCharacteristic, characteristic, fromArray, isCardinal2d, make, prepend, toBezier, toPath, withDuplicatedEndpoints, withReflectedEndpoints };
|