@revideo/2d 0.2.3 → 0.2.4-alpha.894
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/editor/index.css +1 -1
- package/editor/index.js +529 -245
- package/lib/code/CodeCursor.d.ts +74 -74
- package/lib/code/CodeCursor.js +352 -286
- package/lib/code/CodeDiffer.d.ts +21 -16
- package/lib/code/CodeDiffer.js +39 -41
- package/lib/code/CodeFragment.d.ts +16 -8
- package/lib/code/CodeFragment.js +36 -36
- package/lib/code/CodeHighlighter.d.ts +59 -59
- package/lib/code/CodeHighlighter.js +1 -1
- package/lib/code/CodeMetrics.d.ts +12 -8
- package/lib/code/CodeMetrics.js +26 -24
- package/lib/code/CodeRange.d.ts +21 -5
- package/lib/code/CodeRange.js +131 -124
- package/lib/code/CodeScope.d.ts +18 -8
- package/lib/code/CodeScope.js +59 -61
- package/lib/code/CodeSelection.d.ts +9 -4
- package/lib/code/CodeSelection.js +8 -8
- package/lib/code/CodeSignal.d.ts +74 -47
- package/lib/code/CodeSignal.js +206 -189
- package/lib/code/CodeTokenizer.d.ts +1 -1
- package/lib/code/CodeTokenizer.js +41 -41
- package/lib/code/DefaultHighlightStyle.d.ts +2 -2
- package/lib/code/DefaultHighlightStyle.js +96 -96
- package/lib/code/LezerHighlighter.d.ts +21 -19
- package/lib/code/LezerHighlighter.js +101 -101
- package/lib/code/diff.d.ts +12 -9
- package/lib/code/diff.js +218 -205
- package/lib/code/extractRange.d.ts +7 -4
- package/lib/code/extractRange.js +79 -71
- package/lib/code/index.d.ts +1 -1
- package/lib/code/index.js +1 -1
- package/lib/components/Audio.d.ts +11 -11
- package/lib/components/Audio.js +115 -109
- package/lib/components/Bezier.d.ts +18 -18
- package/lib/components/Bezier.js +86 -75
- package/lib/components/Circle.d.ts +95 -90
- package/lib/components/Circle.js +85 -74
- package/lib/components/Code.d.ts +244 -211
- package/lib/components/Code.js +317 -269
- package/lib/components/CodeBlock.d.ts +109 -67
- package/lib/components/CodeBlock.js +414 -373
- package/lib/components/CubicBezier.d.ts +36 -36
- package/lib/components/CubicBezier.js +52 -49
- package/lib/components/Curve.d.ts +208 -198
- package/lib/components/Curve.js +270 -269
- package/lib/components/Grid.d.ts +47 -42
- package/lib/components/Grid.js +63 -56
- package/lib/components/Icon.d.ts +55 -50
- package/lib/components/Icon.js +58 -50
- package/lib/components/Img.d.ts +86 -79
- package/lib/components/Img.js +193 -181
- package/lib/components/Knot.d.ts +97 -78
- package/lib/components/Knot.js +81 -60
- package/lib/components/Latex.d.ts +12 -12
- package/lib/components/Latex.js +77 -65
- package/lib/components/Layout.d.ts +455 -413
- package/lib/components/Layout.js +666 -681
- package/lib/components/Line.d.ts +61 -49
- package/lib/components/Line.js +216 -193
- package/lib/components/Media.d.ts +35 -35
- package/lib/components/Media.js +135 -134
- package/lib/components/Node.d.ts +875 -830
- package/lib/components/Node.js +1383 -1314
- package/lib/components/Path.d.ts +35 -14
- package/lib/components/Path.js +100 -89
- package/lib/components/Polygon.d.ts +60 -55
- package/lib/components/Polygon.js +71 -66
- package/lib/components/QuadBezier.d.ts +29 -29
- package/lib/components/QuadBezier.js +50 -45
- package/lib/components/Ray.d.ts +28 -28
- package/lib/components/Ray.js +71 -64
- package/lib/components/Rect.d.ts +115 -108
- package/lib/components/Rect.js +78 -72
- package/lib/components/SVG.d.ts +165 -139
- package/lib/components/SVG.js +609 -541
- package/lib/components/Shape.d.ts +44 -35
- package/lib/components/Shape.js +112 -127
- package/lib/components/Spline.d.ts +46 -40
- package/lib/components/Spline.js +190 -175
- package/lib/components/Txt.d.ts +55 -44
- package/lib/components/Txt.js +156 -155
- package/lib/components/TxtLeaf.d.ts +20 -16
- package/lib/components/TxtLeaf.js +177 -158
- package/lib/components/Video.d.ts +41 -41
- package/lib/components/Video.js +138 -135
- package/lib/components/View2D.d.ts +21 -21
- package/lib/components/View2D.js +98 -85
- package/lib/components/index.d.ts +1 -1
- package/lib/components/index.js +1 -1
- package/lib/components/types.d.ts +22 -9
- package/lib/components/types.js +1 -1
- package/lib/curves/ArcSegment.d.ts +36 -24
- package/lib/curves/ArcSegment.js +145 -94
- package/lib/curves/CircleSegment.d.ts +26 -16
- package/lib/curves/CircleSegment.js +56 -49
- package/lib/curves/CubicBezierSegment.d.ts +18 -13
- package/lib/curves/CubicBezierSegment.js +79 -46
- package/lib/curves/CurveDrawingInfo.d.ts +9 -9
- package/lib/curves/CurveDrawingInfo.js +1 -1
- package/lib/curves/CurvePoint.d.ts +13 -13
- package/lib/curves/CurvePoint.js +1 -1
- package/lib/curves/CurveProfile.d.ts +5 -5
- package/lib/curves/CurveProfile.js +1 -1
- package/lib/curves/KnotInfo.d.ts +8 -8
- package/lib/curves/KnotInfo.js +1 -1
- package/lib/curves/LineSegment.d.ts +19 -14
- package/lib/curves/LineSegment.js +42 -42
- package/lib/curves/Polynomial.d.ts +110 -110
- package/lib/curves/Polynomial.js +249 -239
- package/lib/curves/Polynomial2D.d.ts +20 -20
- package/lib/curves/Polynomial2D.js +46 -42
- package/lib/curves/PolynomialSegment.d.ts +42 -37
- package/lib/curves/PolynomialSegment.js +83 -81
- package/lib/curves/QuadBezierSegment.d.ts +12 -12
- package/lib/curves/QuadBezierSegment.js +71 -41
- package/lib/curves/Segment.d.ts +12 -7
- package/lib/curves/Segment.js +2 -3
- package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
- package/lib/curves/UniformPolynomialCurveSampler.js +68 -62
- package/lib/curves/createCurveProfileLerp.d.ts +17 -6
- package/lib/curves/createCurveProfileLerp.js +211 -208
- package/lib/curves/getBezierSplineProfile.d.ts +8 -4
- package/lib/curves/getBezierSplineProfile.js +145 -101
- package/lib/curves/getCircleProfile.d.ts +10 -4
- package/lib/curves/getCircleProfile.js +72 -40
- package/lib/curves/getPathProfile.d.ts +2 -2
- package/lib/curves/getPathProfile.js +135 -112
- package/lib/curves/getPointAtDistance.d.ts +7 -4
- package/lib/curves/getPointAtDistance.js +12 -12
- package/lib/curves/getPolylineProfile.d.ts +8 -4
- package/lib/curves/getPolylineProfile.js +67 -54
- package/lib/curves/getRectProfile.d.ts +9 -4
- package/lib/curves/getRectProfile.js +117 -52
- package/lib/curves/index.d.ts +1 -1
- package/lib/curves/index.js +1 -1
- package/lib/decorators/canvasStyleSignal.d.ts +3 -3
- package/lib/decorators/canvasStyleSignal.js +10 -10
- package/lib/decorators/colorSignal.d.ts +1 -1
- package/lib/decorators/colorSignal.js +7 -7
- package/lib/decorators/compound.d.ts +4 -2
- package/lib/decorators/compound.js +43 -23
- package/lib/decorators/computed.d.ts +1 -1
- package/lib/decorators/computed.js +9 -9
- package/lib/decorators/defaultStyle.d.ts +5 -2
- package/lib/decorators/defaultStyle.js +11 -11
- package/lib/decorators/filtersSignal.d.ts +28 -8
- package/lib/decorators/filtersSignal.js +87 -64
- package/lib/decorators/index.d.ts +1 -1
- package/lib/decorators/index.js +1 -1
- package/lib/decorators/initializers.d.ts +5 -2
- package/lib/decorators/initializers.js +18 -19
- package/lib/decorators/nodeName.d.ts +1 -1
- package/lib/decorators/nodeName.js +4 -4
- package/lib/decorators/signal.d.ts +40 -20
- package/lib/decorators/signal.js +113 -104
- package/lib/decorators/spacingSignal.d.ts +1 -1
- package/lib/decorators/spacingSignal.js +13 -13
- package/lib/decorators/vector2Signal.d.ts +13 -7
- package/lib/decorators/vector2Signal.js +15 -13
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/jsx-dev-runtime.d.ts +3 -3
- package/lib/jsx-dev-runtime.js +3 -3
- package/lib/jsx-runtime.d.ts +19 -9
- package/lib/jsx-runtime.js +18 -18
- package/lib/partials/Filter.d.ts +24 -16
- package/lib/partials/Filter.js +69 -69
- package/lib/partials/Gradient.d.ts +30 -24
- package/lib/partials/Gradient.js +69 -58
- package/lib/partials/Pattern.d.ts +14 -9
- package/lib/partials/Pattern.js +30 -24
- package/lib/partials/ShaderConfig.d.ts +81 -74
- package/lib/partials/ShaderConfig.js +22 -23
- package/lib/partials/index.d.ts +1 -1
- package/lib/partials/index.js +1 -1
- package/lib/partials/types.d.ts +19 -6
- package/lib/partials/types.js +1 -1
- package/lib/scenes/Scene2D.d.ts +42 -23
- package/lib/scenes/Scene2D.js +161 -151
- package/lib/scenes/index.d.ts +1 -1
- package/lib/scenes/index.js +1 -1
- package/lib/scenes/makeScene2D.d.ts +7 -5
- package/lib/scenes/makeScene2D.js +10 -10
- package/lib/scenes/useScene2D.d.ts +2 -2
- package/lib/scenes/useScene2D.js +3 -3
- package/lib/utils/CanvasUtils.d.ts +93 -21
- package/lib/utils/CanvasUtils.js +186 -105
- package/lib/utils/diff.d.ts +25 -18
- package/lib/utils/diff.js +84 -87
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/is.d.ts +4 -2
- package/lib/utils/is.js +2 -2
- package/lib/utils/makeSignalExtensions.d.ts +11 -4
- package/lib/utils/makeSignalExtensions.js +17 -17
- package/package.json +5 -5
|
@@ -1,45 +1,49 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import {BBox, Vector2} from '@revideo/core';
|
|
2
|
+
import {Polynomial} from './Polynomial';
|
|
3
3
|
export class Polynomial2D {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
this.x = new Polynomial(c0.x, c1.x, c2.x);
|
|
19
|
-
this.y = new Polynomial(c0.y, c1.y, c2.y);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
eval(t, derivative = 0) {
|
|
23
|
-
return new Vector2(this.x.differentiate(derivative).eval(t), this.y.differentiate(derivative).eval(t));
|
|
24
|
-
}
|
|
25
|
-
split(u) {
|
|
26
|
-
const [xPre, xPost] = this.x.split(u);
|
|
27
|
-
const [yPre, yPost] = this.y.split(u);
|
|
28
|
-
return [new Polynomial2D(xPre, yPre), new Polynomial2D(xPost, yPost)];
|
|
29
|
-
}
|
|
30
|
-
differentiate(n = 1) {
|
|
31
|
-
return new Polynomial2D(this.x.differentiate(n), this.y.differentiate(n));
|
|
32
|
-
}
|
|
33
|
-
evalDerivative(t) {
|
|
34
|
-
return this.differentiate().eval(t);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Calculate the tight axis-aligned bounds of the curve in the unit interval.
|
|
38
|
-
*/
|
|
39
|
-
getBounds() {
|
|
40
|
-
const rangeX = this.x.outputRange01();
|
|
41
|
-
const rangeY = this.y.outputRange01();
|
|
42
|
-
return BBox.fromPoints(new Vector2(Math.min(...rangeX), Math.max(...rangeY)), new Vector2(Math.max(...rangeX), Math.min(...rangeY)));
|
|
4
|
+
constructor(c0, c1, c2, c3) {
|
|
5
|
+
this.c0 = c0;
|
|
6
|
+
this.c1 = c1;
|
|
7
|
+
this.c2 = c2;
|
|
8
|
+
this.c3 = c3;
|
|
9
|
+
if (c0 instanceof Polynomial) {
|
|
10
|
+
this.x = c0;
|
|
11
|
+
this.y = c1;
|
|
12
|
+
} else if (c3 !== undefined) {
|
|
13
|
+
this.x = new Polynomial(c0.x, c1.x, c2.x, c3.x);
|
|
14
|
+
this.y = new Polynomial(c0.y, c1.y, c2.y, c3.y);
|
|
15
|
+
} else {
|
|
16
|
+
this.x = new Polynomial(c0.x, c1.x, c2.x);
|
|
17
|
+
this.y = new Polynomial(c0.y, c1.y, c2.y);
|
|
43
18
|
}
|
|
19
|
+
}
|
|
20
|
+
eval(t, derivative = 0) {
|
|
21
|
+
return new Vector2(
|
|
22
|
+
this.x.differentiate(derivative).eval(t),
|
|
23
|
+
this.y.differentiate(derivative).eval(t),
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
split(u) {
|
|
27
|
+
const [xPre, xPost] = this.x.split(u);
|
|
28
|
+
const [yPre, yPost] = this.y.split(u);
|
|
29
|
+
return [new Polynomial2D(xPre, yPre), new Polynomial2D(xPost, yPost)];
|
|
30
|
+
}
|
|
31
|
+
differentiate(n = 1) {
|
|
32
|
+
return new Polynomial2D(this.x.differentiate(n), this.y.differentiate(n));
|
|
33
|
+
}
|
|
34
|
+
evalDerivative(t) {
|
|
35
|
+
return this.differentiate().eval(t);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Calculate the tight axis-aligned bounds of the curve in the unit interval.
|
|
39
|
+
*/
|
|
40
|
+
getBounds() {
|
|
41
|
+
const rangeX = this.x.outputRange01();
|
|
42
|
+
const rangeY = this.y.outputRange01();
|
|
43
|
+
return BBox.fromPoints(
|
|
44
|
+
new Vector2(Math.min(...rangeX), Math.max(...rangeY)),
|
|
45
|
+
new Vector2(Math.max(...rangeX), Math.min(...rangeY)),
|
|
46
|
+
);
|
|
47
|
+
}
|
|
44
48
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9seW5vbWlhbDJELmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jdXJ2ZXMvUG9seW5vbWlhbDJELnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFeEMsTUFBTSxPQUFPLFlBQVk7SUFPdkIsWUFDa0IsRUFBd0IsRUFDeEIsRUFBd0IsRUFDeEIsRUFBWSxFQUNaLEVBQVk7UUFIWixPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFVO1FBQ1osT0FBRSxHQUFGLEVBQUUsQ0FBVTtRQUU1QixJQUFJLEVBQUUsWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBZ0IsQ0FBQztRQUM1QixDQUFDO2FBQU0sSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFHLEVBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFHLEVBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUcsRUFBYyxDQUFDLENBQUMsRUFBRSxFQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFHLEVBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRU0sSUFBSSxDQUFDLENBQVMsRUFBRSxVQUFVLEdBQUcsQ0FBQztRQUNuQyxPQUFPLElBQUksT0FBTyxDQUNoQixJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ3hDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDekMsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsQ0FBUztRQUNwQixNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsT0FBTyxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sY0FBYyxDQUFDLENBQVM7UUFDN0IsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVM7UUFDZCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUNwQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQ3JELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FDdEQsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9seW5vbWlhbDJELmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jdXJ2ZXMvUG9seW5vbWlhbDJELnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFeEMsTUFBTSxPQUFPLFlBQVk7SUFPdkIsWUFDa0IsRUFBd0IsRUFDeEIsRUFBd0IsRUFDeEIsRUFBWSxFQUNaLEVBQVk7UUFIWixPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFVO1FBQ1osT0FBRSxHQUFGLEVBQUUsQ0FBVTtRQUU1QixJQUFJLEVBQUUsWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBZ0IsQ0FBQztRQUM1QixDQUFDO2FBQU0sSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFHLEVBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFHLEVBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUcsRUFBYyxDQUFDLENBQUMsRUFBRSxFQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFHLEVBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRU0sSUFBSSxDQUFDLENBQVMsRUFBRSxVQUFVLEdBQUcsQ0FBQztRQUNuQyxPQUFPLElBQUksT0FBTyxDQUNoQixJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ3hDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDekMsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsQ0FBUztRQUNwQixNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsT0FBTyxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sY0FBYyxDQUFDLENBQVM7UUFDN0IsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVM7UUFDZCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUNwQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQ3JELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FDdEQsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
|
|
@@ -1,39 +1,44 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import {BBox, Vector2} from '@revideo/core';
|
|
2
|
+
import {CurvePoint} from './CurvePoint';
|
|
3
|
+
import {Polynomial2D} from './Polynomial2D';
|
|
4
|
+
import {Segment} from './Segment';
|
|
5
|
+
import {UniformPolynomialCurveSampler} from './UniformPolynomialCurveSampler';
|
|
6
6
|
export declare abstract class PolynomialSegment extends Segment {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
7
|
+
protected readonly curve: Polynomial2D;
|
|
8
|
+
protected readonly length: number;
|
|
9
|
+
protected readonly pointSampler: UniformPolynomialCurveSampler;
|
|
10
|
+
get arcLength(): number;
|
|
11
|
+
abstract get points(): Vector2[];
|
|
12
|
+
protected constructor(curve: Polynomial2D, length: number);
|
|
13
|
+
getBBox(): BBox;
|
|
14
|
+
/**
|
|
15
|
+
* Evaluate the polynomial at the given t value.
|
|
16
|
+
*
|
|
17
|
+
* @param t - The t value at which to evaluate the curve.
|
|
18
|
+
*/
|
|
19
|
+
eval(t: number): CurvePoint;
|
|
20
|
+
/**
|
|
21
|
+
* Split the curve into two separate polynomials at the given t value. The two
|
|
22
|
+
* resulting curves form the same overall shape as the original curve.
|
|
23
|
+
*
|
|
24
|
+
* @param t - The t value at which to split the curve.
|
|
25
|
+
*/
|
|
26
|
+
abstract split(t: number): [PolynomialSegment, PolynomialSegment];
|
|
27
|
+
getPoint(distance: number): CurvePoint;
|
|
28
|
+
transformPoints(matrix: DOMMatrix): Vector2[];
|
|
29
|
+
/**
|
|
30
|
+
* Return the tangent of the point that sits at the provided t value on the
|
|
31
|
+
* curve.
|
|
32
|
+
*
|
|
33
|
+
* @param t - The t value at which to evaluate the curve.
|
|
34
|
+
*/
|
|
35
|
+
tangent(t: number): Vector2;
|
|
36
|
+
draw(
|
|
37
|
+
context: CanvasRenderingContext2D | Path2D,
|
|
38
|
+
start?: number,
|
|
39
|
+
end?: number,
|
|
40
|
+
move?: boolean,
|
|
41
|
+
): [CurvePoint, CurvePoint];
|
|
42
|
+
protected abstract doDraw(context: CanvasRenderingContext2D | Path2D): void;
|
|
38
43
|
}
|
|
39
|
-
//# sourceMappingURL=PolynomialSegment.d.ts.map
|
|
44
|
+
//# sourceMappingURL=PolynomialSegment.d.ts.map
|
|
@@ -1,85 +1,87 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import {moveTo} from '../utils';
|
|
2
|
+
import {Segment} from './Segment';
|
|
3
|
+
import {UniformPolynomialCurveSampler} from './UniformPolynomialCurveSampler';
|
|
4
4
|
export class PolynomialSegment extends Segment {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
get arcLength() {
|
|
6
|
+
return this.length;
|
|
7
|
+
}
|
|
8
|
+
constructor(curve, length) {
|
|
9
|
+
super();
|
|
10
|
+
this.curve = curve;
|
|
11
|
+
this.length = length;
|
|
12
|
+
this.pointSampler = new UniformPolynomialCurveSampler(this);
|
|
13
|
+
}
|
|
14
|
+
getBBox() {
|
|
15
|
+
return this.curve.getBounds();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Evaluate the polynomial at the given t value.
|
|
19
|
+
*
|
|
20
|
+
* @param t - The t value at which to evaluate the curve.
|
|
21
|
+
*/
|
|
22
|
+
eval(t) {
|
|
23
|
+
const tangent = this.tangent(t);
|
|
24
|
+
return {
|
|
25
|
+
position: this.curve.eval(t),
|
|
26
|
+
tangent,
|
|
27
|
+
normal: tangent.perpendicular,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
getPoint(distance) {
|
|
31
|
+
const closestPoint = this.pointSampler.pointAtDistance(
|
|
32
|
+
this.arcLength * distance,
|
|
33
|
+
);
|
|
34
|
+
return {
|
|
35
|
+
position: closestPoint.position,
|
|
36
|
+
tangent: closestPoint.tangent,
|
|
37
|
+
normal: closestPoint.tangent.perpendicular,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
transformPoints(matrix) {
|
|
41
|
+
return this.points.map(point => point.transformAsPoint(matrix));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Return the tangent of the point that sits at the provided t value on the
|
|
45
|
+
* curve.
|
|
46
|
+
*
|
|
47
|
+
* @param t - The t value at which to evaluate the curve.
|
|
48
|
+
*/
|
|
49
|
+
tangent(t) {
|
|
50
|
+
return this.curve.evalDerivative(t).normalized;
|
|
51
|
+
}
|
|
52
|
+
draw(context, start = 0, end = 1, move = true) {
|
|
53
|
+
let curve = null;
|
|
54
|
+
let startT = start;
|
|
55
|
+
let endT = end;
|
|
56
|
+
let points = this.points;
|
|
57
|
+
if (start !== 0 || end !== 1) {
|
|
58
|
+
const startDistance = this.length * start;
|
|
59
|
+
const endDistance = this.length * end;
|
|
60
|
+
startT = this.pointSampler.distanceToT(startDistance);
|
|
61
|
+
endT = this.pointSampler.distanceToT(endDistance);
|
|
62
|
+
const relativeEndT = (endT - startT) / (1 - startT);
|
|
63
|
+
const [, startSegment] = this.split(startT);
|
|
64
|
+
[curve] = startSegment.split(relativeEndT);
|
|
65
|
+
points = curve.points;
|
|
7
66
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
this.curve = curve;
|
|
11
|
-
this.length = length;
|
|
12
|
-
this.pointSampler = new UniformPolynomialCurveSampler(this);
|
|
13
|
-
}
|
|
14
|
-
getBBox() {
|
|
15
|
-
return this.curve.getBounds();
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Evaluate the polynomial at the given t value.
|
|
19
|
-
*
|
|
20
|
-
* @param t - The t value at which to evaluate the curve.
|
|
21
|
-
*/
|
|
22
|
-
eval(t) {
|
|
23
|
-
const tangent = this.tangent(t);
|
|
24
|
-
return {
|
|
25
|
-
position: this.curve.eval(t),
|
|
26
|
-
tangent,
|
|
27
|
-
normal: tangent.perpendicular,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
getPoint(distance) {
|
|
31
|
-
const closestPoint = this.pointSampler.pointAtDistance(this.arcLength * distance);
|
|
32
|
-
return {
|
|
33
|
-
position: closestPoint.position,
|
|
34
|
-
tangent: closestPoint.tangent,
|
|
35
|
-
normal: closestPoint.tangent.perpendicular,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
transformPoints(matrix) {
|
|
39
|
-
return this.points.map(point => point.transformAsPoint(matrix));
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Return the tangent of the point that sits at the provided t value on the
|
|
43
|
-
* curve.
|
|
44
|
-
*
|
|
45
|
-
* @param t - The t value at which to evaluate the curve.
|
|
46
|
-
*/
|
|
47
|
-
tangent(t) {
|
|
48
|
-
return this.curve.evalDerivative(t).normalized;
|
|
49
|
-
}
|
|
50
|
-
draw(context, start = 0, end = 1, move = true) {
|
|
51
|
-
let curve = null;
|
|
52
|
-
let startT = start;
|
|
53
|
-
let endT = end;
|
|
54
|
-
let points = this.points;
|
|
55
|
-
if (start !== 0 || end !== 1) {
|
|
56
|
-
const startDistance = this.length * start;
|
|
57
|
-
const endDistance = this.length * end;
|
|
58
|
-
startT = this.pointSampler.distanceToT(startDistance);
|
|
59
|
-
endT = this.pointSampler.distanceToT(endDistance);
|
|
60
|
-
const relativeEndT = (endT - startT) / (1 - startT);
|
|
61
|
-
const [, startSegment] = this.split(startT);
|
|
62
|
-
[curve] = startSegment.split(relativeEndT);
|
|
63
|
-
points = curve.points;
|
|
64
|
-
}
|
|
65
|
-
if (move) {
|
|
66
|
-
moveTo(context, points[0]);
|
|
67
|
-
}
|
|
68
|
-
(curve ?? this).doDraw(context);
|
|
69
|
-
const startTangent = this.tangent(startT);
|
|
70
|
-
const endTangent = this.tangent(endT);
|
|
71
|
-
return [
|
|
72
|
-
{
|
|
73
|
-
position: points[0],
|
|
74
|
-
tangent: startTangent,
|
|
75
|
-
normal: startTangent.perpendicular,
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
position: points.at(-1),
|
|
79
|
-
tangent: endTangent,
|
|
80
|
-
normal: endTangent.perpendicular,
|
|
81
|
-
},
|
|
82
|
-
];
|
|
67
|
+
if (move) {
|
|
68
|
+
moveTo(context, points[0]);
|
|
83
69
|
}
|
|
70
|
+
(curve ?? this).doDraw(context);
|
|
71
|
+
const startTangent = this.tangent(startT);
|
|
72
|
+
const endTangent = this.tangent(endT);
|
|
73
|
+
return [
|
|
74
|
+
{
|
|
75
|
+
position: points[0],
|
|
76
|
+
tangent: startTangent,
|
|
77
|
+
normal: startTangent.perpendicular,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
position: points.at(-1),
|
|
81
|
+
tangent: endTangent,
|
|
82
|
+
normal: endTangent.perpendicular,
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
}
|
|
84
86
|
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9seW5vbWlhbFNlZ21lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2N1cnZlcy9Qb2x5bm9taWFsU2VnbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR2hDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFOUUsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxPQUFPO0lBR3JELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUlELFlBQ3FCLEtBQW1CLEVBQ25CLE1BQWM7UUFFakMsS0FBSyxFQUFFLENBQUM7UUFIVyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQVE7UUFHakMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLDZCQUE2QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksSUFBSSxDQUFDLENBQVM7UUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1QixPQUFPO1lBQ1AsTUFBTSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBVU0sUUFBUSxDQUFDLFFBQWdCO1FBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFH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
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9seW5vbWlhbFNlZ21lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2N1cnZlcy9Qb2x5bm9taWFsU2VnbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR2hDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFOUUsTUFBTSxPQUFnQixpQkFBa0IsU0FBUSxPQUFPO0lBR3JELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUlELFlBQ3FCLEtBQW1CLEVBQ25CLE1BQWM7UUFFakMsS0FBSyxFQUFFLENBQUM7UUFIVyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQVE7UUFHakMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLDZCQUE2QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksSUFBSSxDQUFDLENBQVM7UUFDbkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1QixPQUFPO1lBQ1AsTUFBTSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBVU0sUUFBUSxDQUFDLFFBQWdCO1FBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUNwRCxJQUFJLENBQUMsU0FBUyxHQUFH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
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import {Vector2} from '@revideo/core';
|
|
2
|
+
import {PolynomialSegment} from './PolynomialSegment';
|
|
3
3
|
/**
|
|
4
4
|
* A spline segment representing a quadratic Bézier curve.
|
|
5
5
|
*/
|
|
6
6
|
export declare class QuadBezierSegment extends PolynomialSegment {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
readonly p0: Vector2;
|
|
8
|
+
readonly p1: Vector2;
|
|
9
|
+
readonly p2: Vector2;
|
|
10
|
+
private static el;
|
|
11
|
+
get points(): Vector2[];
|
|
12
|
+
constructor(p0: Vector2, p1: Vector2, p2: Vector2);
|
|
13
|
+
split(t: number): [PolynomialSegment, PolynomialSegment];
|
|
14
|
+
protected static getLength(p0: Vector2, p1: Vector2, p2: Vector2): number;
|
|
15
|
+
protected doDraw(context: CanvasRenderingContext2D | Path2D): void;
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=QuadBezierSegment.d.ts.map
|
|
17
|
+
//# sourceMappingURL=QuadBezierSegment.d.ts.map
|
|
@@ -1,49 +1,79 @@
|
|
|
1
|
-
var __decorate =
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
var __decorate =
|
|
2
|
+
(this && this.__decorate) ||
|
|
3
|
+
function (decorators, target, key, desc) {
|
|
4
|
+
var c = arguments.length,
|
|
5
|
+
r =
|
|
6
|
+
c < 3
|
|
7
|
+
? target
|
|
8
|
+
: desc === null
|
|
9
|
+
? (desc = Object.getOwnPropertyDescriptor(target, key))
|
|
10
|
+
: desc,
|
|
11
|
+
d;
|
|
12
|
+
if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
|
|
13
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
14
|
+
else
|
|
15
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
16
|
+
if ((d = decorators[i]))
|
|
17
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
18
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
19
|
+
};
|
|
20
|
+
import {Vector2, lazy} from '@revideo/core';
|
|
21
|
+
import {quadraticCurveTo} from '../utils';
|
|
22
|
+
import {Polynomial2D} from './Polynomial2D';
|
|
23
|
+
import {PolynomialSegment} from './PolynomialSegment';
|
|
11
24
|
/**
|
|
12
25
|
* A spline segment representing a quadratic Bézier curve.
|
|
13
26
|
*/
|
|
14
27
|
export class QuadBezierSegment extends PolynomialSegment {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
28
|
+
get points() {
|
|
29
|
+
return [this.p0, this.p1, this.p2];
|
|
30
|
+
}
|
|
31
|
+
constructor(p0, p1, p2) {
|
|
32
|
+
super(
|
|
33
|
+
new Polynomial2D(
|
|
34
|
+
p0,
|
|
20
35
|
// 2*(-p0+p1)
|
|
21
|
-
p0.flipped.add(p1).scale(2),
|
|
36
|
+
p0.flipped.add(p1).scale(2),
|
|
22
37
|
// p0-2*p1+p2
|
|
23
|
-
p0.sub(p1.scale(2)).add(p2)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
p0.sub(p1.scale(2)).add(p2),
|
|
39
|
+
),
|
|
40
|
+
QuadBezierSegment.getLength(p0, p1, p2),
|
|
41
|
+
);
|
|
42
|
+
this.p0 = p0;
|
|
43
|
+
this.p1 = p1;
|
|
44
|
+
this.p2 = p2;
|
|
45
|
+
}
|
|
46
|
+
split(t) {
|
|
47
|
+
const a = new Vector2(
|
|
48
|
+
this.p0.x + (this.p1.x - this.p0.x) * t,
|
|
49
|
+
this.p0.y + (this.p1.y - this.p0.y) * t,
|
|
50
|
+
);
|
|
51
|
+
const b = new Vector2(
|
|
52
|
+
this.p1.x + (this.p2.x - this.p1.x) * t,
|
|
53
|
+
this.p1.y + (this.p2.y - this.p1.y) * t,
|
|
54
|
+
);
|
|
55
|
+
const p = new Vector2(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);
|
|
56
|
+
const left = new QuadBezierSegment(this.p0, a, p);
|
|
57
|
+
const right = new QuadBezierSegment(p, b, this.p2);
|
|
58
|
+
return [left, right];
|
|
59
|
+
}
|
|
60
|
+
static getLength(p0, p1, p2) {
|
|
61
|
+
// Let the browser do the work for us instead of calculating the arclength
|
|
62
|
+
// manually.
|
|
63
|
+
QuadBezierSegment.el.setAttribute(
|
|
64
|
+
'd',
|
|
65
|
+
`M ${p0.x} ${p0.y} Q ${p1.x} ${p1.y} ${p2.x} ${p2.y}`,
|
|
66
|
+
);
|
|
67
|
+
return QuadBezierSegment.el.getTotalLength();
|
|
68
|
+
}
|
|
69
|
+
doDraw(context) {
|
|
70
|
+
quadraticCurveTo(context, this.p1, this.p2);
|
|
71
|
+
}
|
|
45
72
|
}
|
|
46
|
-
__decorate(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
73
|
+
__decorate(
|
|
74
|
+
[lazy(() => document.createElementNS('http://www.w3.org/2000/svg', 'path'))],
|
|
75
|
+
QuadBezierSegment,
|
|
76
|
+
'el',
|
|
77
|
+
void 0,
|
|
78
|
+
);
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVhZEJlemllclNlZ21lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2N1cnZlcy9RdWFkQmV6aWVyU2VnbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXREOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGlCQUFpQjtJQUl0RCxJQUFXLE1BQU07UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFDa0IsRUFBVyxFQUNYLEVBQVcsRUFDWCxFQUFXO1FBRTNCLEtBQUssQ0FDSCxJQUFJLFlBQVksQ0FDZCxFQUFFO1FBQ0YsYUFBYTtRQUNiLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0IsYUFBYTtRQUNiLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FDNUIsRUFDRCxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FDeEMsQ0FBQztRQWJjLE9BQUUsR0FBRixFQUFFLENBQVM7UUFDWCxPQUFFLEdBQUYsRUFBRSxDQUFTO1FBQ1gsT0FBRSxHQUFGLEVBQUUsQ0FBUztJQVk3QixDQUFDO0lBRU0sS0FBSyxDQUFDLENBQVM7UUFDcEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQ25CLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQ3hDLENBQUM7UUFDRixNQUFNLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDdkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDeEMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXBFLE1BQU0sSUFBSSxHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVuRCxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQVcsRUFBRSxFQUFXLEVBQUUsRUFBVztRQUM5RCwwRUFBMEU7UUFDMUUsWUFBWTtRQUNaLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQy9CLEdBQUcsRUFDSCxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQ3RELENBQUM7UUFDRixPQUFPLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRWtCLE1BQU0sQ0FBQyxPQUEwQztRQUNsRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBckRnQjtJQURkLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO21DQUN6QyJ9
|
package/lib/curves/Segment.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import {Vector2} from '@revideo/core';
|
|
2
|
+
import {CurvePoint} from './CurvePoint';
|
|
3
3
|
export declare abstract class Segment {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
abstract readonly points: Vector2[];
|
|
5
|
+
abstract draw(
|
|
6
|
+
context: CanvasRenderingContext2D | Path2D,
|
|
7
|
+
start: number,
|
|
8
|
+
end: number,
|
|
9
|
+
move: boolean,
|
|
10
|
+
): [CurvePoint, CurvePoint];
|
|
11
|
+
abstract getPoint(distance: number): CurvePoint;
|
|
12
|
+
abstract get arcLength(): number;
|
|
8
13
|
}
|
|
9
|
-
//# sourceMappingURL=Segment.d.ts.map
|
|
14
|
+
//# sourceMappingURL=Segment.d.ts.map
|
package/lib/curves/Segment.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export class Segment {
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VnbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL1NlZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFnQixPQUFPO0NBYTVCIn0=
|
|
1
|
+
export class Segment {}
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VnbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL1NlZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFnQixPQUFPO0NBYTVCIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import {CurvePoint} from './CurvePoint';
|
|
2
|
+
import {PolynomialSegment} from './PolynomialSegment';
|
|
3
3
|
/**
|
|
4
4
|
* Class to uniformly sample points on a given polynomial curve.
|
|
5
5
|
*
|
|
@@ -8,36 +8,36 @@ import { PolynomialSegment } from './PolynomialSegment';
|
|
|
8
8
|
* re-parameterizes the curve by arclength.
|
|
9
9
|
*/
|
|
10
10
|
export declare class UniformPolynomialCurveSampler {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
11
|
+
private readonly curve;
|
|
12
|
+
private sampledDistances;
|
|
13
|
+
/**
|
|
14
|
+
* @param curve - The curve to sample
|
|
15
|
+
* @param samples - How many points to sample from the provided curve. The
|
|
16
|
+
* more points get sampled, the higher the resolution–and
|
|
17
|
+
* therefore precision–of the sampler.
|
|
18
|
+
*/
|
|
19
|
+
constructor(curve: PolynomialSegment, samples?: number);
|
|
20
|
+
/**
|
|
21
|
+
* Discard all previously sampled points and resample the provided number of
|
|
22
|
+
* points from the curve.
|
|
23
|
+
*
|
|
24
|
+
* @param samples - The number of points to sample.
|
|
25
|
+
*/
|
|
26
|
+
resample(samples: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* Return the point at the provided distance along the sampled curve's
|
|
29
|
+
* arclength.
|
|
30
|
+
*
|
|
31
|
+
* @param distance - The distance along the curve's arclength for which to
|
|
32
|
+
* retrieve the point.
|
|
33
|
+
*/
|
|
34
|
+
pointAtDistance(distance: number): CurvePoint;
|
|
35
|
+
/**
|
|
36
|
+
* Return the t value for the point at the provided distance along the sampled
|
|
37
|
+
* curve's arc length.
|
|
38
|
+
*
|
|
39
|
+
* @param distance - The distance along the arclength
|
|
40
|
+
*/
|
|
41
|
+
distanceToT(distance: number): number;
|
|
42
42
|
}
|
|
43
|
-
//# sourceMappingURL=UniformPolynomialCurveSampler.d.ts.map
|
|
43
|
+
//# sourceMappingURL=UniformPolynomialCurveSampler.d.ts.map
|