数学问题,平滑放大到画布

时间:2011-07-24 09:14:14

标签: math canvas zoom html5-canvas

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

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

当用户转动scroolwheel时,我的目标是将画布按比例缩放20%。现在我想把它分成20个小步骤。

我的问题是,由于画布的受限库,我只能使用2d Context的缩放(xscale,yscale)方法来实现。所以我不能将单位设置为特定的大小,这将使它变得容易。我必须在每一步中使用一个因素,我无法弄清楚如何做到这一点。

因此我的画布单位在步骤1中为100,我希望它们在步骤20中为130,其间有19个小步骤。

  1. oldscale:100,:factor:x,newscale:101
  2. oldscale:101,:factor:x,newscale:102
  3. oldscale:102,:factor:x,newscale:103
  4. ...

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

    这是我需要的一个非常简单的例子。主要问题是,我只能访问X而且我无法直接影响比例。

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

2 个答案:

答案 0 :(得分:1)

你需要130/100的第20根。要计算它,请使用

k = Math.exp(Math.log(130/100) / 20)
提升到20次方的k将是130/100。

答案 1 :(得分: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

注意:这类似于计算compound interest,但用于缩放。您可以在每一步计算缩放以获得总缩放。

希望我理解你的问题并帮助