@revideo/2d 0.2.5 → 0.2.6-alpha.906

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.
Files changed (222) hide show
  1. package/lib/code/CodeCursor.d.ts +74 -74
  2. package/lib/code/CodeCursor.js +286 -352
  3. package/lib/code/CodeDiffer.d.ts +16 -21
  4. package/lib/code/CodeDiffer.js +41 -39
  5. package/lib/code/CodeFragment.d.ts +8 -16
  6. package/lib/code/CodeFragment.js +36 -36
  7. package/lib/code/CodeHighlighter.d.ts +59 -59
  8. package/lib/code/CodeHighlighter.js +1 -1
  9. package/lib/code/CodeMetrics.d.ts +8 -12
  10. package/lib/code/CodeMetrics.js +24 -26
  11. package/lib/code/CodeRange.d.ts +5 -21
  12. package/lib/code/CodeRange.js +124 -131
  13. package/lib/code/CodeScope.d.ts +8 -18
  14. package/lib/code/CodeScope.js +61 -59
  15. package/lib/code/CodeSelection.d.ts +4 -9
  16. package/lib/code/CodeSelection.js +8 -8
  17. package/lib/code/CodeSignal.d.ts +47 -74
  18. package/lib/code/CodeSignal.js +189 -206
  19. package/lib/code/CodeTokenizer.d.ts +1 -1
  20. package/lib/code/CodeTokenizer.js +41 -41
  21. package/lib/code/DefaultHighlightStyle.d.ts +2 -2
  22. package/lib/code/DefaultHighlightStyle.js +96 -96
  23. package/lib/code/LezerHighlighter.d.ts +19 -21
  24. package/lib/code/LezerHighlighter.js +101 -101
  25. package/lib/code/diff.d.ts +9 -12
  26. package/lib/code/diff.js +205 -218
  27. package/lib/code/extractRange.d.ts +4 -7
  28. package/lib/code/extractRange.js +71 -79
  29. package/lib/code/index.d.ts +1 -1
  30. package/lib/code/index.js +1 -1
  31. package/lib/components/Audio.d.ts +11 -11
  32. package/lib/components/Audio.d.ts.map +1 -1
  33. package/lib/components/Audio.js +109 -115
  34. package/lib/components/Bezier.d.ts +18 -18
  35. package/lib/components/Bezier.js +75 -86
  36. package/lib/components/Circle.d.ts +90 -95
  37. package/lib/components/Circle.js +74 -85
  38. package/lib/components/Code.d.ts +211 -244
  39. package/lib/components/Code.d.ts.map +1 -1
  40. package/lib/components/Code.js +269 -317
  41. package/lib/components/CodeBlock.d.ts +67 -109
  42. package/lib/components/CodeBlock.d.ts.map +1 -1
  43. package/lib/components/CodeBlock.js +373 -414
  44. package/lib/components/CubicBezier.d.ts +36 -36
  45. package/lib/components/CubicBezier.js +49 -52
  46. package/lib/components/Curve.d.ts +198 -208
  47. package/lib/components/Curve.js +269 -270
  48. package/lib/components/Grid.d.ts +42 -47
  49. package/lib/components/Grid.js +56 -63
  50. package/lib/components/Icon.d.ts +50 -55
  51. package/lib/components/Icon.js +50 -58
  52. package/lib/components/Img.d.ts +79 -86
  53. package/lib/components/Img.d.ts.map +1 -1
  54. package/lib/components/Img.js +181 -193
  55. package/lib/components/Knot.d.ts +78 -97
  56. package/lib/components/Knot.js +60 -81
  57. package/lib/components/Latex.d.ts +12 -12
  58. package/lib/components/Latex.js +65 -77
  59. package/lib/components/Layout.d.ts +413 -455
  60. package/lib/components/Layout.d.ts.map +1 -1
  61. package/lib/components/Layout.js +681 -666
  62. package/lib/components/Line.d.ts +49 -61
  63. package/lib/components/Line.js +193 -216
  64. package/lib/components/Media.d.ts +35 -35
  65. package/lib/components/Media.d.ts.map +1 -1
  66. package/lib/components/Media.js +134 -135
  67. package/lib/components/Node.d.ts +830 -875
  68. package/lib/components/Node.d.ts.map +1 -1
  69. package/lib/components/Node.js +1314 -1383
  70. package/lib/components/Path.d.ts +14 -35
  71. package/lib/components/Path.js +89 -100
  72. package/lib/components/Polygon.d.ts +55 -60
  73. package/lib/components/Polygon.js +66 -71
  74. package/lib/components/QuadBezier.d.ts +29 -29
  75. package/lib/components/QuadBezier.js +45 -50
  76. package/lib/components/Ray.d.ts +28 -28
  77. package/lib/components/Ray.js +64 -71
  78. package/lib/components/Rect.d.ts +108 -115
  79. package/lib/components/Rect.js +72 -78
  80. package/lib/components/SVG.d.ts +139 -165
  81. package/lib/components/SVG.js +541 -609
  82. package/lib/components/Shape.d.ts +35 -44
  83. package/lib/components/Shape.d.ts.map +1 -1
  84. package/lib/components/Shape.js +127 -112
  85. package/lib/components/Spline.d.ts +40 -46
  86. package/lib/components/Spline.js +175 -190
  87. package/lib/components/Txt.d.ts +44 -55
  88. package/lib/components/Txt.d.ts.map +1 -1
  89. package/lib/components/Txt.js +155 -156
  90. package/lib/components/TxtLeaf.d.ts +16 -20
  91. package/lib/components/TxtLeaf.d.ts.map +1 -1
  92. package/lib/components/TxtLeaf.js +2 -2
  93. package/lib/components/Video.d.ts +45 -41
  94. package/lib/components/Video.d.ts.map +1 -1
  95. package/lib/components/Video.js +207 -138
  96. package/lib/components/View2D.d.ts +22 -21
  97. package/lib/components/View2D.d.ts.map +1 -1
  98. package/lib/components/View2D.js +89 -98
  99. package/lib/components/index.d.ts +1 -1
  100. package/lib/components/index.js +1 -1
  101. package/lib/components/types.d.ts +9 -22
  102. package/lib/components/types.js +1 -1
  103. package/lib/curves/ArcSegment.d.ts +24 -36
  104. package/lib/curves/ArcSegment.js +94 -145
  105. package/lib/curves/CircleSegment.d.ts +16 -26
  106. package/lib/curves/CircleSegment.js +49 -56
  107. package/lib/curves/CubicBezierSegment.d.ts +13 -18
  108. package/lib/curves/CubicBezierSegment.js +46 -79
  109. package/lib/curves/CurveDrawingInfo.d.ts +9 -9
  110. package/lib/curves/CurveDrawingInfo.js +1 -1
  111. package/lib/curves/CurvePoint.d.ts +13 -13
  112. package/lib/curves/CurvePoint.js +1 -1
  113. package/lib/curves/CurveProfile.d.ts +5 -5
  114. package/lib/curves/CurveProfile.js +1 -1
  115. package/lib/curves/KnotInfo.d.ts +8 -8
  116. package/lib/curves/KnotInfo.js +1 -1
  117. package/lib/curves/LineSegment.d.ts +14 -19
  118. package/lib/curves/LineSegment.js +42 -42
  119. package/lib/curves/Polynomial.d.ts +110 -110
  120. package/lib/curves/Polynomial.js +239 -249
  121. package/lib/curves/Polynomial2D.d.ts +20 -20
  122. package/lib/curves/Polynomial2D.js +42 -46
  123. package/lib/curves/PolynomialSegment.d.ts +37 -42
  124. package/lib/curves/PolynomialSegment.js +81 -83
  125. package/lib/curves/QuadBezierSegment.d.ts +12 -12
  126. package/lib/curves/QuadBezierSegment.js +41 -71
  127. package/lib/curves/Segment.d.ts +7 -12
  128. package/lib/curves/Segment.js +3 -2
  129. package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
  130. package/lib/curves/UniformPolynomialCurveSampler.js +62 -68
  131. package/lib/curves/createCurveProfileLerp.d.ts +6 -17
  132. package/lib/curves/createCurveProfileLerp.js +208 -211
  133. package/lib/curves/getBezierSplineProfile.d.ts +4 -8
  134. package/lib/curves/getBezierSplineProfile.js +101 -145
  135. package/lib/curves/getCircleProfile.d.ts +4 -10
  136. package/lib/curves/getCircleProfile.js +40 -72
  137. package/lib/curves/getPathProfile.d.ts +2 -2
  138. package/lib/curves/getPathProfile.js +112 -135
  139. package/lib/curves/getPointAtDistance.d.ts +4 -7
  140. package/lib/curves/getPointAtDistance.js +12 -12
  141. package/lib/curves/getPolylineProfile.d.ts +4 -8
  142. package/lib/curves/getPolylineProfile.js +54 -67
  143. package/lib/curves/getRectProfile.d.ts +4 -9
  144. package/lib/curves/getRectProfile.js +52 -117
  145. package/lib/curves/index.d.ts +1 -1
  146. package/lib/curves/index.js +1 -1
  147. package/lib/decorators/canvasStyleSignal.d.ts +3 -3
  148. package/lib/decorators/canvasStyleSignal.js +10 -10
  149. package/lib/decorators/colorSignal.d.ts +1 -1
  150. package/lib/decorators/colorSignal.js +7 -7
  151. package/lib/decorators/compound.d.ts +2 -4
  152. package/lib/decorators/compound.js +23 -43
  153. package/lib/decorators/computed.d.ts +1 -1
  154. package/lib/decorators/computed.js +9 -9
  155. package/lib/decorators/defaultStyle.d.ts +2 -5
  156. package/lib/decorators/defaultStyle.js +11 -11
  157. package/lib/decorators/filtersSignal.d.ts +8 -28
  158. package/lib/decorators/filtersSignal.js +64 -87
  159. package/lib/decorators/index.d.ts +1 -1
  160. package/lib/decorators/index.js +1 -1
  161. package/lib/decorators/initializers.d.ts +2 -5
  162. package/lib/decorators/initializers.js +19 -18
  163. package/lib/decorators/nodeName.d.ts +1 -1
  164. package/lib/decorators/nodeName.js +4 -4
  165. package/lib/decorators/signal.d.ts +20 -40
  166. package/lib/decorators/signal.js +104 -113
  167. package/lib/decorators/spacingSignal.d.ts +1 -1
  168. package/lib/decorators/spacingSignal.js +13 -13
  169. package/lib/decorators/vector2Signal.d.ts +7 -13
  170. package/lib/decorators/vector2Signal.js +13 -15
  171. package/lib/index.d.ts +1 -1
  172. package/lib/index.js +1 -1
  173. package/lib/jsx-dev-runtime.d.ts +3 -3
  174. package/lib/jsx-dev-runtime.js +3 -3
  175. package/lib/jsx-runtime.d.ts +9 -19
  176. package/lib/jsx-runtime.js +18 -18
  177. package/lib/partials/Filter.d.ts +16 -24
  178. package/lib/partials/Filter.js +69 -69
  179. package/lib/partials/Gradient.d.ts +24 -30
  180. package/lib/partials/Gradient.js +58 -69
  181. package/lib/partials/Pattern.d.ts +9 -14
  182. package/lib/partials/Pattern.js +24 -30
  183. package/lib/partials/ShaderConfig.d.ts +74 -81
  184. package/lib/partials/ShaderConfig.js +23 -22
  185. package/lib/partials/index.d.ts +1 -1
  186. package/lib/partials/index.js +1 -1
  187. package/lib/partials/types.d.ts +6 -19
  188. package/lib/partials/types.js +1 -1
  189. package/lib/scenes/Scene2D.d.ts +23 -42
  190. package/lib/scenes/Scene2D.d.ts.map +1 -1
  191. package/lib/scenes/Scene2D.js +152 -161
  192. package/lib/scenes/index.d.ts +1 -1
  193. package/lib/scenes/index.js +1 -1
  194. package/lib/scenes/makeScene2D.d.ts +5 -7
  195. package/lib/scenes/makeScene2D.js +10 -10
  196. package/lib/scenes/useScene2D.d.ts +2 -2
  197. package/lib/scenes/useScene2D.js +3 -3
  198. package/lib/tsconfig.build.tsbuildinfo +1 -1
  199. package/lib/utils/CanvasUtils.d.ts +21 -93
  200. package/lib/utils/CanvasUtils.js +105 -186
  201. package/lib/utils/diff.d.ts +18 -25
  202. package/lib/utils/diff.js +87 -84
  203. package/lib/utils/index.d.ts +1 -1
  204. package/lib/utils/index.js +1 -1
  205. package/lib/utils/is.d.ts +2 -4
  206. package/lib/utils/is.js +2 -2
  207. package/lib/utils/makeSignalExtensions.d.ts +4 -11
  208. package/lib/utils/makeSignalExtensions.js +17 -17
  209. package/package.json +5 -5
  210. package/src/lib/components/Audio.ts +2 -2
  211. package/src/lib/components/Code.ts +4 -2
  212. package/src/lib/components/CodeBlock.ts +1 -1
  213. package/src/lib/components/Img.ts +2 -2
  214. package/src/lib/components/Layout.ts +2 -2
  215. package/src/lib/components/Media.ts +3 -1
  216. package/src/lib/components/Node.ts +9 -9
  217. package/src/lib/components/Shape.ts +2 -2
  218. package/src/lib/components/Txt.ts +2 -2
  219. package/src/lib/components/TxtLeaf.ts +1 -1
  220. package/src/lib/components/Video.ts +120 -8
  221. package/src/lib/components/View2D.ts +6 -2
  222. package/src/lib/scenes/Scene2D.ts +4 -3
