回答編集履歴
2
分数が逆だったわよ…
answer
CHANGED
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
Perspectiveな投影であれば,
|
|
20
20
|
`表示域の幅[pix] = f * tanθ`
|
|
21
21
|
なので,「30度←→160pix」の関係から,`f`の値を求めておくことができます.
|
|
22
|
-
`160 = f * tan30度` → `f = tan30度
|
|
22
|
+
`160 = f * tan30度` → `f = 160/tan30度`
|
|
23
23
|
|
|
24
24
|
で,表示域が240[pix]に広がったならば,
|
|
25
|
-
`240 = f * tanθ' = (tan30度
|
|
25
|
+
`240 = f * tanθ' = (160/tan30度) * tanθ'`
|
|
26
|
-
から,atanとか使って`θ'`を求めてやれば良いわけです.
|
|
26
|
+
から,atanとかを使って`θ'`を求めてやれば良いわけです.
|
|
27
27
|
|
|
28
28
|
要は,ある`f`の値を定数として持っておき,ウィンドウサイズが変わったら,ウィンドウ幅と`f`の値から新しい視野角を求めて使う(投影行列を更新してやる)ようにする,という話になるでしょう.
|
1
式を追記
answer
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
これは言い換えれば
|
|
4
4
|
「ある視野(画角)が,常に同じ画素数で写って欲しい」という話でしょう.
|
|
5
5
|
|
|
6
|
-
例えば,視野60度の範囲をウィンドウ幅
|
|
6
|
+
例えば,視野60度の範囲をウィンドウ幅320pixで描画していたとき…
|
|
7
7
|

|
|
8
8
|
|
|
9
9
|
この状態から,ウィンドウ幅が480pixに変化したとする.
|
|
@@ -12,4 +12,17 @@
|
|
|
12
12
|
やりたいことは「先の状態の 30度←→160pix の関係を崩したくない」ということなので,
|
|
13
13
|
ウィンドウ幅が広がったならば,相応に視野の範囲を広げてやればよいということになります.
|
|
14
14
|
すなわち,下図の`θ'`を「30度←→160pix が崩れない値として」求める必要があります.
|
|
15
|
-

|
|
15
|
+

|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
Perspectiveな投影であれば,
|
|
20
|
+
`表示域の幅[pix] = f * tanθ`
|
|
21
|
+
なので,「30度←→160pix」の関係から,`f`の値を求めておくことができます.
|
|
22
|
+
`160 = f * tan30度` → `f = tan30度/160`
|
|
23
|
+
|
|
24
|
+
で,表示域が240[pix]に広がったならば,
|
|
25
|
+
`240 = f * tanθ' = (tan30度/160) * tanθ'`
|
|
26
|
+
から,atanとか使って`θ'`を求めてやれば良いわけです.
|
|
27
|
+
|
|
28
|
+
要は,ある`f`の値を定数として持っておき,ウィンドウサイズが変わったら,ウィンドウ幅と`f`の値から新しい視野角を求めて使う(投影行列を更新してやる)ようにする,という話になるでしょう.
|