2011-07-11 72 views
3

我在玩OpenGL,我有一個問題,我一直無法找到答案或至少沒有找到答案。找到正確的方式來問問搜索引擎。我有一個非常簡單的設置。一個800x600的視口和一個投影矩陣,視角爲45度,近平面和遠平面爲1.0和200.0。爲了討論,模型視圖矩陣是單位矩陣。在OpenGL中,我如何確定給定深度的視圖邊界

我想確定的是在給定的深度的視圖的界限。例如,(0,0,0)是屏幕的中心。我正在朝-Z方向看。

我想知道,如果我在平面上繪製幾何圖形100個單位到屏幕(0,0,-100),視圖的界限是什麼?我可以在這個平面中畫出x和y方向有多遠,幾何圖形仍然可見。

更一般地說,給定一個與近平面和遠平面(以及它們之間)平行的平面,該平面的可見邊界是什麼?

另外,如果我試圖確定有一個共同的名稱或是一個常見的操作,它叫什麼?這樣我可以追蹤更多的閱讀材料

+0

反向投影?查看裁剪? – Rekin

+3

視錐體是一個上限金字塔,因此[截距定理](http://en.wikipedia.org/wiki/Intercept_theorem)適用。 – Damon

回答

9

你的視角是45度,你有一個飛機在遠離相機的距離,未知高度h。整個事情看起來像這樣: Diagram 請注意,這裏的角度是你的視野的一半。

噴粉關閉高中數學的書籍,我們得到:

tan(angle) = h/a 

重新排列小時,替補多的半視場:

h = tan(FieldOfView/2) * a; 

這是你的飛機多少沿Y向上延伸軸。

由於屏幕不是正方形,所以您的飛機的寬度與高度不同。更確切地說,寬度是縱橫比乘以高度。即w = h * aspectRatio

我希望這能回答你的問題。

+0

這正是我正在尋找的。謝謝!現在是我重新審視我的數學書籍的時候了。 – BZor