三维投影是将三维空间中的点映射到二维平面上的方法。由于目前绝大多数图形数据的显示方式仍是二维的,因此三维投影的应用相当广泛,尤其是在计算机图形学,工程学和工程制图中。
- 三维图形平面投影
- 平行投影:投影中心与投影平面的距离是无限的,投影线相互平行
- 正投影(正交投影):投影线垂直于投影平面
- 多视图投影:物体的坐标面与投影面平行,正视图、侧视图、俯视图
- 轴测投影:物体的三个坐标面或坐标轴与投影面均不平行
- 正等轴测投影(正等测):投影时三个坐标轴等比例缩放,投影面坐标轴夹角120°
- 正二轴测投影(正二测):投影时两个坐标轴等比例缩放,第三个坐标轴缩放比例不同
- 正三轴测投影(正三测):投影时三个坐标轴缩放比例均不相等
- 斜投影:投影线不垂直于投影平面
- 斜等轴测投影(斜等测)
- 斜二轴测投影(斜二测)
- 斜三轴测投影(斜三测)
- 透视投影:投影中心与投影平面的距离是有限的
平行投影是投影线相互平行的投影。若投影线垂直于投影面则称正投影,若投影面倾斜于投影面则称斜投影。
正交投影是一系列用于显示三维物体的轮廓、细节或精确测量结果的变换方法。通常又称作截面图、鸟瞰图或立面图。
当视平面的法向(即摄像机的朝向)平行于笛卡尔坐标系三根坐标轴中的一根,数学变换定义如下:
若使用一个平行于y轴(侧视图)的正交投影将三维点
,
,
投影到二维平面上得到二维点
,
,可以使用如下公式
![{\displaystyle b_{x}=s_{x}a_{x}+c_{x}}](https://backend.710302.xyz/https/wikimedia.org/api/rest_v1/media/math/render/svg/63e26c9929dfe6866eb982480933df74bb43dfa1)
![{\displaystyle b_{y}=s_{z}a_{z}+c_{z}}](https://backend.710302.xyz/https/wikimedia.org/api/rest_v1/media/math/render/svg/67fd4ae4cef837cc5775c1f6fa0f19374b8f4dd4)
其中向量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}}}](https://backend.710302.xyz/https/wikimedia.org/api/rest_v1/media/math/render/svg/dba6a0285530d858b657ff49d7c8ca4855c3b9cd)
![{\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}}.}](https://backend.710302.xyz/https/wikimedia.org/api/rest_v1/media/math/render/svg/f2934d79833b025fb4b1e997369fa92306deff58)
虽然正交投影产生的图像在一定程度上反映了物体的三维特性,但此类投影图像和实际观测到的并不相同。特别是对于相同长度的平行线段,无论离虚拟观察者(摄像机)远近与否,它们都会在正交投影中显示为相同长度。这会导致较近的线段看起来被缩短了。
斜投影不像正交投影一样投影线垂直于投影面,而是投影线与投影面成非90度的斜角。
透视投影的定义更为复杂。可以将其理解为透过摄像机取景器对于被投影物体进行观察。摄像机的位置、朝向和视野都将影响投影变换的结果。我们定义以下变量来对这一变换进行描述:
:将被投影的三维空间中的点。
:摄像机的位置。
:摄像机的旋转角度。当
=<0,0,0>且
=<0,0,0>, 三维向量<1,2,0>将被投影到二维向量<1,2>。
:观测者相对显示平面的位置。[1]
最终结果为:
:
所产生的二维投影。
首先我们定义点
作为点
向摄像机坐标系所作的变换,其中摄像机坐标系由摄像机的位置
和旋转
所决定。该过程为:先用
减去
,然后使用由
产生的旋转矩阵乘上该结果。该变换通常称为摄像机变换(注意该计算过程假设使用左手法则):
[2]
[3]
[4]
或者使用以下这种非矩阵表示的形式,其中角度的正负号与矩阵表示形式不同:
![{\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}}}](https://backend.710302.xyz/https/wikimedia.org/api/rest_v1/media/math/render/svg/c3469af63e4264d6a806576df1c794210d183c59)
然后将变换后的该点通过以下方程投影到二维平面(此处投影平面为x/y平面,有时也使用x/z):[5]
![{\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}}}](https://backend.710302.xyz/https/wikimedia.org/api/rest_v1/media/math/render/svg/d66191db1d23684b243322417254ae3cb6d03a71)
或在齐次坐标系下可以表示为:
![{\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}}}](https://backend.710302.xyz/https/wikimedia.org/api/rest_v1/media/math/render/svg/5481ab4d4e4418cfe77362cdac787f19c41b19b4)
和
![{\displaystyle {\begin{array}{lcl}\mathbf {b} _{x}&=&\mathbf {f} _{x}/\mathbf {f} _{w}\\\mathbf {b} _{y}&=&\mathbf {f} _{y}/\mathbf {f} _{w}\\\end{array}}}](https://backend.710302.xyz/https/wikimedia.org/api/rest_v1/media/math/render/svg/6c4671eaabae641a127ee63db971ed12eaf992a0)
观测者到显示平面的距离,
,直接关系到视野的大小。
为可视角度。(这里假设屏幕的两角为(-1,-1)和(1,1))
如果要在一些特定的显示设备上显示该二维平面,之后还要进行一些必要的剪裁和缩放操作。
计算三维空间中位于Ax,Az的点在屏幕坐标x轴的位置:
对于y轴同样有:
(其中Ax和Ay是透视转换前物体在空间中的坐标)
- ^ Ingrid Carlbom, Joseph Paciorek, Planar Geometric Projections and Viewing Transformations, ACM Computing Surveys, 1978, 10 (4): 465–502, doi:10.1145/356744.356750 .
- ^ Riley, K F. Mathematical Methods for Physics and Engineering. Cambridge University Press. 2006: 931,942. ISBN 0521679710. doi:10.2277/0521679710.
- ^ Goldstein, Herbert. Classical Mechanics 2nd Edn.. Reading, Mass.: Addison-Wesley Pub. Co. 1980: 146–148. ISBN 0201029189.
- ^ Rotation About an Arbitrary Axis in 3 Dimensions (页面存档备份,存于互联网档案馆) Glenn Murray 2013-6-6 [2014-4-23]
- ^
Sonka, M; Hlavac, V; Boyle, R, Image Processing, Analysis & Machine Vision 2nd Edn., Chapman and Hall: 14, 1995, ISBN 0412455706