3D投影- 維基百科,自由的百科全書

文章推薦指數: 80 %
投票人數:10人

3D投影是將3D空間中的點映射到2D平面上的方法。

由於目前絕大多數圖形數據的顯示方式仍是2D的,因此3D投影的應用相當廣泛,尤其是在計算機圖形學,工程學和工程製圖中。

3D投影 維基百科,自由的百科全書 跳至導覽 跳至搜尋 3D投影是將3D空間中的點映射到2D平面上的方法。

由於目前絕大多數圖形數據的顯示方式仍是2D的,因此3D投影的應用相當廣泛,尤其是在計算機圖形學,工程學和工程製圖中。

目次 1分類 2平行投影 2.1正交投影 2.2斜投影 3透視投影 4圖示 5參看 6參考文獻 7深入閱讀 分類[編輯] 3D圖形平面投影 平行投影:投影中心與投影平面的距離是無限的,投影線相互平行 正投影(正交投影):投影線垂直於投影平面 多視圖投影:物體的坐標面與投影面平行,正視圖、側視圖、俯視圖 軸測投影:物體的三個坐標面或坐標軸與投影面均不平行 正等軸測投影(正等測):投影時三個坐標軸等比例縮放,投影面坐標軸夾角120° 正二軸測投影(正二測):投影時兩個坐標軸等比例縮放,第三個坐標軸縮放比例不同 正三軸測投影(正三測):投影時三個坐標軸縮放比例均不相等 斜投影:投影線不垂直於投影平面 斜等軸測投影(斜等測) 斜二軸測投影(斜二測) 斜三軸測投影(斜三測) 透視投影:投影中心與投影平面的距離是有限的 一點透視 兩點透視 三點透視 平行投影[編輯] 平行投影是投影線相互平行的投影。

若投影線平行於投影面則稱正投影,若投影面傾斜於投影面則稱斜投影。

正交投影[編輯] 正交投影是一系列用於顯示3D物體的輪廓、細節或精確測量結果的變換方法。

通常又稱作截面圖、鳥瞰圖或立面圖。

當視平面的法向(即攝像機的朝向)平行於笛卡爾坐標系三根坐標軸中的一根,數學變換定義如下: 若使用一個平行於y軸(側視圖)的正交投影將3D點 a x {\displaystylea_{x}} , a y {\displaystylea_{y}} , a z {\displaystylea_{z}} 投影到2D平面上得到2D點 b x {\displaystyleb_{x}} , b y {\displaystyleb_{y}} ,可以使用如下公式 b x = s x a x + c x {\displaystyleb_{x}=s_{x}a_{x}+c_{x}} b y = s z a z + c z {\displaystyleb_{y}=s_{z}a_{z}+c_{z}} 其中向量s是一個任意的縮放因子,而c是一個任意的偏移量。

這些常量可自由選擇,通常用於將視口調整到一個合適的位置。

該投影變換同樣可以使用矩陣表示(為清晰起見引入臨時向量d) [ d x d y ] = [ 1 0 0 0 0 1 ] [ a x a y a z ] {\displaystyle{\begin{bmatrix}{d_{x}}\\{d_{y}}\\\end{bmatrix}}={\begin{bmatrix}1&0&0\\0&0&1\\\end{bmatrix}}{\begin{bmatrix}{a_{x}}\\{a_{y}}\\{a_{z}}\\\end{bmatrix}}} [ b x b y ] = [ s x 0 0 s z ] [ d x d y ] + [ c x c z ] . {\displaystyle{\begin{bmatrix}{b_{x}}\\{b_{y}}\\\end{bmatrix}}={\begin{bmatrix}{s_{x}}&0\\0&{s_{z}}\\\end{bmatrix}}{\begin{bmatrix}{d_{x}}\\{d_{y}}\\\end{bmatrix}}+{\begin{bmatrix}{c_{x}}\\{c_{z}}\\\end{bmatrix}}.} 雖然正交投影產生的圖像在一定程度上反映了物體的3D特性,但此類投影圖像和實際觀測到的並不相同。

特別是對於相同長度的平行線段,無論離虛擬觀察者(攝像機)遠近與否,它們都會在正交投影中顯示為相同長度。

這會導致較近的線段看起來被縮短了。

