1

そこにいるすべての数学者に、質問全体を読んでください。これは、HTML5 の知識がなくても答えられる可能性があります :-)

私は HTML5 キャンバスをズーム (スケーリング) していますが、スクーリングを「スムーズ」に見せるために、1 つの大きなステップではなく、多くの小さなステップでそれを実行したいと考えています。それを説明するには:

ユーザーがスクロールホイールを回すと、私の目標はキャンバスを合計で 20% 拡大することです。ここで、これを 20 の小さなステップに分割したいと思います。

私の問題は、キャンバスのライブラリが制限されているため、2d Context の 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)、totalsteps (20)、およびターゲット ズーム (20) です。

それは私が必要とするものの非常に簡単な例です。主な問題は、X にしかアクセスできず、スケールに直接影響を与えることができないことです。

誰でも助けることができますか?よく説明したと思います。

4

2 に答える 2

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 に答える
1

130/100 の 20 乗根が必要です。それを計算するには

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

k の 20 乗は 130/100 になります。

于 2011-07-24T09:23:50.430 に答える