@@ -1,4 +1,4 @@
1
- import {clamp} from '@revideo/core';
1
+ import { clamp } from '@revideo/core';
2
2
  /**
3
3
  * A polynomial in the form ax^3 + bx^2 + cx + d up to a cubic polynomial.
4
4
  *
@@ -6,264 +6,254 @@ import {clamp} from '@revideo/core';
6
6
  * https://github.com/FreyaHolmer/Mathfs/blob/master/Runtime/Curves/Polynomial.cs
7
7
  */
8
8
  export class Polynomial {
9
- /**
10
- * Constructs a constant polynomial
11
- *
12
- * @param c0 - The constant coefficient
13
- */
14
- static constant(c0) {
15
- return new Polynomial(c0);
16
- }
17
- /**
18
- * Constructs a linear polynomial
19
- *
20
- * @param c0 - The constant coefficient
21
- * @param c1 - The linear coefficient
22
- */
23
- static linear(c0, c1) {
24
- return new Polynomial(c0, c1);
25
- }
26
- /**
27
- * Constructs a quadratic polynomial
28
- *
29
- * @param c0 - The constant coefficient
30
- * @param c1 - The linear coefficient
31
- * @param c2 - The quadratic coefficient
32
- */
33
- static quadratic(c0, c1, c2) {
34
- return new Polynomial(c0, c1, c2);
35
- }
36
- /**
37
- * Constructs a cubic polynomial
38
- *
39
- * @param c0 - The constant coefficient
40
- * @param c1 - The linear coefficient
41
- * @param c2 - The quadratic coefficient
42
- * @param c3 - The cubic coefficient
43
- */
44
- static cubic(c0, c1, c2, c3) {
45
- return new Polynomial(c0, c1, c2, c3);
46
- }
47
- /**
48
- * The degree of the polynomial
49
- */
50
- get degree() {
51
- if (this.c3 !== 0) {
52
- return 3;
53
- } else if (this.c2 !== 0) {
54
- return 2;
55
- } else if (this.c1 !== 0) {
56
- return 1;
9
+ /**
10
+ * Constructs a constant polynomial
11
+ *
12
+ * @param c0 - The constant coefficient
13
+ */
14
+ static constant(c0) {
15
+ return new Polynomial(c0);
57
16
  }
58
- return 0;
59
- }
60
- constructor(c0, c1, c2, c3) {
61
- this.c0 = c0;
62
- this.c1 = c1 ?? 0;
63
- this.c2 = c2 ?? 0;
64
- this.c3 = c3 ?? 0;
65
- }
66
- /**
67
- * Return the nth derivative of the polynomial.
68
- *
69
- * @param n - The number of times to differentiate the polynomial.
70
- */
71
- differentiate(n = 1) {
72
- switch (n) {
73
- case 0:
74
- return this;
75
- case 1:
76
- return new Polynomial(this.c1, 2 * this.c2, 3 * this.c3, 0);
77
- case 2:
78
- return new Polynomial(2 * this.c2, 6 * this.c3, 0, 0);
79
- case 3:
80
- return new Polynomial(6 * this.c3, 0, 0, 0);
81
- default:
82
- throw new Error('Unsupported derivative');
17
+ /**
18
+ * Constructs a linear polynomial
19
+ *
20
+ * @param c0 - The constant coefficient
21
+ * @param c1 - The linear coefficient
22
+ */
23
+ static linear(c0, c1) {
24
+ return new Polynomial(c0, c1);
83
25
  }
84
- }
85
- eval(t, derivative = 0) {
86
- if (derivative !== 0) {
87
- return this.differentiate(derivative).eval(t);
26
+ /**
27
+ * Constructs a quadratic polynomial
28
+ *
29
+ * @param c0 - The constant coefficient
30
+ * @param c1 - The linear coefficient
31
+ * @param c2 - The quadratic coefficient
32
+ */
33
+ static quadratic(c0, c1, c2) {
34
+ return new Polynomial(c0, c1, c2);
88
35
  }
89
- return this.c3 * (t * t * t) + this.c2 * (t * t) + this.c1 * t + this.c0;
90
- }
91
- /**
92
- * Split the polynomial into two polynomials of the same overall shape.
93
- *
94
- * @param u - The point at which to split the polynomial.
95
- */
96
- split(u) {
97
- const d = 1 - u;
98
- const pre = new Polynomial(
99
- this.c0,
100
- this.c1 * u,
101
- this.c2 * u * u,
102
- this.c3 * u * u * u,
103
- );
104
- const post = new Polynomial(
105
- this.eval(0),
106
- d * this.differentiate(1).eval(u),
107
- ((d * d) / 2) * this.differentiate(2).eval(u),
108
- ((d * d * d) / 6) * this.differentiate(3).eval(u),
109
- );
110
- return [pre, post];
111
- }
112
- /**
113
- * Calculate the roots (values where this polynomial = 0).
114
- *
115
- * @remarks
116
- * Depending on the degree of the polynomial, returns between 0 and 3 results.
117
- */
118
- roots() {
119
- switch (this.degree) {
120
- case 3:
121
- return this.solveCubicRoots();
122
- case 2:
123
- return this.solveQuadraticRoots();
124
- case 1:
125
- return this.solveLinearRoot();
126
- case 0:
127
- return [];
128
- default:
129
- throw new Error(`Unsupported polynomial degree: ${this.degree}`);
36
+ /**
37
+ * Constructs a cubic polynomial
38
+ *
39
+ * @param c0 - The constant coefficient
40
+ * @param c1 - The linear coefficient
41
+ * @param c2 - The quadratic coefficient
42
+ * @param c3 - The cubic coefficient
43
+ */
44
+ static cubic(c0, c1, c2, c3) {
45
+ return new Polynomial(c0, c1, c2, c3);
130
46
  }
131
- }
132
- /**
133
- * Calculate the local extrema of the polynomial.
134
- */
135
- localExtrema() {
136
- return this.differentiate().roots();
137
- }
138
- /**
139
- * Calculate the local extrema of the polynomial in the unit interval.
140
- */
141
- localExtrema01() {
142
- const all = this.localExtrema();
143
- const valids = [];
144
- for (let i = 0; i < all.length; i++) {
145
- const t = all[i];
146
- if (t >= 0 && t <= 1) {
147
- valids.push(all[i]);
148
- }
47
+ /**
48
+ * The degree of the polynomial
49
+ */
50
+ get degree() {
51
+ if (this.c3 !== 0) {
52
+ return 3;
53
+ }
54
+ else if (this.c2 !== 0) {
55
+ return 2;
56
+ }
57
+ else if (this.c1 !== 0) {
58
+ return 1;
59
+ }
60
+ return 0;
149
61
  }
150
- return valids;
151
- }
152
- /**
153
- * Return the output value range within the unit interval.
154
- */
155
- outputRange01() {
156
- let range = [this.eval(0), this.eval(1)];
157
- // Expands the minimum or maximum value of the range to contain the given
158
- // value.
159
- const encapsulate = value => {
160
- if (range[1] > range[0]) {
161
- range = [Math.min(range[0], value), Math.max(range[1], value)];
162
- } else {
163
- range = [Math.min(range[1], value), Math.max(range[0], value)];
164
- }
165
- };
166
- this.localExtrema01().forEach(t => encapsulate(this.eval(t)));
167
- return range;
168
- }
169
- solveCubicRoots() {
170
- const a = this.c0;
171
- const b = this.c1;
172
- const c = this.c2;
173
- const d = this.c3;
174
- // First, depress the cubic to make it easier to solve
175
- const aa = a * a;
176
- const ac = a * c;
177
- const bb = b * b;
178
- const p = (3 * ac - bb) / (3 * aa);
179
- const q = (2 * bb * b - 9 * ac * b + 27 * aa * d) / (27 * aa * a);
180
- const dpr = this.solveDepressedCubicRoots(p, q);
181
- // We now have the roots of the depressed cubic, now convert back to the
182
- // normal cubic
183
- const undepressRoot = r => r - b / (3 * a);
184
- switch (dpr.length) {
185
- case 1:
186
- return [undepressRoot(dpr[0])];
187
- case 2:
188
- return [undepressRoot(dpr[0]), undepressRoot(dpr[1])];
189
- case 3:
190
- return [
191
- undepressRoot(dpr[0]),
192
- undepressRoot(dpr[1]),
193
- undepressRoot(dpr[2]),
194
- ];
195
- default:
196
- return [];
62
+ constructor(c0, c1, c2, c3) {
63
+ this.c0 = c0;
64
+ this.c1 = c1 ?? 0;
65
+ this.c2 = c2 ?? 0;
66
+ this.c3 = c3 ?? 0;
67
+ }
68
+ /**
69
+ * Return the nth derivative of the polynomial.
70
+ *
71
+ * @param n - The number of times to differentiate the polynomial.
72
+ */
73
+ differentiate(n = 1) {
74
+ switch (n) {
75
+ case 0:
76
+ return this;
77
+ case 1:
78
+ return new Polynomial(this.c1, 2 * this.c2, 3 * this.c3, 0);
79
+ case 2:
80
+ return new Polynomial(2 * this.c2, 6 * this.c3, 0, 0);
81
+ case 3:
82
+ return new Polynomial(6 * this.c3, 0, 0, 0);
83
+ default:
84
+ throw new Error('Unsupported derivative');
85
+ }
86
+ }
87
+ eval(t, derivative = 0) {
88
+ if (derivative !== 0) {
89
+ return this.differentiate(derivative).eval(t);
90
+ }
91
+ return this.c3 * (t * t * t) + this.c2 * (t * t) + this.c1 * t + this.c0;
92
+ }
93
+ /**
94
+ * Split the polynomial into two polynomials of the same overall shape.
95
+ *
96
+ * @param u - The point at which to split the polynomial.
97
+ */
98
+ split(u) {
99
+ const d = 1 - u;
100
+ const pre = new Polynomial(this.c0, this.c1 * u, this.c2 * u * u, this.c3 * u * u * u);
101
+ const post = new Polynomial(this.eval(0), d * this.differentiate(1).eval(u), ((d * d) / 2) * this.differentiate(2).eval(u), ((d * d * d) / 6) * this.differentiate(3).eval(u));
102
+ return [pre, post];
197
103
  }
198
- }
199
- solveDepressedCubicRoots(p, q) {
200
- // t³+pt+q = 0
201
- // Triple root - one solution. solve x³+q = 0 => x = cr(-q)
202
- if (this.almostZero(p)) {
203
- return [Math.cbrt(-q)];
104
+ /**
105
+ * Calculate the roots (values where this polynomial = 0).
106
+ *
107
+ * @remarks
108
+ * Depending on the degree of the polynomial, returns between 0 and 3 results.
109
+ */
110
+ roots() {
111
+ switch (this.degree) {
112
+ case 3:
113
+ return this.solveCubicRoots();
114
+ case 2:
115
+ return this.solveQuadraticRoots();
116
+ case 1:
117
+ return this.solveLinearRoot();
118
+ case 0:
119
+ return [];
120
+ default:
121
+ throw new Error(`Unsupported polynomial degree: ${this.degree}`);
122
+ }
204
123
  }
205
- const TAU = Math.PI * 2;
206
- const discriminant = 4 * p * p * p + 27 * q * q;
207
- if (discriminant < 0.00001) {
208
- // Two or three roots guaranteed, use trig solution
209
- const pre = 2 * Math.sqrt(-p / 3);
210
- const acosInner = ((3 * q) / (2 * p)) * Math.sqrt(-3 / p);
211
- const getRoot = k =>
212
- pre *
213
- Math.cos((1 / 3) * Math.acos(clamp(-1, 1, acosInner)) - (TAU / 3) * k);
214
- // If acos hits 0 or TAU/2, the offsets will have the same value,
215
- // which means we have a double root plus one regular root on our hands
216
- if (acosInner >= 0.9999) {
217
- // two roots - one single and one double root
218
- return [getRoot(0), getRoot(2)];
219
- }
220
- if (acosInner <= -0.9999) {
221
- // two roots - one single and one double root
222
- return [getRoot(1), getRoot(2)];
223
- }
224
- return [getRoot(0), getRoot(1), getRoot(2)];
124
+ /**
125
+ * Calculate the local extrema of the polynomial.
126
+ */
127
+ localExtrema() {
128
+ return this.differentiate().roots();
225
129
  }
226
- if (discriminant > 0 && p < 0) {
227
- // one root
228
- const coshInner =
229
- (1 / 3) *
230
- Math.acosh(((-3 * Math.abs(q)) / (2 * p)) * Math.sqrt(-3 / p));
231
- const r = -2 * Math.sign(q) * Math.sqrt(-p / 3) * Math.cosh(coshInner);
232
- return [r];
130
+ /**
131
+ * Calculate the local extrema of the polynomial in the unit interval.
132
+ */
133
+ localExtrema01() {
134
+ const all = this.localExtrema();
135
+ const valids = [];
136
+ for (let i = 0; i < all.length; i++) {
137
+ const t = all[i];
138
+ if (t >= 0 && t <= 1) {
139
+ valids.push(all[i]);
140
+ }
141
+ }
142
+ return valids;
233
143
  }
234
- if (p > 0) {
235
- // one root
236
- const sinhInner =
237
- (1 / 3) * Math.asinh(((3 * q) / (2 * p)) * Math.sqrt(3 / p));
238
- const r = -2 * Math.sqrt(p / 3) * Math.sinh(sinhInner);
239
- return [r];
144
+ /**
145
+ * Return the output value range within the unit interval.
146
+ */
147
+ outputRange01() {
148
+ let range = [this.eval(0), this.eval(1)];
149
+ // Expands the minimum or maximum value of the range to contain the given
150
+ // value.
151
+ const encapsulate = (value) => {
152
+ if (range[1] > range[0]) {
153
+ range = [Math.min(range[0], value), Math.max(range[1], value)];
154
+ }
155
+ else {
156
+ range = [Math.min(range[1], value), Math.max(range[0], value)];
157
+ }
158
+ };
159
+ this.localExtrema01().forEach(t => encapsulate(this.eval(t)));
160
+ return range;
161
+ }
162
+ solveCubicRoots() {
163
+ const a = this.c0;
164
+ const b = this.c1;
165
+ const c = this.c2;
166
+ const d = this.c3;
167
+ // First, depress the cubic to make it easier to solve
168
+ const aa = a * a;
169
+ const ac = a * c;
170
+ const bb = b * b;
171
+ const p = (3 * ac - bb) / (3 * aa);
172
+ const q = (2 * bb * b - 9 * ac * b + 27 * aa * d) / (27 * aa * a);
173
+ const dpr = this.solveDepressedCubicRoots(p, q);
174
+ // We now have the roots of the depressed cubic, now convert back to the
175
+ // normal cubic
176
+ const undepressRoot = (r) => r - b / (3 * a);
177
+ switch (dpr.length) {
178
+ case 1:
179
+ return [undepressRoot(dpr[0])];
180
+ case 2:
181
+ return [undepressRoot(dpr[0]), undepressRoot(dpr[1])];
182
+ case 3:
183
+ return [
184
+ undepressRoot(dpr[0]),
185
+ undepressRoot(dpr[1]),
186
+ undepressRoot(dpr[2]),
187
+ ];
188
+ default:
189
+ return [];
190
+ }
191
+ }
192
+ solveDepressedCubicRoots(p, q) {
193
+ // t³+pt+q = 0
194
+ // Triple root - one solution. solve x³+q = 0 => x = cr(-q)
195
+ if (this.almostZero(p)) {
196
+ return [Math.cbrt(-q)];
197
+ }
198
+ const TAU = Math.PI * 2;
199
+ const discriminant = 4 * p * p * p + 27 * q * q;
200
+ if (discriminant < 0.00001) {
201
+ // Two or three roots guaranteed, use trig solution
202
+ const pre = 2 * Math.sqrt(-p / 3);
203
+ const acosInner = ((3 * q) / (2 * p)) * Math.sqrt(-3 / p);
204
+ const getRoot = (k) => pre *
205
+ Math.cos((1 / 3) * Math.acos(clamp(-1, 1, acosInner)) - (TAU / 3) * k);
206
+ // If acos hits 0 or TAU/2, the offsets will have the same value,
207
+ // which means we have a double root plus one regular root on our hands
208
+ if (acosInner >= 0.9999) {
209
+ // two roots - one single and one double root
210
+ return [getRoot(0), getRoot(2)];
211
+ }
212
+ if (acosInner <= -0.9999) {
213
+ // two roots - one single and one double root
214
+ return [getRoot(1), getRoot(2)];
215
+ }
216
+ return [getRoot(0), getRoot(1), getRoot(2)];
217
+ }
218
+ if (discriminant > 0 && p < 0) {
219
+ // one root
220
+ const coshInner = (1 / 3) *
221
+ Math.acosh(((-3 * Math.abs(q)) / (2 * p)) * Math.sqrt(-3 / p));
222
+ const r = -2 * Math.sign(q) * Math.sqrt(-p / 3) * Math.cosh(coshInner);
223
+ return [r];
224
+ }
225
+ if (p > 0) {
226
+ // one root
227
+ const sinhInner = (1 / 3) * Math.asinh(((3 * q) / (2 * p)) * Math.sqrt(3 / p));
228
+ const r = -2 * Math.sqrt(p / 3) * Math.sinh(sinhInner);
229
+ return [r];
230
+ }
231
+ // no roots
232
+ return [];
233
+ }
234
+ solveQuadraticRoots() {
235
+ const a = this.c2;
236
+ const b = this.c1;
237
+ const c = this.c0;
238
+ const rootContent = b * b - 4 * a * c;
239
+ if (this.almostZero(rootContent)) {
240
+ // two equivalent solutions at one point
241
+ return [-b / (2 * a)];
242
+ }
243
+ if (rootContent >= 0) {
244
+ const root = Math.sqrt(rootContent);
245
+ // crosses at two points
246
+ const r0 = (-b - root) / (2 * a);
247
+ const r1 = (-b + root) / (2 * a);
248
+ return [Math.min(r0, r1), Math.max(r0, r1)];
249
+ }
250
+ return [];
240
251
  }
241
- // no roots
242
- return [];
243
- }
244
- solveQuadraticRoots() {
245
- const a = this.c2;
246
- const b = this.c1;
247
- const c = this.c0;
248
- const rootContent = b * b - 4 * a * c;
249
- if (this.almostZero(rootContent)) {
250
- // two equivalent solutions at one point
251
- return [-b / (2 * a)];
252
+ solveLinearRoot() {
253
+ return [-this.c0 / this.c1];
252
254
  }
253
- if (rootContent >= 0) {
254
- const root = Math.sqrt(rootContent);
255
- // crosses at two points
256
- const r0 = (-b - root) / (2 * a);
257
- const r1 = (-b + root) / (2 * a);
258
- return [Math.min(r0, r1), Math.max(r0, r1)];
255
+ almostZero(value) {
256
+ return Math.abs(0 - value) <= Number.EPSILON;
259
257
  }
260
- return [];
261
- }
262
- solveLinearRoot() {
263
- return [-this.c0 / this.c1];
264
- }
265
- almostZero(value) {
266
- return Math.abs(0 - value) <= Number.EPSILON;
267
- }
268
258
  }
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9seW5vbWlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL1BvbHlub21pYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVwQzs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBS3JCOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQVU7UUFDL0IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVUsRUFBRSxFQUFVO1FBQ3pDLE9BQU8sSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtRQUN4RCxPQUFPLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUNqQixFQUFVLEVBQ1YsRUFBVSxFQUNWLEVBQVUsRUFDVixFQUFVO1FBRVYsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFDZixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQzthQUFNLElBQUksSUFBSSxD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
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9seW5vbWlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL1BvbHlub21pYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVwQzs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBS3JCOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQVU7UUFDL0IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVUsRUFBRSxFQUFVO1FBQ3pDLE9BQU8sSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtRQUN4RCxPQUFPLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUNqQixFQUFVLEVBQ1YsRUFBVSxFQUNWLEVBQVUsRUFDVixFQUFVO1FBRVYsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFDZixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQzthQUFNLElBQUksSUFBSSxD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
@@ -1,22 +1,22 @@
1
- import {BBox, Vector2} from '@revideo/core';
2
- import {Polynomial} from './Polynomial';
1
+ import { BBox, Vector2 } from '@revideo/core';
2
+ import { Polynomial } from './Polynomial';
3
3
  export declare class Polynomial2D {
4
- readonly c0: Vector2 | Polynomial;
5
- readonly c1: Vector2 | Polynomial;
6
- readonly c2?: Vector2 | undefined;
7
- readonly c3?: Vector2 | undefined;
8
- readonly x: Polynomial;
9
- readonly y: Polynomial;
10
- constructor(c0: Vector2, c1: Vector2, c2: Vector2, c3: Vector2);
11
- constructor(c0: Vector2, c1: Vector2, c2: Vector2);
12
- constructor(x: Polynomial, y: Polynomial);
13
- eval(t: number, derivative?: number): Vector2;
14
- split(u: number): [Polynomial2D, Polynomial2D];
15
- differentiate(n?: number): Polynomial2D;
16
- evalDerivative(t: number): Vector2;
17
- /**
18
- * Calculate the tight axis-aligned bounds of the curve in the unit interval.
19
- */
20
- getBounds(): BBox;
4
+ readonly c0: Vector2 | Polynomial;
5
+ readonly c1: Vector2 | Polynomial;
6
+ readonly c2?: Vector2 | undefined;
7
+ readonly c3?: Vector2 | undefined;
8
+ readonly x: Polynomial;
9
+ readonly y: Polynomial;
10
+ constructor(c0: Vector2, c1: Vector2, c2: Vector2, c3: Vector2);
11
+ constructor(c0: Vector2, c1: Vector2, c2: Vector2);
12
+ constructor(x: Polynomial, y: Polynomial);
13
+ eval(t: number, derivative?: number): Vector2;
14
+ split(u: number): [Polynomial2D, Polynomial2D];
15
+ differentiate(n?: number): Polynomial2D;
16
+ evalDerivative(t: number): Vector2;
17
+ /**
18
+ * Calculate the tight axis-aligned bounds of the curve in the unit interval.
19
+ */
20
+ getBounds(): BBox;
21
21
  }
22
- //# sourceMappingURL=Polynomial2D.d.ts.map
22
+ //# sourceMappingURL=Polynomial2D.d.ts.map