三维投影是将三维空间中的点映射到二维平面上的方法。由于目前绝大多数图形数据的显示方式仍是二维的,因此三维投影的应用相当广泛,尤其是在计算机图形学,工程学和工程制图中。
平行投影是投影线相互平行的投影。若投影线垂直于投影面则称正投影,若投影面倾斜于投影面则称斜投影。
斜投影不像正交投影一样投影线垂直于投影面,而是投影线与投影面成非90度的斜角。
透视投影的定义更为复杂。可以将其理解为透过摄像机取景器对于被投影物体进行观察。摄像机的位置、朝向和视野都将影响投影变换的结果。我们定义以下变量来对这一变换进行描述:
- :将被投影的三维空间中的点。
- :摄像机的位置。
- :摄像机的旋转角度。当 =<0,0,0>且 =<0,0,0>, 三维向量<1,2,0>将被投影到二维向量<1,2>。
- :观测者相对显示平面的位置。[1]
最终结果为:
- :所产生的二维投影。
首先我们定义点作为点向摄像机坐标系所作的变换,其中摄像机坐标系由摄像机的位置和旋转所决定。该过程为:先用减去,然后使用由产生的旋转矩阵乘上该结果。该变换通常称为摄像机变换(注意该计算过程假设使用左手法则):
[2]
[3]
- [4]
或者使用以下这种非矩阵表示的形式,其中角度的正负号与矩阵表示形式不同:
然后将变换后的该点通过以下方程投影到二维平面(此处投影平面为x/y平面,有时也使用x/z):[5]
或在齐次坐标系下可以表示为:
和
观测者到显示平面的距离,,直接关系到视野的大小。为可视角度。(这里假设屏幕的两角为(-1,-1)和(1,1))
如果要在一些特定的显示设备上显示该二维平面,之后还要进行一些必要的剪裁和缩放操作。
计算三维空间中位于Ax,Az的点在屏幕坐标x轴的位置:
对于y轴同样有:
(其中Ax和Ay是透视转换前物体在空间中的坐标)