齐次表示在图形学中占有非常重要的位置。点表示三维空间中的一个位置,向量表示一个方向,没有具体的位置。使用的矩阵,可以对坐标进行仿射变换,比如旋转、缩放以及错切变换等,然而使用这种矩阵并不能进行平移变换。点的平移是有意义的,但是向量的平移是没有意义的。
简单来说,在三维空间上,点和向量的表示都是3维的,把扩展1维,就得到齐次向量表示,即。若
为零,
表示一个三维向量;若
非零,则
表示点
。
齐次向量扩展1维,那么原先由的矩阵表示的变换也需要扩展1维,变成
的齐次矩阵。
的齐次矩阵可以实现旋转、缩放和错切变换,形式为:
矩阵不能表示的位移变换,也可以采用
的齐次矩阵来表示
易知,若是一个向量
,则
得到的结果仍等于
,因为向量的位移是没有意义的。
图1. 点的透视投影
齐次表示除了能表表三维空间上所有的仿射变换(两条互相平面的直线,变换后,仍然互相平行),还可以表示透视变换,参见文章《OpenGL原理介绍》,如图1所示。一个点投影到照相机的近平面上
,
是在
轴的负方向上,
表示投影平面到源点的距离,则有
,则
,同理,有
,即:
透视变换不能把深度信息给丢弃掉,所以图形学里面引入了伪深度的概念,来表示,透视变换后的坐标为:
其中,。
我们很容易用4×4的齐次矩阵来表示透视变换,如下所示:
的齐次矩阵既可以表示仿射变换也可以表示透视变换,大大简化了硬件的设计要求,图形学中起到了非常重要的位置。