116 lines
3.5 KiB
JavaScript
116 lines
3.5 KiB
JavaScript
// Metro module 365 (f366).
|
|
let c379_0 = 0.1;
|
|
let c379_1 = typeof globalThis.Float32Array === "function";
|
|
export default function bezier(a0, a1, a2, a3) {
|
|
let c12280_4;
|
|
let c12280_0 = a0;
|
|
if (a0 >= 0 && a0 <= 1 && a2 >= 0 && a2 <= 1) {
|
|
const r28 = c379_1 ? new Float32Array(11) : new Array(11);
|
|
L11: {
|
|
c12280_4 = r28;
|
|
let r1 = 0;
|
|
if (a0 === a1) {
|
|
r1 = 0;
|
|
if (a2 === a3) {
|
|
break L11;
|
|
}
|
|
}
|
|
do {
|
|
const r4 = r1 * c379_0;
|
|
r28[r1] = (((1 - 3 * a2 + 3 * a0) * r4 + (3 * a2 - 6 * a0)) * r4 + 3 * a0) * r4;
|
|
r1 = r1 + 1;
|
|
} while (r1 < 11);
|
|
}
|
|
return function BezierEasing(a0) {
|
|
let r32, r37;
|
|
L21: {
|
|
if (c12280_0 === a1) {
|
|
r32 = a0;
|
|
if (a2 === a3) {
|
|
break L21;
|
|
}
|
|
}
|
|
let r19 = 0;
|
|
if (a0 !== 0) {
|
|
let r18 = 1;
|
|
if (a0 !== 1) {
|
|
const r22 = c12280_4[1] <= a0;
|
|
let r3 = 1;
|
|
let r9 = 0;
|
|
let r1 = 1;
|
|
let r4 = 0;
|
|
if (r22) {
|
|
do {
|
|
const r11 = r9 + c379_0;
|
|
const r6 = r3 + 1;
|
|
r1 = r6;
|
|
r4 = r11;
|
|
if (r6 === 10) {
|
|
break;
|
|
}
|
|
r37 = c12280_4[r6];
|
|
r3 = r6;
|
|
r9 = r11;
|
|
r1 = r3;
|
|
r4 = r9;
|
|
} while (r37 <= a0);
|
|
}
|
|
const r38 = r1 - 1;
|
|
let r48 = r4 + (a0 - c12280_4[r38]) / (c12280_4[r38 + 1] - c12280_4[r38]) * c379_0;
|
|
const r64 = 3 * (1 - 3 * a2 + 3 * c12280_0) * r48 * r48 + 2 * (3 * a2 - 6 * c12280_0) * r48 + 3 * c12280_0;
|
|
let r67 = 0;
|
|
let r68 = r48;
|
|
if (0.001 <= r64) {
|
|
while (true) {
|
|
const r104 = 3 * (1 - 3 * a2 + 3 * c12280_0) * r68 * r68 + 2 * (3 * a2 - 6 * c12280_0) * r68 + 3 * c12280_0;
|
|
const r105 = r67;
|
|
const r106 = r68;
|
|
let r107 = r106;
|
|
if (r104 !== 0) {
|
|
r68 = r106 - ((((1 - 3 * a2 + 3 * c12280_0) * r106 + (3 * a2 - 6 * c12280_0)) * r106 + 3 * c12280_0) * r106 - a0) / r104;
|
|
r67 = r105 + 1;
|
|
r107 = r68;
|
|
if (r67 < 4) {
|
|
continue;
|
|
}
|
|
}
|
|
r48 = r107;
|
|
break;
|
|
}
|
|
} else if (r64 !== 0) {
|
|
let r0 = r4 + c379_0;
|
|
let r72 = 0;
|
|
do {
|
|
const r8 = r4 + (r0 - r4) / 2;
|
|
const r83 = (((1 - 3 * a2 + 3 * c12280_0) * r8 + (3 * a2 - 6 * c12280_0)) * r8 + 3 * c12280_0) * r8 - a0;
|
|
let r84 = r0;
|
|
const r85 = r4;
|
|
const r86 = r72;
|
|
let r87 = r8;
|
|
if (0 < r83) {
|
|
r84 = r8;
|
|
r87 = r85;
|
|
}
|
|
const r89 = Math.abs(r83);
|
|
r48 = r8;
|
|
if (!(r89 > 1e-7)) {
|
|
break;
|
|
}
|
|
r72 = r86 + 1;
|
|
r0 = r84;
|
|
r4 = r87;
|
|
r48 = r8;
|
|
} while (r72 < 10);
|
|
}
|
|
r18 = (((1 - 3 * a3 + 3 * a1) * r48 + (3 * a3 - 6 * a1)) * r48 + 3 * a1) * r48;
|
|
}
|
|
r19 = r18;
|
|
}
|
|
r32 = r19;
|
|
}
|
|
return r32;
|
|
};
|
|
}
|
|
throw new Error("bezier x values must be in [0, 1] range");
|
|
};
|