**三维投影**是将三维空间中的点映射到二维平面上的方法。由于目前绝大多数图形数据的显示方式仍是二维的，因此三维投影的应用相当广泛，尤其是在计算机图形学，工程学和工程制图中。

分类
--

* **三维图形平面投影**
	+ **平行投影**：投影中心与投影平面的距离是无限的，投影线相互平行
		- **正投影（正交投影）**：投影线垂直于投影平面
			* **多视图投影**：物体的坐标面与投影面平行，正视图、侧视图、俯视图
			* **轴测投影**：物体的三个坐标面或坐标轴与投影面均不平行
				+ **正等轴测投影（正等测）**：投影时三个坐标轴等比例缩放，投影面坐标轴夹角120°
				+ **正二轴测投影（正二测）**：投影时两个坐标轴等比例缩放，第三个坐标轴缩放比例不同
				+ **正三轴测投影（正三测）**：投影时三个坐标轴缩放比例均不相等
		- **斜投影**：投影线不垂直于投影平面
			* **斜等轴测投影（斜等测）**
			* **斜二轴测投影（斜二测）**
			* **斜三轴测投影（斜三测）**
	+ **透视投影**：投影中心与投影平面的距离是有限的
		- 一点透视
		- 两点透视
		- 三点透视

平行投影
----

平行投影是投影线相互平行的投影。若投影线垂直于投影面则称正投影，若投影面倾斜于投影面则称斜投影。

### 正交投影

正交投影是一系列用于显示三维物体的轮廓、细节或精确测量结果的变换方法。通常又称作截面图、鸟瞰图或立面图。

当视平面的法向（即摄像机的朝向）平行于笛卡尔坐标系三根坐标轴中的一根，数学变换定义如下：
若使用一个平行于y轴（侧视图）的正交投影将三维点{\displaystyle a\_{x}}, {\displaystyle a\_{y}}, {\displaystyle a\_{z}}投影到二维平面上得到二维点{\displaystyle b\_{x}}, {\displaystyle b\_{y}}，可以使用如下公式

{\displaystyle b\_{x}=s\_{x}a\_{x}+c\_{x}}
{\displaystyle b\_{y}=s\_{z}a\_{z}+c\_{z}}
其中向量**s**是一个任意的缩放因子，而**c**是一个任意的偏移量。这些常量可自由选择，通常用于将视口调整到一个合适的位置。该投影变换同样可以使用矩阵表示（为清晰起见引入临时向量**d**）

{\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}}}
{\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}}.}

  

虽然正交投影产生的图像在一定程度上反映了物体的三维特性，但此类投影图像和实际观测到的并不相同。特别是对于相同长度的平行线段，无论离虚拟观察者（摄像机）远近与否，它们都会在正交投影中显示为相同长度。这会导致较近的线段看起来被缩短了。

### 斜投影

斜投影不像正交投影一样投影线垂直于投影面，而是投影线与投影面成非90度的斜角。

透视投影
----

条目：变换矩阵
透视投影的定义更为复杂。可以将其理解为透过摄像机取景器对于被投影物体进行观察。摄像机的位置、朝向和视野都将影响投影变换的结果。我们定义以下变量来对这一变换进行描述：

* {\displaystyle \mathbf {a} \_{x,y,z}}：将被投影的三维空间中的点。
* {\displaystyle \mathbf {c} \_{x,y,z}}：摄像机的位置。
* {\displaystyle \mathbf {\theta } \_{x,y,z}}：摄像机的旋转角度。当 {\displaystyle \mathbf {c} \_{x,y,z}}=<0,0,0>且 {\displaystyle \mathbf {\theta } \_{x,y,z}}=<0,0,0>, 三维向量<1,2,0>将被投影到二维向量<1,2>。
* {\displaystyle \mathbf {e} \_{x,y,z}}：观测者相对显示平面的位置。

最终结果为：

* {\displaystyle \mathbf {b} \_{x,y}}：\mathbf {a} 所产生的二维投影。

首先我们定义点{\displaystyle \mathbf {d} \_{x,y,z}}作为点\mathbf {a} 向摄像机坐标系所作的变换，其中摄像机坐标系由摄像机的位置\mathbf {c} 和旋转{\displaystyle \mathbf {\theta } \_{x,y,z}}所决定。该过程为：先用\mathbf {a} 减去\mathbf {c} ，然后使用由{\displaystyle -\mathbf {\theta } }产生的旋转矩阵乘上该结果。该变换通常称为摄像机变换(注意该计算过程假设使用左手法则)：

{\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)}
或者使用以下这种非矩阵表示的形式，其中角度的正负号与矩阵表示形式不同：

{\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}}}
然后将变换后的该点通过以下方程投影到二维平面（此处投影平面为*x/y*平面，有时也使用*x/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}}}
或在齐次坐标系下可以表示为：

{\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}}}
和

{\displaystyle {\begin{array}{lcl}\mathbf {b} \_{x}&=&\mathbf {f} \_{x}/\mathbf {f} \_{w}\\\mathbf {b} \_{y}&=&\mathbf {f} \_{y}/\mathbf {f} \_{w}\\\end{array}}}
观测者到显示平面的距离，{\displaystyle \mathbf {e} \_{z}}，直接关系到视野的大小。{\displaystyle \alpha =2\cdot \tan ^{-1}(1/\mathbf {e} \_{z})}为可视角度。（这里假设屏幕的两角为(-1,-1)和(1,1)）

如果要在一些特定的显示设备上显示该二维平面，之后还要进行一些必要的剪裁和缩放操作。

图示
--

计算三维空间中位于Ax，Az的点在屏幕坐标x轴的位置：

{\displaystyle screen\ x\ coordinate\ (Bx)\ =\ model\ x\ coordinate\ (Ax)\times {\frac {distance\ from\ eye\ to\ screen\ (Bz)}{distance\ from\ eye\ to\ point\ (Az)}}}

对于y轴同样有:

{\displaystyle screen\ y\ coordinate\ (By)\ =\ model\ y\ coordinate\ (Ay)\times {\frac {distance\ from\ eye\ to\ screen\ (Bz)}{distance\ from\ eye\ to\ point\ (Az)}}}

(其中Ax和Ay是透视转换前物体在空间中的坐标)

参看
--

* 计算机图形学
	+ 三维计算机图形
* 透视
* 单应性
* 三维投影的数学理论：投影

参考文献
----

1. ↑  Ingrid Carlbom, Joseph Paciorek, ACM Computing Surveys, 1978, **10** (4): 465–502, doi:10.1145/356744.356750 .
2. ↑  Riley, K F.. Cambridge University Press. 2006: 931,942. ISBN 0521679710. doi:10.2277/0521679710.
3. ↑  Goldstein, Herbert.. Reading, Mass.: Addison-Wesley Pub. Co. 1980: 146–148. ISBN 0201029189.
4. ↑  Rotation About an Arbitrary Axis in 3 Dimensions （页面存档备份，存于） Glenn Murray 2013-6-6 [2014-4-23]
5. ↑  
Sonka, M; Hlavac, V; Boyle, R, Chapman and Hall: 14, 1995, ISBN 0412455706

深入阅读
----

|  |  |
| --- | --- |
|  | 维基共享资源中相关的多媒体资源：**三维投影** |

* Kenneth C. Finney.. Thomson Course. 2004: 93  [2009-12-23]. ISBN 159200136X. （原始内容存档于2012-11-12）.