缓和柜台

时间:2012-06-29 19:39:02

标签: javascript math

我有一个功能可以计算一个页面的访问量,并计算达到某个目标的剩余访问量。 这就像倒计时一样。 有一个“隐藏”的图片,每次有新访问时,都会显示部分图片。

我有简单的JavaScript代码来计算访问次数,有些CSS会根据百分比“揭开”图片。

但是现在我需要让这个“揭幕”慢下来,这意味着当访问越来越接近目标时,应该显示剩余图片的%。

现在这就是我能从脑中走出来的所有东西:

remaining_percentage_to_goal = (current_visits*100)/goal

div_height = (remaining_percentage_to_goal*image_height)/100

我可以试试像:

slow_down_rate = 0.25 
div_height = div_height-(remaining_percentage_to_goal*slow_down_rate)

当然这永远不会达到图像高度的100%所以我发现我可以使用IF语句执行硬编码的固定变量,或者当达到某个百分比时删除slow_down_rate,但这似乎不是正是我们正在寻找的效果。所以我想知道是否有更好或更优雅的方法。

由于

1 个答案:

答案 0 :(得分:1)

听起来你想要像对数方式那样的东西。为了这个答案,让我们假设您的目标是1500次访问(当然,这可以是任何数字)。您知道,对于零访问,您希望显示零百分比,并且对于1500次访问,您希望100%显示,因此您知道图表上的两个点:(0,0)和(1500,1)。要使自然对数与这些参数相符,您必须对其进行平移和缩放,因此您需要:

f(x) = alpha*ln(x+beta)

我们知道ln(1)= 0,所以beta = 1很容易。我们也可以通过插入第二点来轻松找到alpha:

1500 = alpha*ln(1500+1)

alpha = 1500 / ln(1500+1)

现在,如果我们绘制图表,我们得到:

enter image description here

这看起来像我们想要的功能......当它接近目标时自然会减速,但它仍然达到目标。

将其翻译成Javascript,你有:

var goal = 1500;
var alpha = goal / Math.log(goal+1);
var percentVisible = alpha * Math.log(visits+1);

我希望这有帮助!

相关问题