Estoy tratando de entender cómo se desarrollan las matemáticas a través de este código, easingDoc
function easeInOutQuad (t, b, c, d) { if ((t/=d/2) < 1) return c/2*t*t + b; return -c/2 * ((--t)*(t-2) - 1) + b; } console.log(easeInOutQuad(0.3,50,150,1)); console.log(easeInOutQuad(0.95,50,150,1));
Estoy tratando de descifrar la ecuación para ambas condiciones. Si bien entiendo, la condición para if ((t/=d/2)
de esta publicación describe qué significa t/=d
y cómo afecta el cálculo.
Por ejemplo, (t/=d/2)<1
el código se puede reescribir de la siguiente manera y produciría el mismo resultado. Como,
function easeInOutQuad (t, b, c, d) { if ((t/=d/2) < 1) return c/2*t*t + b; return -c/2 * ((--t)*(t-2) - 1) + b; } function alternate (t,b,c,d){ if (2*t/d < 1) return c/2*(2*t/d)*(2*t/d)+b; return 999999;}; console.log(easeInOutQuad(0.3,50,150,1)); console.log(alternate(0.3,50,150,1)); //(150/2)*(2*0.3/1)*(2*0.3/1)+50 console.log(easeInOutQuad(0.45,50,150,1)); console.log(alternate(0.45,50,150,1));//(150/2)*(2*0.45/1)*(2*0.45/1)+50
Me preguntaba cómo puedo expresar return -c/2 * ((--t)*(t-2) - 1) + b
explícitamente en una ecuación como console.log(alternate(0.3,50,150,1)); //(150/2)*(2*0.3/1)*(2*0.3/1)+50
para que pueda entender cuáles son las matemáticas para esa parte.
Probablemente las siguientes 2 expresiones puedan parecer engañosas, aquí están las alternativas:
c = -1 * c; // -c t = t - 1; // --t
Y un ejemplo para -c/2 * ((--t)*(t-2) - 1) + b;
// -c/2 * ((--t)*(t-2) - 1) + b; function alternate(t, b, c, d) { c = -1 * c; // -c t = t - 1; // --t return (c / 2) * (t * (t - 2) - 1) + b; }; console.log(alternate(0.3, 50, 150, 1)); console.log(((-1 * 150) / 2) * ((0.3 - 1) * ((0.3 - 1) - 2) - 1) + 50);