斜投影[編輯] 斜投影不像正交投影一樣投影線垂直於投影面,而是投影線與投影面成非90度的斜角。

透視投影[編輯] 主條目:變換矩陣 透視投影的定義更為複雜。

可以將其理解為透過攝像機取景器對於被投影物體進行觀察。

攝像機的位置、朝向和視野都將影響投影變換的結果。

我們定義以下變量來對這一變換進行描述: a x , y , z {\displaystyle\mathbf{a}_{x,y,z}} :將被投影的3D空間中的點。

c x , y , z {\displaystyle\mathbf{c}_{x,y,z}} :攝像機的位置。

θ x , y , z {\displaystyle\mathbf{\theta}_{x,y,z}} :攝像機的旋轉角度。

當 c x , y , z {\displaystyle\mathbf{c}_{x,y,z}} =<0,0,0>且 θ x , y , z {\displaystyle\mathbf{\theta}_{x,y,z}} =<0,0,0>,3D向量<1,2,0>將被投影到2D向量<1,2>。

e x , y , z {\displaystyle\mathbf{e}_{x,y,z}} :觀測者相對顯示平面的位置。

[1] 最終結果為: b x , y {\displaystyle\mathbf{b}_{x,y}} : a {\displaystyle\mathbf{a}} 所產生的2D投影。

首先我們定義點 d x , y , z {\displaystyle\mathbf{d}_{x,y,z}} 作為點 a {\displaystyle\mathbf{a}} 向攝像機坐標系所作的變換,其中攝像機坐標系由攝像機的位置 c {\displaystyle\mathbf{c}} 和旋轉 θ x , y , z {\displaystyle\mathbf{\theta}_{x,y,z}} 所決定。

該過程為:先用 a {\displaystyle\mathbf{a}} 減去 c {\displaystyle\mathbf{c}} ,然後使用由 − θ {\displaystyle-\mathbf{\theta}} 產生的旋轉矩陣乘上該結果。

