1

对于所有的数学家,请阅读整个问题,这可以在没有任何 HTML5 知识的情况下回答:-)

我正在缩放(缩放)一个 HTML5 画布,我想用很多小步骤而不是一大步来做到这一点,以使 scrooling 看起来“流畅”。解释一下:

当我的目标是将画布总共缩放 20% 时,当用户转动滚轮时。现在我想把它分成20个小步骤。

我的问题是,由于画布的库受限,我只能使用 2d 上下文的 scale(xscale,yscale) 方法来执行此操作。所以我不能将单位设置为特定的大小,这样会很容易。我必须在每一步都使用一个因素,我不知道如何做到这一点。

所以我的画布的单位在第 1 步中是 100,我希望它们在第 20 步中为 130,中间有 19 个小步。

  1. oldscale:100,:因子:x,newscale:101
  2. oldscale:101,:因子:x,newscale:102
  3. oldscale:102,:因子:x,newscale:103

……

变量 i 现在是当前步数 (0-19)、总步数 (20) 和目标缩放百分比 (20)

这是我需要的一个非常简单的例子。主要问题是,我只能访问 X 并且我不能直接影响尺度。

任何人都可以帮忙吗?我希望我解释得很好。

4

2 回答 2

1

您需要 130/100 的 20 次根。计算它使用

k = Math.exp(Math.log(130/100) / 20)

k 的 20 次方为 130/100。

于 2011-07-24T09:23:50.430 回答
1

不知道你的问题是什么:

但我相信你想找到这样的 x :

(1+x)**numberofStep - 1 = pourcentageOfIncrease  //** is power

=> x= numberOfStepsNTHROOTOF(1+pourcentageOfIncrease) -1

对于 numberofStep =20 和 pourcentageOfIncrease =20

你发现 :x=pow(1+20%,1/20.)-1= 0.00916 = 0.916% increase at each step

注意:这类似于计算复利,但用于缩放。您计算每一步的缩放以获得总缩放。

希望我理解你的问题,它会有所帮助

于 2011-07-24T09:27:55.733 回答