@revideo/2d 0.1.0 → 0.1.4-alpha.878

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 (202) hide show
  1. package/lib/code/CodeCursor.d.ts +74 -74
  2. package/lib/code/CodeCursor.js +352 -286
  3. package/lib/code/CodeDiffer.d.ts +21 -16
  4. package/lib/code/CodeDiffer.js +39 -41
  5. package/lib/code/CodeFragment.d.ts +16 -8
  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 +12 -8
  10. package/lib/code/CodeMetrics.js +26 -24
  11. package/lib/code/CodeRange.d.ts +21 -5
  12. package/lib/code/CodeRange.js +131 -124
  13. package/lib/code/CodeScope.d.ts +18 -8
  14. package/lib/code/CodeScope.js +59 -61
  15. package/lib/code/CodeSelection.d.ts +9 -4
  16. package/lib/code/CodeSelection.js +8 -8
  17. package/lib/code/CodeSignal.d.ts +74 -47
  18. package/lib/code/CodeSignal.js +206 -189
  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 +21 -19
  24. package/lib/code/LezerHighlighter.js +101 -101
  25. package/lib/code/diff.d.ts +12 -9
  26. package/lib/code/diff.js +218 -205
  27. package/lib/code/extractRange.d.ts +7 -4
  28. package/lib/code/extractRange.js +79 -71
  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.js +115 -109
  33. package/lib/components/AudioTest.d.ts +95 -95
  34. package/lib/components/AudioTest.js +259 -261
  35. package/lib/components/Bezier.d.ts +18 -18
  36. package/lib/components/Bezier.js +86 -75
  37. package/lib/components/Circle.d.ts +95 -90
  38. package/lib/components/Circle.js +85 -74
  39. package/lib/components/Code.d.ts +244 -211
  40. package/lib/components/Code.js +317 -269
  41. package/lib/components/CodeBlock.d.ts +109 -67
  42. package/lib/components/CodeBlock.js +414 -373
  43. package/lib/components/CubicBezier.d.ts +36 -36
  44. package/lib/components/CubicBezier.js +52 -49
  45. package/lib/components/Curve.d.ts +208 -198
  46. package/lib/components/Curve.js +270 -269
  47. package/lib/components/Grid.d.ts +47 -42
  48. package/lib/components/Grid.js +63 -56
  49. package/lib/components/Icon.d.ts +55 -50
  50. package/lib/components/Icon.js +58 -50
  51. package/lib/components/Img.d.ts +86 -79
  52. package/lib/components/Img.js +193 -181
  53. package/lib/components/Knot.d.ts +97 -78
  54. package/lib/components/Knot.js +81 -60
  55. package/lib/components/Latex.d.ts +12 -12
  56. package/lib/components/Latex.js +77 -65
  57. package/lib/components/Layout.d.ts +455 -413
  58. package/lib/components/Layout.js +666 -681
  59. package/lib/components/Line.d.ts +61 -49
  60. package/lib/components/Line.js +216 -193
  61. package/lib/components/Media.d.ts +35 -31
  62. package/lib/components/Media.d.ts.map +1 -1
  63. package/lib/components/Media.js +135 -121
  64. package/lib/components/Node.d.ts +875 -830
  65. package/lib/components/Node.js +1383 -1314
  66. package/lib/components/Path.d.ts +35 -14
  67. package/lib/components/Path.js +100 -89
  68. package/lib/components/Polygon.d.ts +60 -55
  69. package/lib/components/Polygon.js +71 -66
  70. package/lib/components/QuadBezier.d.ts +29 -29
  71. package/lib/components/QuadBezier.js +50 -45
  72. package/lib/components/Ray.d.ts +28 -28
  73. package/lib/components/Ray.js +71 -64
  74. package/lib/components/Rect.d.ts +115 -108
  75. package/lib/components/Rect.js +78 -72
  76. package/lib/components/SVG.d.ts +165 -139
  77. package/lib/components/SVG.js +609 -541
  78. package/lib/components/Shape.d.ts +44 -35
  79. package/lib/components/Shape.js +112 -127
  80. package/lib/components/Spline.d.ts +46 -40
  81. package/lib/components/Spline.js +190 -175
  82. package/lib/components/Txt.d.ts +55 -44
  83. package/lib/components/Txt.js +156 -155
  84. package/lib/components/TxtLeaf.d.ts +20 -16
  85. package/lib/components/TxtLeaf.js +177 -158
  86. package/lib/components/Video.d.ts +41 -41
  87. package/lib/components/Video.js +138 -135
  88. package/lib/components/View2D.d.ts +21 -21
  89. package/lib/components/View2D.js +98 -85
  90. package/lib/components/index.d.ts +1 -1
  91. package/lib/components/index.js +1 -1
  92. package/lib/components/types.d.ts +22 -9
  93. package/lib/components/types.js +1 -1
  94. package/lib/curves/ArcSegment.d.ts +36 -24
  95. package/lib/curves/ArcSegment.js +145 -94
  96. package/lib/curves/CircleSegment.d.ts +26 -16
  97. package/lib/curves/CircleSegment.js +56 -49
  98. package/lib/curves/CubicBezierSegment.d.ts +18 -13
  99. package/lib/curves/CubicBezierSegment.js +79 -46
  100. package/lib/curves/CurveDrawingInfo.d.ts +9 -9
  101. package/lib/curves/CurveDrawingInfo.js +1 -1
  102. package/lib/curves/CurvePoint.d.ts +13 -13
  103. package/lib/curves/CurvePoint.js +1 -1
  104. package/lib/curves/CurveProfile.d.ts +5 -5
  105. package/lib/curves/CurveProfile.js +1 -1
  106. package/lib/curves/KnotInfo.d.ts +8 -8
  107. package/lib/curves/KnotInfo.js +1 -1
  108. package/lib/curves/LineSegment.d.ts +19 -14
  109. package/lib/curves/LineSegment.js +42 -42
  110. package/lib/curves/Polynomial.d.ts +110 -110
  111. package/lib/curves/Polynomial.js +249 -239
  112. package/lib/curves/Polynomial2D.d.ts +20 -20
  113. package/lib/curves/Polynomial2D.js +46 -42
  114. package/lib/curves/PolynomialSegment.d.ts +42 -37
  115. package/lib/curves/PolynomialSegment.js +83 -81
  116. package/lib/curves/QuadBezierSegment.d.ts +12 -12
  117. package/lib/curves/QuadBezierSegment.js +71 -41
  118. package/lib/curves/Segment.d.ts +12 -7
  119. package/lib/curves/Segment.js +2 -3
  120. package/lib/curves/UniformPolynomialCurveSampler.d.ts +34 -34
  121. package/lib/curves/UniformPolynomialCurveSampler.js +68 -62
  122. package/lib/curves/createCurveProfileLerp.d.ts +17 -6
  123. package/lib/curves/createCurveProfileLerp.js +211 -208
  124. package/lib/curves/getBezierSplineProfile.d.ts +8 -4
  125. package/lib/curves/getBezierSplineProfile.js +145 -101
  126. package/lib/curves/getCircleProfile.d.ts +10 -4
  127. package/lib/curves/getCircleProfile.js +72 -40
  128. package/lib/curves/getPathProfile.d.ts +2 -2
  129. package/lib/curves/getPathProfile.js +135 -112
  130. package/lib/curves/getPointAtDistance.d.ts +7 -4
  131. package/lib/curves/getPointAtDistance.js +12 -12
  132. package/lib/curves/getPolylineProfile.d.ts +8 -4
  133. package/lib/curves/getPolylineProfile.js +67 -54
  134. package/lib/curves/getRectProfile.d.ts +9 -4
  135. package/lib/curves/getRectProfile.js +117 -52
  136. package/lib/curves/index.d.ts +1 -1
  137. package/lib/curves/index.js +1 -1
  138. package/lib/decorators/canvasStyleSignal.d.ts +3 -3
  139. package/lib/decorators/canvasStyleSignal.js +10 -10
  140. package/lib/decorators/colorSignal.d.ts +1 -1
  141. package/lib/decorators/colorSignal.js +7 -7
  142. package/lib/decorators/compound.d.ts +4 -2
  143. package/lib/decorators/compound.js +43 -23
  144. package/lib/decorators/computed.d.ts +1 -1
  145. package/lib/decorators/computed.js +9 -9
  146. package/lib/decorators/defaultStyle.d.ts +5 -2
  147. package/lib/decorators/defaultStyle.js +11 -11
  148. package/lib/decorators/filtersSignal.d.ts +28 -8
  149. package/lib/decorators/filtersSignal.js +87 -64
  150. package/lib/decorators/index.d.ts +1 -1
  151. package/lib/decorators/index.js +1 -1
  152. package/lib/decorators/initializers.d.ts +5 -2
  153. package/lib/decorators/initializers.js +18 -19
  154. package/lib/decorators/nodeName.d.ts +1 -1
  155. package/lib/decorators/nodeName.js +4 -4
  156. package/lib/decorators/signal.d.ts +40 -20
  157. package/lib/decorators/signal.js +113 -104
  158. package/lib/decorators/spacingSignal.d.ts +1 -1
  159. package/lib/decorators/spacingSignal.js +13 -13
  160. package/lib/decorators/vector2Signal.d.ts +13 -7
  161. package/lib/decorators/vector2Signal.js +15 -13
  162. package/lib/index.d.ts +1 -1
  163. package/lib/index.js +1 -1
  164. package/lib/jsx-dev-runtime.d.ts +3 -3
  165. package/lib/jsx-dev-runtime.js +3 -3
  166. package/lib/jsx-runtime.d.ts +19 -9
  167. package/lib/jsx-runtime.js +18 -18
  168. package/lib/partials/Filter.d.ts +24 -16
  169. package/lib/partials/Filter.js +69 -69
  170. package/lib/partials/Gradient.d.ts +30 -24
  171. package/lib/partials/Gradient.js +69 -58
  172. package/lib/partials/Pattern.d.ts +14 -9
  173. package/lib/partials/Pattern.js +30 -24
  174. package/lib/partials/ShaderConfig.d.ts +81 -74
  175. package/lib/partials/ShaderConfig.js +22 -23
  176. package/lib/partials/index.d.ts +1 -1
  177. package/lib/partials/index.js +1 -1
  178. package/lib/partials/types.d.ts +19 -6
  179. package/lib/partials/types.js +1 -1
  180. package/lib/scenes/Scene2D.d.ts +42 -23
  181. package/lib/scenes/Scene2D.d.ts.map +1 -1
  182. package/lib/scenes/Scene2D.js +161 -149
  183. package/lib/scenes/index.d.ts +1 -1
  184. package/lib/scenes/index.js +1 -1
  185. package/lib/scenes/makeScene2D.d.ts +7 -5
  186. package/lib/scenes/makeScene2D.js +10 -10
  187. package/lib/scenes/useScene2D.d.ts +2 -2
  188. package/lib/scenes/useScene2D.js +3 -3
  189. package/lib/tsconfig.build.tsbuildinfo +1 -1
  190. package/lib/utils/CanvasUtils.d.ts +93 -21
  191. package/lib/utils/CanvasUtils.js +186 -105
  192. package/lib/utils/diff.d.ts +25 -18
  193. package/lib/utils/diff.js +84 -87
  194. package/lib/utils/index.d.ts +1 -1
  195. package/lib/utils/index.js +1 -1
  196. package/lib/utils/is.d.ts +4 -2
  197. package/lib/utils/is.js +2 -2
  198. package/lib/utils/makeSignalExtensions.d.ts +11 -4
  199. package/lib/utils/makeSignalExtensions.js +17 -17
  200. package/package.json +5 -5
  201. package/src/lib/components/Media.ts +18 -0
  202. package/src/lib/scenes/Scene2D.ts +2 -0