該變換通常稱為攝像機變換(注意該計算過程假設使用左手法則): [2] [3] [ d x d y d z ] = [ 1 0 0 0 cos ⁡ ( − θ x ) − sin ⁡ ( − θ x ) 0 sin ⁡ ( − θ x ) cos ⁡ ( − θ x ) ] [ cos ⁡ ( − θ y ) 0 sin ⁡ ( − θ y ) 0 1 0 − sin ⁡ ( − θ y ) 0 cos ⁡ ( − θ y ) ] [ cos ⁡ ( − θ z ) − sin ⁡ ( − θ z ) 0 sin ⁡ ( − θ z ) cos ⁡ ( − θ z ) 0 0 0 1 ] ( [ a x a y a z ] − [ c x c y c z ] ) {\displaystyle{\begin{bmatrix}\mathbf{d}_{x}\\\mathbf{d}_{y}\\\mathbf{d}_{z}\\\end{bmatrix}}={\begin{bmatrix}1&0&0\\0&{\cos(\mathbf{-\theta}_{x})}&{-\sin(\mathbf{-\theta}_{x})}\\0&{\sin(\mathbf{-\theta}_{x})}&{\cos(\mathbf{-\theta}_{x})}\\\end{bmatrix}}{\begin{bmatrix}{\cos(\mathbf{-\theta}_{y})}&0&{\sin(\mathbf{-\theta}_{y})}\\0&1&0\\{-\sin(\mathbf{-\theta}_{y})}&0&{\cos(\mathbf{-\theta}_{y})}\\\end{bmatrix}}{\begin{bmatrix}{\cos(\mathbf{-\theta}_{z})}&{-\sin(\mathbf{-\theta}_{z})}&0\\{\sin(\mathbf{-\theta}_{z})}&{\cos(\mathbf{-\theta}_{z})}&0\\0&0&1\\\end{bmatrix}}\left({{\begin{bmatrix}\mathbf{a}_{x}\\\mathbf{a}_{y}\\\mathbf{a}_{z}\\\end{bmatrix}}-{\begin{bmatrix}\mathbf{c}_{x}\\\mathbf{c}_{y}\\\mathbf{c}_{z}\\\end{bmatrix}}}\right)} [4] 或者使用以下這種非矩陣表示的形式,其中角度的正負號與矩陣表示形式不同: d x = cos ⁡ θ y ⋅ ( sin ⁡ θ z ⋅ ( a y − c y ) + cos ⁡ θ z ⋅ ( a x − c x ) ) − sin ⁡ θ y ⋅ ( a z − c z ) d y = sin ⁡ θ x ⋅ ( cos ⁡ θ y ⋅ ( a z − c z ) + sin ⁡ θ y ⋅ ( sin ⁡ θ z ⋅ ( a y − c y ) + cos ⁡ θ z ⋅ ( a x − c x ) ) ) + cos ⁡ θ x ⋅ ( cos ⁡ θ z ⋅ ( a y − c y ) − sin ⁡ θ z ⋅ ( a x − c x ) ) d z = cos ⁡ θ x ⋅ ( cos ⁡ θ y ⋅ ( a z − c z ) + sin ⁡ θ y ⋅ ( sin ⁡ θ z ⋅ ( a y − c y ) + cos ⁡ θ z ⋅ ( a x − c x ) ) ) − sin ⁡ θ x ⋅ ( cos ⁡ θ z ⋅ ( a y − c y ) − sin ⁡ θ z ⋅ ( a x − c x ) ) {\displaystyle{\begin{array}{lcl}d_{x}&=&\cos\theta_{y}\cdot(\sin\theta_{z}\cdot(a_{y}-c_{y})+\cos\theta_{z}\cdot(a_{x}-c_{x}))-\sin\theta_{y}\cdot(a_{z}-c_{z})\\d_{y}&=&\sin\theta_{x}\cdot(\cos\theta_{y}\cdot(a_{z}-c_{z})+\sin\theta_{y}\cdot(\sin\theta_{z}\cdot(a_{y}-c_{y})+\cos\theta_{z}\cdot(a_{x}-c_{x})))+\cos\theta_{x}\cdot(\cos\theta_{z}\cdot(a_{y}-c_{y})-\sin\theta_{z}\cdot(a_{x}-c_{x}))\\d_{z}&=&\cos\theta_{x}\cdot(\cos\theta_{y}\cdot(a_{z}-c_{z})+\sin\theta_{y}\cdot(\sin\theta_{z}\cdot(a_{y}-c_{y})+\cos\theta_{z}\cdot(a_{x}-c_{x})))-\sin\theta_{x}\cdot(\cos\theta_{z}\cdot(a_{y}-c_{y})-\sin\theta_{z}\cdot(a_{x}-c_{x}))\\\end{array}}} 然後將變換後的該點通過以下方程投影到2D平面(此處投影平面為x/y平面,有時也使用x/z):[5] b x = ( d x − e x ) ( e z / d z ) b y = ( d y − e y ) ( e z / d z ) {\displaystyle{\begin{array}{lcl}\mathbf{b}_{x}&=&(\mathbf{d}_{x}-\mathbf{e}_{x})(\mathbf{e}_{z}/\mathbf{d}_{z})\\\mathbf{b}_{y}&=&(\mathbf{d}_{y}-\mathbf{e}_{y})(\mathbf{e}_{z}/\mathbf{d}_{z})\\\end{array}}} 或在齊次坐標系下可以表示為: [ f x f y f z f w ] = [ 1 0 0 − e x 0 1 0 − e y 0 0 1 0 0 0 1 / e z 0 ] [ d x d y d z 1 ] {\displaystyle{\begin{bmatrix}\mathbf{f}_{x}\\\mathbf{f}_{y}\\\mathbf{f}_{z}\\\mathbf{f}_{w}\\\end{bmatrix}}={\begin{bmatrix}1&0&0&-\mathbf{e}_{x}\\0&1&0&-\mathbf{e}_{y}\\0&0&1&0\\0&0&1/\mathbf{e}_{z}&0\\\end{bmatrix}}{\begin{bmatrix}\mathbf{d}_{x}\\\mathbf{d}_{y}\\\mathbf{d}_{z}\\1\\\end{bmatrix}}} 和 b x = f x / f w b y = f y / f w {\displaystyle{\begin{array}{lcl}\mathbf{b}_{x}&=&\mathbf{f}_{x}/\mathbf{f}_{w}\\\mathbf{b}_{y}&=&\mathbf{f}_{y}/\mathbf{f}_{w}\\\end{array}}} 觀測者到顯示平面的距離, e z {\displaystyle\mathbf{e}_{z}} ,直接關係到視野的大小。

