Javascript 计数递增加速的二次函数
我正在编写一个jQuery插件,用于在页面加载时快速计算一个值。由于javascript不能像我希望的那样快速运行,所以我想增加增量步骤,使其在给定的时间范围内完成,因此我需要一个二次函数,该函数通过origo,在y=目标计数值和x=目标持续时间处具有转折点,但我无法掌握这样做的数学。因为数字和持续时间都可以改变,所以我需要能够在javascript中计算它Javascript 计数递增加速的二次函数,javascript,jquery,math,quadratic-curve,Javascript,Jquery,Math,Quadratic Curve,我正在编写一个jQuery插件,用于在页面加载时快速计算一个值。由于javascript不能像我希望的那样快速运行,所以我想增加增量步骤,使其在给定的时间范围内完成,因此我需要一个二次函数,该函数通过origo,在y=目标计数值和x=目标持续时间处具有转折点,但我无法掌握这样做的数学。因为数字和持续时间都可以改变,所以我需要能够在javascript中计算它 希望有人能帮我做这个 让我们把这句话形式化一点 我们寻求一个方程的形式 y=a*x*x+b*x+c 其中x是时间轴,y是计数轴。我们知道曲
希望有人能帮我做这个 让我们把这句话形式化一点 我们寻求一个方程的形式
y=a*x*x+b*x+c
其中x是时间轴,y是计数轴。我们知道曲线上的一点是(0,0),另一点是(xf,yf),其中xf是最终时间,yf是目标计数。此外,您希望该方程的导数在(xf,yf)处为零
我有三个方程和三个未知数:
(0,0) => 0 = c
(xf, yf) => yf = a*xf*xf + b*xf + c
y' = 0 @ (xf, yf) => 0 = 2*a*xf + b
你应该可以从那里解决它 最喜欢的问题:PI非常喜欢这个答案,因为它给了我解决问题的数学知识。不幸的是,我只能选择一个正确的答案,Frederik的答案在如何实现它方面也给了我很多帮助,我真的很感激,因为我对javascript还不是很感兴趣。
// 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;
};
};
// 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;
};
};