curvy 0.3.2 → 1.0.0
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/LICENSE.md +21 -0
- package/dist/curve/cubic2d.d.mts +27 -0
- package/dist/curve/cubic2d.d.ts +27 -0
- package/dist/curve/cubic2d.mjs +85 -0
- package/dist/curve/linear2d.d.mts +27 -0
- package/dist/curve/linear2d.d.ts +27 -0
- package/dist/curve/linear2d.mjs +46 -0
- package/dist/curve/quadratic2d.d.mts +27 -0
- package/dist/curve/quadratic2d.d.ts +27 -0
- package/dist/curve/quadratic2d.mjs +74 -0
- package/dist/interval.d.mts +58 -0
- package/dist/interval.d.ts +58 -0
- package/dist/interval.mjs +88 -0
- package/dist/matrix/matrix2x2.d.mts +49 -0
- package/dist/matrix/matrix2x2.d.ts +49 -0
- package/dist/matrix/matrix2x2.mjs +23 -0
- package/dist/matrix/matrix3x3.d.mts +63 -0
- package/dist/matrix/matrix3x3.d.ts +63 -0
- package/dist/matrix/matrix3x3.mjs +26 -0
- package/dist/matrix/matrix4x4.d.mts +72 -0
- package/dist/matrix/matrix4x4.d.ts +72 -0
- package/dist/matrix/matrix4x4.mjs +214 -0
- package/dist/path/cubic2d.d.mts +29 -0
- package/dist/path/cubic2d.d.ts +29 -0
- package/dist/path/cubic2d.mjs +60 -0
- package/dist/path/linear2d.d.mts +29 -0
- package/dist/path/linear2d.d.ts +29 -0
- package/dist/path/linear2d.mjs +54 -0
- package/dist/path/quadratic2d.d.mts +29 -0
- package/dist/path/quadratic2d.d.ts +29 -0
- package/dist/path/quadratic2d.mjs +60 -0
- package/dist/polynomial/cubic.d.mts +7 -0
- package/dist/polynomial/cubic.d.ts +7 -0
- package/dist/polynomial/cubic.mjs +139 -0
- package/dist/polynomial/linear.d.mts +7 -0
- package/dist/polynomial/linear.d.ts +7 -0
- package/dist/polynomial/linear.mjs +19 -0
- package/dist/polynomial/quadratic.d.mts +7 -0
- package/dist/polynomial/quadratic.d.ts +7 -0
- package/dist/polynomial/quadratic.mjs +22 -0
- package/dist/shared/curvy.BAW_cKLu.mjs +123 -0
- package/dist/shared/curvy.BN-oFBsc.d.mts +26 -0
- package/dist/shared/curvy.BN-oFBsc.d.ts +26 -0
- package/dist/shared/curvy.Bxxwly94.d.mts +144 -0
- package/dist/shared/curvy.C-sUk7ux.mjs +119 -0
- package/dist/shared/curvy.CLzGuqek.mjs +124 -0
- package/dist/shared/curvy.CO0Wclt0.d.ts +144 -0
- package/dist/shared/curvy.CT38g_II.d.mts +22 -0
- package/dist/shared/curvy.CT38g_II.d.ts +22 -0
- package/dist/shared/curvy.ChkqgKuv.mjs +119 -0
- package/dist/shared/curvy.Cty3LrOR.mjs +70 -0
- package/dist/shared/curvy.D7bhnwZy.mjs +52 -0
- package/dist/shared/curvy.DOLqYbKE.mjs +48 -0
- package/dist/shared/curvy.DgRsieUW.mjs +76 -0
- package/dist/shared/curvy.DmVFTi0N.mjs +34 -0
- package/dist/splines/bezier2d.d.mts +35 -0
- package/dist/splines/bezier2d.d.ts +35 -0
- package/dist/splines/bezier2d.mjs +122 -0
- package/dist/vector/vector2.d.mts +37 -0
- package/dist/vector/vector2.d.ts +37 -0
- package/dist/vector/vector2.mjs +16 -0
- package/dist/vector/vector3.d.mts +38 -0
- package/dist/vector/vector3.d.ts +38 -0
- package/dist/vector/vector3.mjs +16 -0
- package/dist/vector/vector4.d.mts +39 -0
- package/dist/vector/vector4.d.ts +39 -0
- package/dist/vector/vector4.mjs +16 -0
- package/package.json +81 -38
- package/dist/axis.cjs +0 -325
- package/dist/axis.d.cts +0 -20
- package/dist/axis.d.mts +0 -20
- package/dist/axis.d.ts +0 -20
- package/dist/axis.mjs +0 -314
- package/dist/convert.cjs +0 -74
- package/dist/convert.d.cts +0 -6
- package/dist/convert.d.mts +0 -6
- package/dist/convert.d.ts +0 -6
- package/dist/convert.mjs +0 -68
- package/dist/curve.cjs +0 -194
- package/dist/curve.d.cts +0 -18
- package/dist/curve.d.mts +0 -18
- package/dist/curve.d.ts +0 -18
- package/dist/curve.mjs +0 -184
- package/dist/shared/curvy.262f6070.cjs +0 -16
- package/dist/shared/curvy.9cd8b44c.mjs +0 -13
- package/dist/shared/curvy.df73166c.d.cts +0 -38
- package/dist/shared/curvy.df73166c.d.mts +0 -38
- package/dist/shared/curvy.df73166c.d.ts +0 -38
- package/dist/splines.cjs +0 -150
- package/dist/splines.d.cts +0 -27
- package/dist/splines.d.mts +0 -27
- package/dist/splines.d.ts +0 -27
- package/dist/splines.mjs +0 -138
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
declare class Pipeable {
|
|
2
|
+
pipe<A>(this: A): A;
|
|
3
|
+
pipe<A, B = never>(this: A, ab: (_: A) => B): B;
|
|
4
|
+
pipe<A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C;
|
|
5
|
+
pipe<A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D;
|
|
6
|
+
pipe<A, B = never, C = never, D = never, E = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E): E;
|
|
7
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F): F;
|
|
8
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G): G;
|
|
9
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H): H;
|
|
10
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I): I;
|
|
11
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J): J;
|
|
12
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K): K;
|
|
13
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L): L;
|
|
14
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M): M;
|
|
15
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N): N;
|
|
16
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O): O;
|
|
17
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P): P;
|
|
18
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q): Q;
|
|
19
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R): R;
|
|
20
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S): S;
|
|
21
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never, T = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T): T;
|
|
22
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never, T = never, U = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T, tu: (_: T) => U): U;
|
|
23
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never, T = never, U = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T, tu: (_: T) => U): U;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { Pipeable as P };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
declare class Pipeable {
|
|
2
|
+
pipe<A>(this: A): A;
|
|
3
|
+
pipe<A, B = never>(this: A, ab: (_: A) => B): B;
|
|
4
|
+
pipe<A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C;
|
|
5
|
+
pipe<A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D;
|
|
6
|
+
pipe<A, B = never, C = never, D = never, E = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E): E;
|
|
7
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F): F;
|
|
8
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G): G;
|
|
9
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H): H;
|
|
10
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I): I;
|
|
11
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J): J;
|
|
12
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K): K;
|
|
13
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L): L;
|
|
14
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M): M;
|
|
15
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N): N;
|
|
16
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O): O;
|
|
17
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P): P;
|
|
18
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q): Q;
|
|
19
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R): R;
|
|
20
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S): S;
|
|
21
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never, T = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T): T;
|
|
22
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never, T = never, U = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T, tu: (_: T) => U): U;
|
|
23
|
+
pipe<A, B = never, C = never, D = never, E = never, F = never, G = never, H = never, I = never, J = never, K = never, L = never, M = never, N = never, O = never, P = never, Q = never, R = never, S = never, T = never, U = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T, tu: (_: T) => U): U;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { Pipeable as P };
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { P as Pipeable } from './curvy.BN-oFBsc.mjs';
|
|
2
|
+
import { Interval } from '../interval.mjs';
|
|
3
|
+
import { Vector2 } from '../vector/vector2.mjs';
|
|
4
|
+
import { Vector3 } from '../vector/vector3.mjs';
|
|
5
|
+
import { Vector4 } from '../vector/vector4.mjs';
|
|
6
|
+
|
|
7
|
+
declare const CubicPolynomialTypeId: unique symbol;
|
|
8
|
+
type CubicPolynomialTypeId = typeof CubicPolynomialTypeId;
|
|
9
|
+
|
|
10
|
+
type Monotonicity = 'none' | 'increasing' | 'decreasing' | 'constant';
|
|
11
|
+
type GuaranteedMonotonicity = 'increasing' | 'decreasing' | 'constant';
|
|
12
|
+
|
|
13
|
+
type ZeroOrOneSolution = number | null;
|
|
14
|
+
type ZeroOrOneInterval = Interval | null;
|
|
15
|
+
type ZeroToTwoSolutions = readonly [] | readonly [number] | readonly [number, number];
|
|
16
|
+
type ZeroToThreeSolutions = readonly [] | readonly [number] | readonly [number, number] | readonly [number, number, number];
|
|
17
|
+
|
|
18
|
+
interface CubicPolynomial extends Pipeable {
|
|
19
|
+
readonly [CubicPolynomialTypeId]: CubicPolynomialTypeId;
|
|
20
|
+
readonly c0: number;
|
|
21
|
+
readonly c1: number;
|
|
22
|
+
readonly c2: number;
|
|
23
|
+
readonly c3: number;
|
|
24
|
+
}
|
|
25
|
+
declare const isCubicPolynomial: (value: unknown) => value is CubicPolynomial;
|
|
26
|
+
declare const make$2: (c0: number, c1: number, c2: number, c3: number) => CubicPolynomial;
|
|
27
|
+
declare const fromVector$2: (v: Vector4) => CubicPolynomial;
|
|
28
|
+
declare const solve$2: {
|
|
29
|
+
(p: CubicPolynomial, x: number): number;
|
|
30
|
+
(x: number): (p: CubicPolynomial) => number;
|
|
31
|
+
};
|
|
32
|
+
declare const toSolver$2: (p: CubicPolynomial) => (x: number) => number;
|
|
33
|
+
declare const solveInverse$2: {
|
|
34
|
+
(p: CubicPolynomial, y: number): ZeroToThreeSolutions;
|
|
35
|
+
(y: number): (p: CubicPolynomial) => ZeroToThreeSolutions;
|
|
36
|
+
};
|
|
37
|
+
declare const toInverseSolver$2: (p: CubicPolynomial) => (y: number) => ZeroToThreeSolutions;
|
|
38
|
+
declare const derivative$1: (p: CubicPolynomial) => QuadraticPolynomial;
|
|
39
|
+
declare const roots$1: (p: CubicPolynomial) => ZeroToThreeSolutions;
|
|
40
|
+
declare const extrema: (p: CubicPolynomial) => ZeroToTwoSolutions;
|
|
41
|
+
declare const monotonicity$2: {
|
|
42
|
+
(p: CubicPolynomial, i?: Interval): Monotonicity;
|
|
43
|
+
(i: Interval): (p: CubicPolynomial) => Monotonicity;
|
|
44
|
+
};
|
|
45
|
+
declare const domain$2: {
|
|
46
|
+
(p: CubicPolynomial, range: Interval): Interval;
|
|
47
|
+
(range: Interval): (p: CubicPolynomial) => Interval;
|
|
48
|
+
};
|
|
49
|
+
declare const range$2: {
|
|
50
|
+
(p: CubicPolynomial, domain: Interval): Interval;
|
|
51
|
+
(domain: Interval): (p: CubicPolynomial) => Interval;
|
|
52
|
+
};
|
|
53
|
+
declare const length$2: {
|
|
54
|
+
(p: CubicPolynomial, domain: Interval): number;
|
|
55
|
+
(domain: Interval): (p: CubicPolynomial) => number;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
declare const QuadraticPolynomialTypeId: unique symbol;
|
|
59
|
+
type QuadraticPolynomialTypeId = typeof QuadraticPolynomialTypeId;
|
|
60
|
+
|
|
61
|
+
interface QuadraticPolynomial extends Pipeable {
|
|
62
|
+
readonly [QuadraticPolynomialTypeId]: QuadraticPolynomialTypeId;
|
|
63
|
+
readonly c0: number;
|
|
64
|
+
readonly c1: number;
|
|
65
|
+
readonly c2: number;
|
|
66
|
+
}
|
|
67
|
+
declare const isQuadraticPolynomial: (v: unknown) => v is QuadraticPolynomial;
|
|
68
|
+
declare const make$1: (c0?: number, c1?: number, c2?: number) => QuadraticPolynomial;
|
|
69
|
+
declare const fromVector$1: (v: Vector3) => QuadraticPolynomial;
|
|
70
|
+
declare const solve$1: {
|
|
71
|
+
(p: QuadraticPolynomial, x: number): number;
|
|
72
|
+
(x: number): (p: QuadraticPolynomial) => number;
|
|
73
|
+
};
|
|
74
|
+
declare const toSolver$1: (p: QuadraticPolynomial) => (x: number) => number;
|
|
75
|
+
declare const solveInverse$1: {
|
|
76
|
+
(p: QuadraticPolynomial, y: number): ZeroToTwoSolutions;
|
|
77
|
+
(y: number): (p: QuadraticPolynomial) => ZeroToTwoSolutions;
|
|
78
|
+
};
|
|
79
|
+
declare const toInverseSolver$1: (p: QuadraticPolynomial) => (y: number) => ZeroToTwoSolutions;
|
|
80
|
+
declare const derivative: (p: QuadraticPolynomial) => LinearPolynomial;
|
|
81
|
+
declare const roots: (p: QuadraticPolynomial) => ZeroToTwoSolutions;
|
|
82
|
+
declare const extreme: (p: QuadraticPolynomial) => ZeroOrOneSolution;
|
|
83
|
+
declare const monotonicity$1: {
|
|
84
|
+
(p: QuadraticPolynomial, i?: Interval): Monotonicity;
|
|
85
|
+
(i: Interval): (p: QuadraticPolynomial) => Monotonicity;
|
|
86
|
+
};
|
|
87
|
+
declare const antiderivative$1: {
|
|
88
|
+
(p: QuadraticPolynomial, constant?: number): CubicPolynomial;
|
|
89
|
+
(constant: number): (p: QuadraticPolynomial) => CubicPolynomial;
|
|
90
|
+
};
|
|
91
|
+
declare const domain$1: {
|
|
92
|
+
(p: QuadraticPolynomial, range: Interval): Interval | null;
|
|
93
|
+
(range: Interval): (p: QuadraticPolynomial) => Interval | null;
|
|
94
|
+
};
|
|
95
|
+
declare const range$1: {
|
|
96
|
+
(p: QuadraticPolynomial, domain: Interval): Interval;
|
|
97
|
+
(domain: Interval): (p: QuadraticPolynomial) => Interval;
|
|
98
|
+
};
|
|
99
|
+
declare const length$1: {
|
|
100
|
+
(p: QuadraticPolynomial, i: Interval): number;
|
|
101
|
+
(i: Interval): (p: QuadraticPolynomial) => number;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
declare const LinearPolynomialTypeId: unique symbol;
|
|
105
|
+
type LinearPolynomialTypeId = typeof LinearPolynomialTypeId;
|
|
106
|
+
|
|
107
|
+
interface LinearPolynomial extends Pipeable {
|
|
108
|
+
readonly [LinearPolynomialTypeId]: LinearPolynomialTypeId;
|
|
109
|
+
readonly c0: number;
|
|
110
|
+
readonly c1: number;
|
|
111
|
+
}
|
|
112
|
+
declare const isLinearPolynomial: (v: unknown) => v is LinearPolynomial;
|
|
113
|
+
declare const make: (c0?: number, c1?: number) => LinearPolynomial;
|
|
114
|
+
declare const fromVector: (v: Vector2) => LinearPolynomial;
|
|
115
|
+
declare const solve: {
|
|
116
|
+
(p: LinearPolynomial, x: number): number;
|
|
117
|
+
(x: number): (p: LinearPolynomial) => number;
|
|
118
|
+
};
|
|
119
|
+
declare const toSolver: (p: LinearPolynomial) => (x: number) => number;
|
|
120
|
+
declare const solveInverse: {
|
|
121
|
+
(p: LinearPolynomial, y: number): ZeroOrOneSolution;
|
|
122
|
+
(y: number): (p: LinearPolynomial) => ZeroOrOneSolution;
|
|
123
|
+
};
|
|
124
|
+
declare const toInverseSolver: (p: LinearPolynomial) => (y: number) => ZeroOrOneSolution;
|
|
125
|
+
declare const root: (p: LinearPolynomial) => ZeroOrOneSolution;
|
|
126
|
+
declare const monotonicity: (p: LinearPolynomial) => GuaranteedMonotonicity;
|
|
127
|
+
declare const antiderivative: {
|
|
128
|
+
(p: LinearPolynomial, constant?: number): QuadraticPolynomial;
|
|
129
|
+
(constant: number): (p: LinearPolynomial) => QuadraticPolynomial;
|
|
130
|
+
};
|
|
131
|
+
declare const domain: {
|
|
132
|
+
(p: LinearPolynomial, range: Interval): ZeroOrOneInterval;
|
|
133
|
+
(range: Interval): (p: LinearPolynomial) => ZeroOrOneInterval;
|
|
134
|
+
};
|
|
135
|
+
declare const range: {
|
|
136
|
+
(p: LinearPolynomial, domain: Interval): Interval;
|
|
137
|
+
(domain: Interval): (p: LinearPolynomial) => Interval;
|
|
138
|
+
};
|
|
139
|
+
declare const length: {
|
|
140
|
+
(p: LinearPolynomial, domain: Interval): number;
|
|
141
|
+
(domain: Interval): (p: LinearPolynomial) => number;
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
export { domain$1 as A, range$1 as B, type CubicPolynomial as C, length$1 as D, isLinearPolynomial as E, make as F, fromVector as G, solve as H, toSolver as I, solveInverse as J, toInverseSolver as K, type LinearPolynomial as L, root as M, monotonicity as N, antiderivative as O, domain as P, type QuadraticPolynomial as Q, range as R, length as S, solveInverse$2 as a, toInverseSolver$2 as b, monotonicity$2 as c, derivative$1 as d, extrema as e, fromVector$2 as f, domain$2 as g, range$2 as h, isCubicPolynomial as i, isQuadraticPolynomial as j, make$1 as k, length$2 as l, make$2 as m, fromVector$1 as n, solve$1 as o, toSolver$1 as p, solveInverse$1 as q, roots$1 as r, solve$2 as s, toSolver$2 as t, toInverseSolver$1 as u, derivative as v, roots as w, extreme as x, monotonicity$1 as y, antiderivative$1 as z };
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { i as invariant, d as dual, r as round, P as Pipeable } from './curvy.ChkqgKuv.mjs';
|
|
2
|
+
import { m as make$1, d as dot } from './curvy.DOLqYbKE.mjs';
|
|
3
|
+
|
|
4
|
+
function toIndex(input) {
|
|
5
|
+
if (typeof input === "number") {
|
|
6
|
+
invariant(input >= 0 && input <= 3, "Index out of bounds");
|
|
7
|
+
return input;
|
|
8
|
+
}
|
|
9
|
+
if (input === "x") {
|
|
10
|
+
return 0;
|
|
11
|
+
}
|
|
12
|
+
if (input === "y") {
|
|
13
|
+
return 1;
|
|
14
|
+
}
|
|
15
|
+
if (input === "z") {
|
|
16
|
+
return 2;
|
|
17
|
+
}
|
|
18
|
+
if (input === "w") {
|
|
19
|
+
return 3;
|
|
20
|
+
}
|
|
21
|
+
invariant(false, "Invalid component");
|
|
22
|
+
}
|
|
23
|
+
const toTwoDimensionalIndex = toIndex;
|
|
24
|
+
const toThreeDimensionalIndex = toIndex;
|
|
25
|
+
const toFourDimensionalIndex = toIndex;
|
|
26
|
+
|
|
27
|
+
const Matrix2x2TypeId = Symbol.for("curvy/matrix2x2");
|
|
28
|
+
class Matrix2x2Impl extends Pipeable {
|
|
29
|
+
[Matrix2x2TypeId] = Matrix2x2TypeId;
|
|
30
|
+
m00;
|
|
31
|
+
m01;
|
|
32
|
+
m10;
|
|
33
|
+
m11;
|
|
34
|
+
constructor(m00 = 0, m01 = 0, m10 = 0, m11 = 0) {
|
|
35
|
+
super();
|
|
36
|
+
this.m00 = round(m00);
|
|
37
|
+
this.m01 = round(m01);
|
|
38
|
+
this.m10 = round(m10);
|
|
39
|
+
this.m11 = round(m11);
|
|
40
|
+
}
|
|
41
|
+
get [Symbol.toStringTag]() {
|
|
42
|
+
return `Matrix2x2(${this.m00}, ${this.m01}, ${this.m10}, ${this.m11})`;
|
|
43
|
+
}
|
|
44
|
+
get [Symbol.for("nodejs.util.inspect.custom")]() {
|
|
45
|
+
return `Matrix2x2(${this.m00}, ${this.m01}, ${this.m10}, ${this.m11})`;
|
|
46
|
+
}
|
|
47
|
+
[Symbol.hasInstance](m) {
|
|
48
|
+
return isMatrix2x2(m);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const isMatrix2x2 = (m) => typeof m === "object" && m !== null && Matrix2x2TypeId in m;
|
|
52
|
+
const make = (m00 = 0, m01 = m00, m10 = m01, m11 = m10) => new Matrix2x2Impl(m00, m01, m10, m11);
|
|
53
|
+
const fromRows = (v0, v1) => new Matrix2x2Impl(v0.x, v0.y, v1.x, v1.y);
|
|
54
|
+
const fromColumns = (v0, v1) => new Matrix2x2Impl(v0.x, v1.x, v0.y, v1.y);
|
|
55
|
+
const setRow = dual(
|
|
56
|
+
3,
|
|
57
|
+
(m, row, v) => fromRows(
|
|
58
|
+
...toRows(m).with(toTwoDimensionalIndex(row), v)
|
|
59
|
+
)
|
|
60
|
+
);
|
|
61
|
+
const setColumn = dual(
|
|
62
|
+
3,
|
|
63
|
+
(m, column, v) => fromColumns(
|
|
64
|
+
...toColumns(m).with(toTwoDimensionalIndex(column), v)
|
|
65
|
+
)
|
|
66
|
+
);
|
|
67
|
+
const determinant = (m) => round(m.m00 * m.m11 - m.m01 * m.m10);
|
|
68
|
+
const vectorProductLeft = dual(
|
|
69
|
+
2,
|
|
70
|
+
(m, v) => make$1(
|
|
71
|
+
dot(rowVector(m, 0), v),
|
|
72
|
+
dot(rowVector(m, 1), v)
|
|
73
|
+
)
|
|
74
|
+
);
|
|
75
|
+
const vectorProductRight = dual(
|
|
76
|
+
2,
|
|
77
|
+
(m, v) => make$1(
|
|
78
|
+
dot(columnVector(m, 0), v),
|
|
79
|
+
dot(columnVector(m, 1), v)
|
|
80
|
+
)
|
|
81
|
+
);
|
|
82
|
+
const solveSystem = dual(2, (m, v) => {
|
|
83
|
+
const inverseDeterminant = 1 / determinant(m);
|
|
84
|
+
invariant(
|
|
85
|
+
Number.isFinite(inverseDeterminant),
|
|
86
|
+
"cannot solve system when coefficient matrix determinant is zero"
|
|
87
|
+
);
|
|
88
|
+
return make$1(
|
|
89
|
+
determinant(setColumn(m, 0, v)) * inverseDeterminant,
|
|
90
|
+
determinant(setColumn(m, 1, v)) * inverseDeterminant
|
|
91
|
+
);
|
|
92
|
+
});
|
|
93
|
+
const toRows = (m) => [
|
|
94
|
+
make$1(m.m00, m.m01),
|
|
95
|
+
make$1(m.m10, m.m11)
|
|
96
|
+
];
|
|
97
|
+
const toColumns = (m) => [
|
|
98
|
+
make$1(m.m00, m.m10),
|
|
99
|
+
make$1(m.m01, m.m11)
|
|
100
|
+
];
|
|
101
|
+
const rowVector = dual(
|
|
102
|
+
2,
|
|
103
|
+
(m, row) => toRows(m)[toTwoDimensionalIndex(row)]
|
|
104
|
+
);
|
|
105
|
+
const columnVector = dual(
|
|
106
|
+
2,
|
|
107
|
+
(m, column) => toColumns(m)[toTwoDimensionalIndex(column)]
|
|
108
|
+
);
|
|
109
|
+
const transpose = (m) => fromColumns(...toRows(m));
|
|
110
|
+
const reverseRows = (m) => {
|
|
111
|
+
const [r0, r1] = toRows(m);
|
|
112
|
+
return fromRows(r1, r0);
|
|
113
|
+
};
|
|
114
|
+
const reverseColumns = (m) => {
|
|
115
|
+
const [c0, c1] = toColumns(m);
|
|
116
|
+
return fromColumns(c1, c0);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export { fromColumns as a, setColumn as b, vectorProductRight as c, determinant as d, solveSystem as e, fromRows as f, toColumns as g, columnVector as h, isMatrix2x2 as i, transpose as j, reverseRows as k, reverseColumns as l, make as m, toFourDimensionalIndex as n, toThreeDimensionalIndex as o, rowVector as r, setRow as s, toRows as t, vectorProductLeft as v };
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { P as Pipeable, r as round, d as dual } from './curvy.ChkqgKuv.mjs';
|
|
2
|
+
import { size, contains, fromMinMax } from '../interval.mjs';
|
|
3
|
+
import { Q as QuadraticPolynomialImpl, b as QuadraticPolynomialTypeId, a as make$1, s as solveInverse$1, m as monotonicity$1, r as range$1, l as length$1, c as solve$1 } from './curvy.DgRsieUW.mjs';
|
|
4
|
+
|
|
5
|
+
const CubicPolynomialTypeId = Symbol.for(
|
|
6
|
+
"curvy/polynomial/cubic"
|
|
7
|
+
);
|
|
8
|
+
class CubicPolynomialImpl extends Pipeable {
|
|
9
|
+
[CubicPolynomialTypeId] = CubicPolynomialTypeId;
|
|
10
|
+
c0;
|
|
11
|
+
c1;
|
|
12
|
+
c2;
|
|
13
|
+
c3;
|
|
14
|
+
constructor(c0 = 0, c1 = 0, c2 = 0, c3 = 0) {
|
|
15
|
+
super();
|
|
16
|
+
this.c0 = round(c0);
|
|
17
|
+
this.c1 = round(c1);
|
|
18
|
+
this.c2 = round(c2);
|
|
19
|
+
this.c3 = round(c3);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function guaranteedMonotonicityFromComparison(s0, s1) {
|
|
24
|
+
if (s0 < s1) {
|
|
25
|
+
return "increasing";
|
|
26
|
+
}
|
|
27
|
+
if (s0 > s1) {
|
|
28
|
+
return "decreasing";
|
|
29
|
+
}
|
|
30
|
+
return "constant";
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const make = (c0 = 0, c1 = 0, c2 = 0) => new QuadraticPolynomialImpl(c0, c1, c2);
|
|
34
|
+
const isQuadraticPolynomial = (v) => typeof v === "object" && v !== null && QuadraticPolynomialTypeId in v;
|
|
35
|
+
const fromVector = (v) => new QuadraticPolynomialImpl(v.x, v.y, v.z);
|
|
36
|
+
const solve = dual(
|
|
37
|
+
2,
|
|
38
|
+
(p, x) => round(p.c0 + x * p.c1 + x ** 2 * p.c2)
|
|
39
|
+
);
|
|
40
|
+
const toSolver = (p) => (x) => solve(p, x);
|
|
41
|
+
const solveInverse = dual(2, (p, y) => {
|
|
42
|
+
const discriminant = p.c1 ** 2 - 4 * p.c2 * (p.c0 - y);
|
|
43
|
+
if (discriminant < 0) {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
if (discriminant === 0) {
|
|
47
|
+
return [round(-p.c1 / (2 * p.c2))];
|
|
48
|
+
}
|
|
49
|
+
const sqrtDiscriminant = Math.sqrt(discriminant);
|
|
50
|
+
return [
|
|
51
|
+
round((-p.c1 + sqrtDiscriminant) / (2 * p.c2)),
|
|
52
|
+
round((-p.c1 - sqrtDiscriminant) / (2 * p.c2))
|
|
53
|
+
].toSorted((a, b) => a - b);
|
|
54
|
+
});
|
|
55
|
+
const toInverseSolver = (p) => (y) => solveInverse(p, y);
|
|
56
|
+
const derivative = (p) => make$1(p.c1, p.c2 * 2);
|
|
57
|
+
const roots = (p) => solveInverse(p, 0);
|
|
58
|
+
const extreme = (p) => derivative(p).pipe(solveInverse$1(0)) ?? (p.c2 === 0 ? null : 0);
|
|
59
|
+
const monotonicity = dual(
|
|
60
|
+
(args) => isQuadraticPolynomial(args[0]),
|
|
61
|
+
(p, i) => {
|
|
62
|
+
if (p.c2 === 0 && p.c1 === 0) {
|
|
63
|
+
return "constant";
|
|
64
|
+
}
|
|
65
|
+
if (p.c2 === 0) {
|
|
66
|
+
return monotonicity$1(make$1(p.c0, p.c1));
|
|
67
|
+
}
|
|
68
|
+
const e = extreme(p);
|
|
69
|
+
if (i && size(i) === 0) {
|
|
70
|
+
return "constant";
|
|
71
|
+
}
|
|
72
|
+
if (i === void 0 || contains(i, e, { includeStart: false, includeEnd: false })) {
|
|
73
|
+
return "none";
|
|
74
|
+
}
|
|
75
|
+
return guaranteedMonotonicityFromComparison(
|
|
76
|
+
solve(p, i.start),
|
|
77
|
+
solve(p, i.end)
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
const antiderivative = dual(
|
|
82
|
+
2,
|
|
83
|
+
(p, integrationConstant = 0) => new CubicPolynomialImpl(integrationConstant, p.c0, p.c1 / 2, p.c2 / 3)
|
|
84
|
+
);
|
|
85
|
+
const domain = dual(2, (p, range2) => {
|
|
86
|
+
const start = solveInverse(p, range2.start);
|
|
87
|
+
const end = solveInverse(p, range2.end);
|
|
88
|
+
if (start.length === 0 && end.length === 0) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
return fromMinMax(
|
|
92
|
+
...solveInverse(p, range2.start),
|
|
93
|
+
...solveInverse(p, range2.end)
|
|
94
|
+
);
|
|
95
|
+
});
|
|
96
|
+
const range = dual(2, (p, domain2) => {
|
|
97
|
+
if (p.c2 === 0) {
|
|
98
|
+
return range$1(make$1(p.c0, p.c1), domain2);
|
|
99
|
+
}
|
|
100
|
+
const e = extreme(p);
|
|
101
|
+
return e !== null && contains(domain2, e) ? fromMinMax(
|
|
102
|
+
solve(p, domain2.start),
|
|
103
|
+
solve(p, domain2.end),
|
|
104
|
+
solve(p, e)
|
|
105
|
+
) : fromMinMax(solve(p, domain2.start), solve(p, domain2.end));
|
|
106
|
+
});
|
|
107
|
+
const length = dual(2, (p, domain2) => {
|
|
108
|
+
if (size(domain2) === 0) {
|
|
109
|
+
return 0;
|
|
110
|
+
}
|
|
111
|
+
if (p.c2 === 0) {
|
|
112
|
+
return length$1(make$1(p.c0, p.c1), domain2);
|
|
113
|
+
}
|
|
114
|
+
const d = derivative(p);
|
|
115
|
+
const derivativeStart = solve$1(d, domain2.start);
|
|
116
|
+
const sqrtStart = Math.sqrt(1 + derivativeStart ** 2);
|
|
117
|
+
const evalStart = (derivativeStart * sqrtStart + Math.log(Math.abs(derivativeStart + sqrtStart))) / (4 * p.c2);
|
|
118
|
+
const derivativeEnd = solve$1(d, domain2.end);
|
|
119
|
+
const sqrtEnd = Math.sqrt(1 + derivativeEnd ** 2);
|
|
120
|
+
const evalEnd = (derivativeEnd * sqrtEnd + Math.log(Math.abs(derivativeEnd + sqrtEnd))) / (4 * p.c2);
|
|
121
|
+
return round(evalEnd - evalStart);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
export { CubicPolynomialImpl as C, CubicPolynomialTypeId as a, monotonicity as b, solve as c, toInverseSolver as d, derivative as e, fromVector as f, guaranteedMonotonicityFromComparison as g, extreme as h, isQuadraticPolynomial as i, antiderivative as j, domain as k, length as l, make as m, range as n, roots as r, solveInverse as s, toSolver as t };
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { P as Pipeable } from './curvy.BN-oFBsc.js';
|
|
2
|
+
import { Interval } from '../interval.js';
|
|
3
|
+
import { Vector2 } from '../vector/vector2.js';
|
|
4
|
+
import { Vector3 } from '../vector/vector3.js';
|
|
5
|
+
import { Vector4 } from '../vector/vector4.js';
|
|
6
|
+
|
|
7
|
+
declare const CubicPolynomialTypeId: unique symbol;
|
|
8
|
+
type CubicPolynomialTypeId = typeof CubicPolynomialTypeId;
|
|
9
|
+
|
|
10
|
+
type Monotonicity = 'none' | 'increasing' | 'decreasing' | 'constant';
|
|
11
|
+
type GuaranteedMonotonicity = 'increasing' | 'decreasing' | 'constant';
|
|
12
|
+
|
|
13
|
+
type ZeroOrOneSolution = number | null;
|
|
14
|
+
type ZeroOrOneInterval = Interval | null;
|
|
15
|
+
type ZeroToTwoSolutions = readonly [] | readonly [number] | readonly [number, number];
|
|
16
|
+
type ZeroToThreeSolutions = readonly [] | readonly [number] | readonly [number, number] | readonly [number, number, number];
|
|
17
|
+
|
|
18
|
+
interface CubicPolynomial extends Pipeable {
|
|
19
|
+
readonly [CubicPolynomialTypeId]: CubicPolynomialTypeId;
|
|
20
|
+
readonly c0: number;
|
|
21
|
+
readonly c1: number;
|
|
22
|
+
readonly c2: number;
|
|
23
|
+
readonly c3: number;
|
|
24
|
+
}
|
|
25
|
+
declare const isCubicPolynomial: (value: unknown) => value is CubicPolynomial;
|
|
26
|
+
declare const make$2: (c0: number, c1: number, c2: number, c3: number) => CubicPolynomial;
|
|
27
|
+
declare const fromVector$2: (v: Vector4) => CubicPolynomial;
|
|
28
|
+
declare const solve$2: {
|
|
29
|
+
(p: CubicPolynomial, x: number): number;
|
|
30
|
+
(x: number): (p: CubicPolynomial) => number;
|
|
31
|
+
};
|
|
32
|
+
declare const toSolver$2: (p: CubicPolynomial) => (x: number) => number;
|
|
33
|
+
declare const solveInverse$2: {
|
|
34
|
+
(p: CubicPolynomial, y: number): ZeroToThreeSolutions;
|
|
35
|
+
(y: number): (p: CubicPolynomial) => ZeroToThreeSolutions;
|
|
36
|
+
};
|
|
37
|
+
declare const toInverseSolver$2: (p: CubicPolynomial) => (y: number) => ZeroToThreeSolutions;
|
|
38
|
+
declare const derivative$1: (p: CubicPolynomial) => QuadraticPolynomial;
|
|
39
|
+
declare const roots$1: (p: CubicPolynomial) => ZeroToThreeSolutions;
|
|
40
|
+
declare const extrema: (p: CubicPolynomial) => ZeroToTwoSolutions;
|
|
41
|
+
declare const monotonicity$2: {
|
|
42
|
+
(p: CubicPolynomial, i?: Interval): Monotonicity;
|
|
43
|
+
(i: Interval): (p: CubicPolynomial) => Monotonicity;
|
|
44
|
+
};
|
|
45
|
+
declare const domain$2: {
|
|
46
|
+
(p: CubicPolynomial, range: Interval): Interval;
|
|
47
|
+
(range: Interval): (p: CubicPolynomial) => Interval;
|
|
48
|
+
};
|
|
49
|
+
declare const range$2: {
|
|
50
|
+
(p: CubicPolynomial, domain: Interval): Interval;
|
|
51
|
+
(domain: Interval): (p: CubicPolynomial) => Interval;
|
|
52
|
+
};
|
|
53
|
+
declare const length$2: {
|
|
54
|
+
(p: CubicPolynomial, domain: Interval): number;
|
|
55
|
+
(domain: Interval): (p: CubicPolynomial) => number;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
declare const QuadraticPolynomialTypeId: unique symbol;
|
|
59
|
+
type QuadraticPolynomialTypeId = typeof QuadraticPolynomialTypeId;
|
|
60
|
+
|
|
61
|
+
interface QuadraticPolynomial extends Pipeable {
|
|
62
|
+
readonly [QuadraticPolynomialTypeId]: QuadraticPolynomialTypeId;
|
|
63
|
+
readonly c0: number;
|
|
64
|
+
readonly c1: number;
|
|
65
|
+
readonly c2: number;
|
|
66
|
+
}
|
|
67
|
+
declare const isQuadraticPolynomial: (v: unknown) => v is QuadraticPolynomial;
|
|
68
|
+
declare const make$1: (c0?: number, c1?: number, c2?: number) => QuadraticPolynomial;
|
|
69
|
+
declare const fromVector$1: (v: Vector3) => QuadraticPolynomial;
|
|
70
|
+
declare const solve$1: {
|
|
71
|
+
(p: QuadraticPolynomial, x: number): number;
|
|
72
|
+
(x: number): (p: QuadraticPolynomial) => number;
|
|
73
|
+
};
|
|
74
|
+
declare const toSolver$1: (p: QuadraticPolynomial) => (x: number) => number;
|
|
75
|
+
declare const solveInverse$1: {
|
|
76
|
+
(p: QuadraticPolynomial, y: number): ZeroToTwoSolutions;
|
|
77
|
+
(y: number): (p: QuadraticPolynomial) => ZeroToTwoSolutions;
|
|
78
|
+
};
|
|
79
|
+
declare const toInverseSolver$1: (p: QuadraticPolynomial) => (y: number) => ZeroToTwoSolutions;
|
|
80
|
+
declare const derivative: (p: QuadraticPolynomial) => LinearPolynomial;
|
|
81
|
+
declare const roots: (p: QuadraticPolynomial) => ZeroToTwoSolutions;
|
|
82
|
+
declare const extreme: (p: QuadraticPolynomial) => ZeroOrOneSolution;
|
|
83
|
+
declare const monotonicity$1: {
|
|
84
|
+
(p: QuadraticPolynomial, i?: Interval): Monotonicity;
|
|
85
|
+
(i: Interval): (p: QuadraticPolynomial) => Monotonicity;
|
|
86
|
+
};
|
|
87
|
+
declare const antiderivative$1: {
|
|
88
|
+
(p: QuadraticPolynomial, constant?: number): CubicPolynomial;
|
|
89
|
+
(constant: number): (p: QuadraticPolynomial) => CubicPolynomial;
|
|
90
|
+
};
|
|
91
|
+
declare const domain$1: {
|
|
92
|
+
(p: QuadraticPolynomial, range: Interval): Interval | null;
|
|
93
|
+
(range: Interval): (p: QuadraticPolynomial) => Interval | null;
|
|
94
|
+
};
|
|
95
|
+
declare const range$1: {
|
|
96
|
+
(p: QuadraticPolynomial, domain: Interval): Interval;
|
|
97
|
+
(domain: Interval): (p: QuadraticPolynomial) => Interval;
|
|
98
|
+
};
|
|
99
|
+
declare const length$1: {
|
|
100
|
+
(p: QuadraticPolynomial, i: Interval): number;
|
|
101
|
+
(i: Interval): (p: QuadraticPolynomial) => number;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
declare const LinearPolynomialTypeId: unique symbol;
|
|
105
|
+
type LinearPolynomialTypeId = typeof LinearPolynomialTypeId;
|
|
106
|
+
|
|
107
|
+
interface LinearPolynomial extends Pipeable {
|
|
108
|
+
readonly [LinearPolynomialTypeId]: LinearPolynomialTypeId;
|
|
109
|
+
readonly c0: number;
|
|
110
|
+
readonly c1: number;
|
|
111
|
+
}
|
|
112
|
+
declare const isLinearPolynomial: (v: unknown) => v is LinearPolynomial;
|
|
113
|
+
declare const make: (c0?: number, c1?: number) => LinearPolynomial;
|
|
114
|
+
declare const fromVector: (v: Vector2) => LinearPolynomial;
|
|
115
|
+
declare const solve: {
|
|
116
|
+
(p: LinearPolynomial, x: number): number;
|
|
117
|
+
(x: number): (p: LinearPolynomial) => number;
|
|
118
|
+
};
|
|
119
|
+
declare const toSolver: (p: LinearPolynomial) => (x: number) => number;
|
|
120
|
+
declare const solveInverse: {
|
|
121
|
+
(p: LinearPolynomial, y: number): ZeroOrOneSolution;
|
|
122
|
+
(y: number): (p: LinearPolynomial) => ZeroOrOneSolution;
|
|
123
|
+
};
|
|
124
|
+
declare const toInverseSolver: (p: LinearPolynomial) => (y: number) => ZeroOrOneSolution;
|
|
125
|
+
declare const root: (p: LinearPolynomial) => ZeroOrOneSolution;
|
|
126
|
+
declare const monotonicity: (p: LinearPolynomial) => GuaranteedMonotonicity;
|
|
127
|
+
declare const antiderivative: {
|
|
128
|
+
(p: LinearPolynomial, constant?: number): QuadraticPolynomial;
|
|
129
|
+
(constant: number): (p: LinearPolynomial) => QuadraticPolynomial;
|
|
130
|
+
};
|
|
131
|
+
declare const domain: {
|
|
132
|
+
(p: LinearPolynomial, range: Interval): ZeroOrOneInterval;
|
|
133
|
+
(range: Interval): (p: LinearPolynomial) => ZeroOrOneInterval;
|
|
134
|
+
};
|
|
135
|
+
declare const range: {
|
|
136
|
+
(p: LinearPolynomial, domain: Interval): Interval;
|
|
137
|
+
(domain: Interval): (p: LinearPolynomial) => Interval;
|
|
138
|
+
};
|
|
139
|
+
declare const length: {
|
|
140
|
+
(p: LinearPolynomial, domain: Interval): number;
|
|
141
|
+
(domain: Interval): (p: LinearPolynomial) => number;
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
export { domain$1 as A, range$1 as B, type CubicPolynomial as C, length$1 as D, isLinearPolynomial as E, make as F, fromVector as G, solve as H, toSolver as I, solveInverse as J, toInverseSolver as K, type LinearPolynomial as L, root as M, monotonicity as N, antiderivative as O, domain as P, type QuadraticPolynomial as Q, range as R, length as S, solveInverse$2 as a, toInverseSolver$2 as b, monotonicity$2 as c, derivative$1 as d, extrema as e, fromVector$2 as f, domain$2 as g, range$2 as h, isCubicPolynomial as i, isQuadraticPolynomial as j, make$1 as k, length$2 as l, make$2 as m, fromVector$1 as n, solve$1 as o, toSolver$1 as p, solveInverse$1 as q, roots$1 as r, solve$2 as s, toSolver$2 as t, toInverseSolver$1 as u, derivative as v, roots as w, extreme as x, monotonicity$1 as y, antiderivative$1 as z };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type TwoDimensionalIndex = 0 | 1;
|
|
2
|
+
type TwoDimensionalComponent = 'x' | 'y';
|
|
3
|
+
interface TwoDimensional<T> {
|
|
4
|
+
readonly x: T;
|
|
5
|
+
readonly y: T;
|
|
6
|
+
readonly 0: T;
|
|
7
|
+
readonly 1: T;
|
|
8
|
+
}
|
|
9
|
+
type ThreeDimensionalIndex = TwoDimensionalIndex | 2;
|
|
10
|
+
type ThreeDimensionalComponent = TwoDimensionalComponent | 'z';
|
|
11
|
+
interface ThreeDimensional<T> extends TwoDimensional<T> {
|
|
12
|
+
readonly z: T;
|
|
13
|
+
readonly 2: T;
|
|
14
|
+
}
|
|
15
|
+
type FourDimensionalIndex = ThreeDimensionalIndex | 3;
|
|
16
|
+
type FourDimensionalComponent = ThreeDimensionalComponent | 'w';
|
|
17
|
+
interface FourDimensional<T> extends ThreeDimensional<T> {
|
|
18
|
+
readonly w: T;
|
|
19
|
+
readonly 3: T;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type { FourDimensionalIndex as F, ThreeDimensionalIndex as T, FourDimensionalComponent as a, ThreeDimensionalComponent as b, TwoDimensionalIndex as c, TwoDimensionalComponent as d, TwoDimensional as e, FourDimensional as f, ThreeDimensional as g };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type TwoDimensionalIndex = 0 | 1;
|
|
2
|
+
type TwoDimensionalComponent = 'x' | 'y';
|
|
3
|
+
interface TwoDimensional<T> {
|
|
4
|
+
readonly x: T;
|
|
5
|
+
readonly y: T;
|
|
6
|
+
readonly 0: T;
|
|
7
|
+
readonly 1: T;
|
|
8
|
+
}
|
|
9
|
+
type ThreeDimensionalIndex = TwoDimensionalIndex | 2;
|
|
10
|
+
type ThreeDimensionalComponent = TwoDimensionalComponent | 'z';
|
|
11
|
+
interface ThreeDimensional<T> extends TwoDimensional<T> {
|
|
12
|
+
readonly z: T;
|
|
13
|
+
readonly 2: T;
|
|
14
|
+
}
|
|
15
|
+
type FourDimensionalIndex = ThreeDimensionalIndex | 3;
|
|
16
|
+
type FourDimensionalComponent = ThreeDimensionalComponent | 'w';
|
|
17
|
+
interface FourDimensional<T> extends ThreeDimensional<T> {
|
|
18
|
+
readonly w: T;
|
|
19
|
+
readonly 3: T;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type { FourDimensionalIndex as F, ThreeDimensionalIndex as T, FourDimensionalComponent as a, ThreeDimensionalComponent as b, TwoDimensionalIndex as c, TwoDimensionalComponent as d, TwoDimensional as e, FourDimensional as f, ThreeDimensional as g };
|