前回の続き。
Windowsアプリでよく見る Ctrl + マウスホイール での拡大表示の
拡大率を現実世界をモデリングして求めてみようという話。
ある人が視野角θで対象物を見ていて、それが高さhで見えているとする。
そこから人がxだけ前進すると対象物の見える範囲がh'になるとする。
hだけ見えていたのがh'しか見えなくなるのだから
拡大率 = h / h'
だ。
ある距離x進んだ時の拡大率が知りたいのだから
h'をxとhで表せれば良さそう。
図の赤い三角形に着目すると
赤い三角形右辺の長さ = (h - h')
であることが分かる。
同時に
赤い三角形右辺の長さ = x * tan(θ/2) * 2
でもあるので
(h - h') = x * tan(θ/2) * 2
式を変形すると
h' = h - x * tan(θ/2) * 2
よって
拡大率 = h / (h - x * tan(θ/2) * 2)
110%(=1.1)の拡大率になるxはというと
1.1 = h / (h - x * tan(θ/2) * 2) 1.1 * (h - x * tan(θ/2) * 2) = h 1.1 * h - 1.1 * x * tan(θ/2) * 2 = h -1.1 * x * tan(θ/2) * 2 = -0.1 * h x = h / (22 * tan(θ/2))
ここで
θ = 45°
とすると
tan(θ/2) ≒ 0.4142135623730950488016887242097 x ≒ h * 0.10973698010786795676371312382771
例えばhが100の時は1.1倍になるxは約11。
で、約11ずつ進んでいくと拡大率はどうなるのかグラフにしてみる。
なんかそれっぽいけどどうなんだろ。
次は実際にアプリにして感じを見てみる。