一 缩放(Scale)
如下图,一个矩形的x和y坐标经过同样比例大小的缩放成一个小矩形。
假如缩放系数为s,那么
如果用矩阵表示缩放,那么
以上都是均匀的缩放,那么如果x,y不均匀缩放,会产生以下的结果
x分量与y分量上的系数不同
二 镜像(Mirror)
如下图,一个矩形沿着y轴对称
由图可知,镜像后的坐标满足以下条件
此时,镜像后的矩形坐标可表示为
同理,当沿x轴对称时
三 切变(Shear)
如下图,一个矩形的上方的边向x轴正方形移动了a个单位的距离
那么,移动后的坐标与原坐标的关系为
四 旋转(Rotation)
如下图,矩形逆时针旋转了45度
PS:在图形学中,一般默认的旋转都是以(0,0)(三维坐标中以(0,0,0))为基准点做旋转
旋转矩阵的计算
五 齐次坐标(Homogeneous coordinates)
平移(Translation)
由上图可知,将矩形平移到另一个地方,x和y都会加上平移的值,那么如何用矩阵乘法来表示这个平移的值呢?
我们会发现矩阵是两行两列的,无论怎么表示都不能用一个矩阵让原来的x,y加上某个平移量,如果需要表示只能由以下方法表示:
但是我们并不想这样表示平移,因为这和我们前面写的各种矩阵表示的有区别,所以就提出了齐次坐标的概念。
我们通过在2x2的矩阵上添加一个w分量,使其变成三维表示,但是w分量并不会影响其他操作。
这样一来,我们把二维空间的点表示为:
二维空间的向量表示为:
然后,平移矩阵便可以表示出来如下:
在齐次坐标中,满足以下条件:
所以,以上的缩放,旋转矩阵在齐次坐标中可表示为:
六 组合变换(Composite Transform)
组合变换就是在一个物体上应用多种不同的变换,得到一个最终的物体。
如下图,如何将举行变换到右边的位置?
有一种思路是首先平移,然后再旋转,如果这样变换的话,我们会看到这样一种情况:
很明显,变换后的图形并不是我们想要的图形。
那么如果先旋转再平移呢:
这次结果就对了,是我们想要实现的效果。
这就出现了一个问题:变换的顺序会影响到最终的效果。
注意:矩阵的应用是从右边往左边的顺序的。
七 复杂变换的分解
如下图:如何将上面的矩形变换到下方的矩形位置处
如果我们直接做旋转肯定是不可以的,因为在上面提到,矩阵旋转默认都是以原点为基准的。
所以我们分解变换,首先将原来的矩形平移到原点处,然后旋转α度,然后再平移到最终的位置,如下:
八 三维空间的变换(3D)
在三维空间下,用其次坐标表示点和向量方式如下:
缩放矩阵
平移矩阵
分别绕x,y,z轴旋转的旋转矩阵
Rodrigues’ Rotation 公式
绕着n轴旋转α度:
《秦时明月》场景图片
本文所有内容均是博主学习闫令琪老师的现代计算机图形学课程的总结,如有不足之处欢迎评论区指导补充。