回答編集履歴

2

分数が逆だったわよ…

2020/10/03 02:05

投稿

fana
fana

スコア11663

test CHANGED
@@ -40,15 +40,15 @@
40
40
 
41
41
  なので,「30度←→160pix」の関係から,`f`の値を求めておくことができます.
42
42
 
43
- `160 = f * tan30度` → `f = tan30度/160`
43
+ `160 = f * tan30度` → `f = 160/tan30度`
44
44
 
45
45
 
46
46
 
47
47
  で,表示域が240[pix]に広がったならば,
48
48
 
49
- `240 = f * tanθ' = (tan30度/160) * tanθ'`
49
+ `240 = f * tanθ' = (160/tan30度) * tanθ'`
50
50
 
51
- から,atanとか使って`θ'`を求めてやれば良いわけです.
51
+ から,atanとか使って`θ'`を求めてやれば良いわけです.
52
52
 
53
53
 
54
54
 

1

式を追記

2020/10/03 02:05

投稿

fana
fana

スコア11663

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- 例えば,視野60度の範囲をウィンドウ幅320pix描画していたとき…
11
+ 例えば,視野60度の範囲をウィンドウ幅320pix描画していたとき…
12
12
 
13
13
  ![イメージ説明](bcc884de266a234279e56443f8d2300d.png)
14
14
 
@@ -27,3 +27,29 @@
27
27
  すなわち,下図の`θ'`を「30度←→160pix が崩れない値として」求める必要があります.
28
28
 
29
29
  ![イメージ説明](a377ec5b553b56c43864c2f6011731f8.png)
30
+
31
+
32
+
33
+ ---
34
+
35
+
36
+
37
+ Perspectiveな投影であれば,
38
+
39
+ `表示域の幅[pix] = f * tanθ`
40
+
41
+ なので,「30度←→160pix」の関係から,`f`の値を求めておくことができます.
42
+
43
+ `160 = f * tan30度` → `f = tan30度/160`
44
+
45
+
46
+
47
+ で,表示域が240[pix]に広がったならば,
48
+
49
+ `240 = f * tanθ' = (tan30度/160) * tanθ'`
50
+
51
+ から,atanとか使って`θ'`を求めてやれば良いわけです.
52
+
53
+
54
+
55
+ 要は,ある`f`の値を定数として持っておき,ウィンドウサイズが変わったら,ウィンドウ幅と`f`の値から新しい視野角を求めて使う(投影行列を更新してやる)ようにする,という話になるでしょう.