2

関数によって生成されたグラフがあり、関数の値に応じて自動的にズームインおよびズームアウトします。私はすでにグラフ作成ツールを持っており、任意の x、y、幅、高さを高解像度で表示できます。

正しい場所にスナップしてみました:

x = target_x
y = target_y
width = target_width
height = target_height

でもドキドキしすぎ。どの部分を拡大・縮小したかわかりにくい。

私もこれをやってみました:

orig_x = x //ditto for y, width, height, etc
for i=1 to 10
    x = i/10*new_x + i/10*orig_x
    wait 25ms

スムーズになりましたが、最初のステップはまだあまりにもびくびくしています。orig_x が 10 で new_x が 100 万の場合、最初のジャンプは 1,000,000% 近くで大きすぎます。ただし、最後のジャンプはわずか 10% です。幾何学的な進行はさらに優れていますが、ズームの途中で方向を切り替えなければならない場合、ステップがびくびくします.

使用するのに最適な効果は何ですか?

4

2 に答える 2

2

各ステップの最後のウィンドウの固定パーセンテージをズーム/シフトしたい。つまり、ズームは指数曲線になり、シフトはズームに関連付けられます。次のようなものが改善されるはずです。

width_ratio = new_width / old_width
width_ratio_log = log(width_ratio)

x_diff = new_x - old_x
x_factor = x_diff / (width_ratio - 1)
-- warning: need to handle width_ratio near 1 the old way!

for i=1 to steps
    width_factor = exp(width_ratio_log * i / steps)
    width = old_width * width_factor
    x = old_x + x_factor * (width_factor - 1)

    -- similarly for y and height...
于 2010-10-27T18:02:22.427 に答える
0

やってみるかもしれません

xDiff = new_x - orig_x
stepCount = 10

for i=1 to stepCount
    x = orig_x + i/stepCount * xDiff
    wait 25ms
于 2010-10-27T16:11:25.307 に答える