一个平面上的图形可以在计算机上存储为一个顶点的集合,通过画出顶点,并将顶点用直线相连即可得到图形(GPU管线中的三角片元和栅格化操作),若有n个顶点,则它们存储在一个的矩阵中,顶点的坐标存储在矩阵的第一行,坐标存储在第二行,每一对相继顶点用一条直线相连.
例如,要存储一个顶点坐标位于
的三角形,将每一项顶点对应的数对存储为矩阵的一列:
附加顶点的副本存储在的最后一列,这样,前一个顶点可以画回到,
也就是沿着下图
的轨迹绘制,如下图所示:
通过改变顶点的位置并重新绘制图形,即可变换图形,如果变换是线性的,也就是满足下面两个原则的变换:
- 原点变换后仍然留在原点
- 直线变换后仍然是直线
则可通过矩阵乘法来实现,这样的一些列变换就得到一个动画。
比如,第一种
放大和缩小(scaling)
对于形如
的线性算子,当时为放大,当时为缩小,算子L可以表示为矩阵
如下图所示:
第二种
镜像(reflection)
如果为将向量关于 轴对称的变换,则满足上述的两条原则,是一个线性变换,是一个线性算子,且可以表示为的矩阵A.
因为
所以
类似的,关于y轴镜像的变换为
如下图所示:
第三种,旋转
旋转(rotation)
令L为一将向量从初始位置旋转角度的变换,也是一个线性变换,满足上面的两条原则。变换矩阵是:
最后一种,平移
平移(translation)
向量的平移变换形如
为一个常向量。
如果,则原点会发生移动,所以不是线性变换。且不能表示为 的矩阵。然而,在计算机图形学中,要求所有的变换都能表示为矩阵的乘法,围绕这个问题,引入了一个新的坐标系,成为齐次坐标,这个新的坐标可以将平移表示为线性变换。
齐次坐标系是通过将中向量等同于中和该向量前两个坐标相同,而第三个坐标为1的向量来构造的.
当需要画出由齐次坐标向量表示的点时,只要简单的忽略它的第三个坐标并画出有序对即可.
前面所讨论的现行变换现在必须表示成的矩阵,为此,可以将矩阵通过添加单位矩阵的第三行和第三列元素进行扩展,例如,将一个的放大矩阵
替换为的矩阵
注意到:
若变换将中的向量平移向量
则可以在齐次坐标系中求出变换的矩阵表示,只需要简单的用元素替换矩阵钱两行中的第三列元素即可.也就是
来一副综合效果图,G2D设计中的shear变换,其实就是一个线性空间变换:
结束