我正在编写一个 jQuery 插件,用于在页面加载时快速计数到一个值。由于 javascript 不能像我想要的那样快速运行更大的数字,我想增加增量步骤,以便它在给定的时间范围内完成,所以我需要一个通过 origo 并具有它的转折点的二次函数在 y = 目标计数值和 x = 目标持续时间,但我无法掌握这样做的数学。由于数字和持续时间都可以改变,我需要能够在 javascript 中计算它。
希望有人可以帮助我解决这个问题!
我正在编写一个 jQuery 插件,用于在页面加载时快速计数到一个值。由于 javascript 不能像我想要的那样快速运行更大的数字,我想增加增量步骤,以便它在给定的时间范围内完成,所以我需要一个通过 origo 并具有它的转折点的二次函数在 y = 目标计数值和 x = 目标持续时间,但我无法掌握这样做的数学。由于数字和持续时间都可以改变,我需要能够在 javascript 中计算它。
希望有人可以帮助我解决这个问题!
让我们将声明形式化一下。
我们寻求形式的方程
y = a*x*x + b*x + c
其中 x 是时间轴,y 是计数轴。我们知道曲线上的一个点是 (0,0),另一个点是 (xf, yf),其中 xf 是最终时间,yf 是目标计数。此外,您希望该方程的导数在 (xf, yf) 处为零。
y' = 2*a*x + b
所以我有三个方程和三个未知数:
(0,0) => 0 = c
(xf, yf) => yf = a*xf*xf + b*xf + c
y' = 0 @ (xf, yf) => 0 = 2*a*xf + b
你应该能够从那里解决它。
// Create a quadratic function that passes through origo and has a given extremum.
// x and y are the coordinates for the extremum.
// Returns a function that takes a number and returns a number.
var quadratic = function (x, y) {
var a = - (y / (x * x));
var b = (2 * y) / x;
return function (x) {
return a * x * x + b * x;
};
};