質問するログイン新規登録

回答編集履歴

2

分数が逆だったわよ…

2020/10/03 02:05

投稿

fana
fana

スコア12305

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

1

式を追記

2020/10/03 02:05

投稿

fana
fana

スコア12305

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  これは言い換えれば
4
4
  「ある視野(画角)が,常に同じ画素数で写って欲しい」という話でしょう.
5
5
 
6
- 例えば,視野60度の範囲をウィンドウ幅320pix描画していたとき…
6
+ 例えば,視野60度の範囲をウィンドウ幅320pix描画していたとき…
7
7
  ![イメージ説明](bcc884de266a234279e56443f8d2300d.png)
8
8
 
9
9
  この状態から,ウィンドウ幅が480pixに変化したとする.
@@ -12,4 +12,17 @@
12
12
  やりたいことは「先の状態の 30度←→160pix の関係を崩したくない」ということなので,
13
13
  ウィンドウ幅が広がったならば,相応に視野の範囲を広げてやればよいということになります.
14
14
  すなわち,下図の`θ'`を「30度←→160pix が崩れない値として」求める必要があります.
15
- ![イメージ説明](a377ec5b553b56c43864c2f6011731f8.png)
15
+ ![イメージ説明](a377ec5b553b56c43864c2f6011731f8.png)
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`の値から新しい視野角を求めて使う(投影行列を更新してやる)ようにする,という話になるでしょう.