[線代] 透視矩陣意義

看板Math作者 (東逼)時間13年前 (2012/10/21 20:35), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
大家好 是這樣的 小弟最近剛接觸到需要利用C++寫繪圖相關的東西 而說到繪圖就必須提到openGL這個東東 在寫openGL的時候有遇到需要了解一些線代的東西 由於推導過程中並不是很懂 所以就來請教大家了 根據查到的資料 一般真實世界所看到的東西,以及對應的坐標系 若是想要轉換到螢幕讓我們看見 (簡單的說就是要將3D的東西轉換到2D平面並讓我們看起來有立體的效果) 就必須透過投影坐標轉換,而且是非線性的 其中座標轉換又有分透視矩陣以及正交矩陣兩種 專門教Direct3D/openGL繪圖的參考書有直接告訴我最終的轉換矩陣為何 以openGL為例 我手邊的書告訴我透視矩陣的值為 [ W/H * cot(0.5*θ) , 0 , 0 , 0 ] Proj4*4 = [ 0 , cot(0.5*θ) , 0 , 0 ] [ 0 , (Zf+Zn)/(Zn-Zf) , 0 ,0 ] [ 0 , 0 , 2*Zn*Zf/(Zn-Zf) ,0 ] 其中Zn為近平面 (near plane) Zf為遠平面(far plane) W,H分別為螢幕的寬與高 我想知道這個矩陣是怎麼推出來的? @@ 上網查了一下 找到一個說明似乎比較詳細的 (簡體網址,不喜勿入) http://wenku.baidu.com/view/176cd766ddccda38376baf53.html### 雖然他是推導direct3D版的 前面也都至少還能看得懂 但在投影片第93,94頁就不懂了 這邊看不懂為何要令 w = Pz 還有在第95頁令第四列第三行元素是為 1 @#$%^&*.... 更別提之後令啥Pz =α*z+β了 這部分我想了很久都還是想不出來 也不知道是不是他寫錯或是我哪裡沒搞懂 @@ 所以就上來請教大家了 如果發問過程中有術語或觀念弄錯的也請大家不吝指教了 在此就先謝謝大家囉! -- ▍ ▍ ╯╰ ╯╰ ◢◣ ◢◣ 我最愛的 柏柏龍~ 柏柏龍~ ◢██◣ ╮╭ ▎▎╮╭ ▎▎ 柏柏龍~ 柏柏龍~ ⊙ ⊙ ⊙ ⊙ 人人心中都有柏柏龍~ ≡ ▼ ≡ ▲▲ ● ● ≡ ▼ ≡ ■ ■ ■ ■ 憤怒就永遠不會消失~ ⊙⊙ ≡皿 ≡ 炸是最美的擁有~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.179.30
文章代碼(AID): #1GW-meQS (Math)