一、2D变换
缩放变换就是将图形上的点的各个维度同时放大或者缩小,比如,讲一个图片的长宽都缩小0.5倍
对称变换就是变换前的图片和变换后的图片按坐标轴对称,例如按Y轴的对称变换结果如下
剪切变换类似方形变平行四边形变化,但是在变换的过程中,有一个维度的坐标是不变的,比如下面的这个图,虽然图形被向右拉,但是每个点的Y轴坐标是不变的
变换后,最左边的每一条边都在直线y=(b/a)x上,以此类推,变换后,图片生所有的横坐标都移动了(a/b)y,所以,写成公式如下
假定下图中正方形的边长为1,并旋转了θ角度,则下图中左上角定点坐标由(0,1)变为(-sinθ,cosθ)。右下角定点(1,0)的坐标分别变为(cosθ,sinθ)
展开上述矩阵,可得a=cosθ,c=sinθ,b=-sinθ,d=cosθ
结果是个单位矩阵,所以,旋转矩阵的转置矩阵=旋转矩阵的逆矩阵,所以,旋转矩阵是正交矩阵
而上述形式被叫做线性变换,所以,旋转,缩放,剪切和对称这四种变换都是线性变换
当把左图中的图形平移了tx,ty ,图中任意一点的坐标都可以用如下公式表示
会发现,平移变换的矩阵形式不能满足上面第5点中的形式(后面多了个tx和ty的尾巴),所以,平移不是一个线性变换
当一个图形通过矩阵M进行了变换之后,又想要恢复成之前的状态,这时候就需要进行逆变换操作,逆变换操作对应的是矩阵M逆矩阵
在平移、旋转、缩放、剪切和对称变换中,只有平移变换是一个例外,为了将平移变换也写成线性变换的形式,所以引入了齐次坐标
齐次坐标就是将一个原本是n维的向量或者点扩展成n+1维的向量或者点
这样的话,平移变换就也符合5中的线性形势,也是一个线性变换了
通常,先进行一个线性变换再进行一个平移变换的这种形式统称为仿射变换
上述例子中,只有两个变换矩阵,当变换次数变多时,变换矩阵也变多,对应的形式如下
正常来说,旋转都是按照原点进行逆时针旋转,所以此时可以先将图形平移至原点,再逆时针旋转一定的角度,最后再平移值目标位置。过程如下
根据1.8中的一般性公式,变换顺序是平移->旋转->平移,可以表示为
参考
GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili
欢迎大家评论交流,作者水平有限,如有错误,欢迎指出