@@ -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,254 +6,264 @@ 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);
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;
16
57
  }
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);
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');
25
83
  }
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);
84
+ }
85
+ eval(t, derivative = 0) {
86
+ if (derivative !== 0) {
87
+ return this.differentiate(derivative).eval(t);
35
88
  }
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
- }
54
- else if (this.c2 !== 0) {
55
- return 2;
56
- }
57
- else if (this.c1 !== 0) {
58
- return 1;
59
- }
60
- return 0;
61
- }
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];
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}`);
103
130
  }
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
- }
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
+ }
123
149
  }
124
- /**
125
- * Calculate the local extrema of the polynomial.
126
- */
127
- localExtrema() {
128
- return this.differentiate().roots();
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 [];
129
197
  }
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;
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)];
143
204
  }
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;
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)];
161
225
  }
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
- }
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];
191
233
  }
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 [];
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];
251
240
  }
252
- solveLinearRoot() {
253
- return [-this.c0 / this.c1];
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)];
254
252
  }
255
- almostZero(value) {
256
- return Math.abs(0 - value) <= Number.EPSILON;
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)];
257
259
  }
260
+ return [];
261
+ }
262
+ solveLinearRoot() {
263
+ return [-this.c0 / this.c1];
264
+ }
265
+ almostZero(value) {
266
+ return Math.abs(0 - value) <= Number.EPSILON;
267
+ }
258
268
  }
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9seW5vbWlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3VydmVzL1BvbHlub21pYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVwQzs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBS3JCOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQVU7UUFDL0IsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQVUsRUFBRSxFQUFVO1FBQ3pDLE9BQU8sSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtRQUN4RCxPQUFPLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUNqQixFQUFVLEVBQ1YsRUFBVSxFQUNWLEVBQVUsRUFDVixFQUFVO1FBRVYsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE1BQU07UUFDZixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQzthQUFNLElBQUksSUFBSSxD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
269
+ //# 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