α = 2 ⋅ tan − 1 ⁡ ( 1 / e z ) {\displaystyle\alpha=2\cdot\tan^{-1}(1/\mathbf{e}_{z})} 為可視角度。

(這裡假設屏幕的兩角為(-1,-1)和(1,1)) 如果要在一些特定的顯示設備上顯示該2D平面,之後還要進行一些必要的剪裁和縮放操作。

圖示[編輯] 計算3D空間中位於Ax,Az的點在屏幕坐標x軸的位置: s c r e e n   x   c o o r d i n a t e   ( B x )   =   m o d e l   x   c o o r d i n a t e   ( A x ) × d i s t a n c e   f r o m   e y e   t o   s c r e e n   ( B z ) d i s t a n c e   f r o m   e y e   t o   p o i n t   ( A z ) {\displaystylescreen\x\coordinate\(Bx)\=\model\x\coordinate\(Ax)\times{\frac{distance\from\eye\to\screen\(Bz)}{distance\from\eye\to\point\(Az)}}} 對於y軸同樣有: s c r e e n   y   c o o r d i n a t e   ( B y )   =   m o d e l   y   c o o r d i n a t e   ( A y ) × d i s t a n c e   f r o m   e y e   t o   s c r e e n   ( B z ) d i s t a n c e   f r o m   e y e   t o   p o i n t   ( A z ) {\displaystylescreen\y\coordinate\(By)\=\model\y\coordinate\(Ay)\times{\frac{distance\from\eye\to\screen\(Bz)}{distance\from\eye\to\point\(Az)}}} (其中Ax和Ay是透視轉換前物體在空間中的坐標) 參看[編輯] 計算機圖形學 3D計算機圖形 透視 單應性 3D投影的數學理論:投影 參考文獻[編輯] ^IngridCarlbom,JosephPaciorek,PlanarGeometricProjectionsandViewingTransformations,ACMComputingSurveys,1978,10(4):465–502,doi:10.1145/356744.356750 . ^Riley,KF.MathematicalMethodsforPhysicsandEngineering.CambridgeUniversityPress.2006:931,942.ISBN 0521679710.doi:10.2277/0521679710.  ^Goldstein,Herbert.ClassicalMechanics2ndEdn..Reading,Mass.:Addison-WesleyPub.Co.1980:146–148.ISBN 0201029189.  ^RotationAboutanArbitraryAxisin3Dimensions(頁面存檔備份,存於網際網路檔案館)GlennMurray2013-6-6[2014-4-23] ^ Sonka,M;Hlavac,V;Boyle,R,ImageProcessing,Analysis&MachineVision2ndEdn.,ChapmanandHall:14,1995,ISBN 0412455706  深入閱讀[編輯] 維基共享資源中相關的多媒體資源:3D投影 KennethC.Finney.3DGameProgrammingAllinOne.ThomsonCourse.2004:93[2009-12-23].ISBN159200136X.(原始內容存檔於2012-11-12).  取自「https://zh.wikipedia.org/w/index.php?title=三维投影&oldid=66485831」 分類:​線性代數立體幾何射影幾何三維計算機圖形學三維成像投影圖函數隱藏分類:​使用ISBN魔術連結的頁面 導覽選單 個人工具 沒有登入討論貢獻建立帳號登入 命名空間 條目討論 臺灣正體 不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體 查看 閱讀編輯檢視歷史 更多 搜尋 導航 首頁分類索引特色內容新聞動態近期變更隨機條目資助維基百科 說明 說明維基社群方針與指引互助客棧知識問答字詞轉換IRC即時聊天聯絡我們關於維基百科 工具 連結至此的頁面相關變更上傳檔案特殊頁面靜態連結頁面資訊引用此頁面維基數據項目 列印/匯出 下載為PDF可列印版 其他專案 維基共享資源 其他語言 العربيةBosanskiCatalàEnglishEspañolEuskaraहिन्दीLatviešuമലയാളംPortuguêsSimpleEnglishSlovenčinaУкраїнськаTiếngViệt粵語 編輯連結



請為這篇文章評分?