1、计算机图形学——2D变换与齐次坐标

一、2D变换

1、缩放变换

缩放变换就是将图形上的点的各个维度同时放大或者缩小,比如,讲一个图片的长宽都缩小0.5倍

则缩小之后,新的图片上的点(x', y')可以表示为

用写成矩阵的形式就是

如果长和宽缩放因子不一样,就把缩放因子单独写一下即可

对应的图形就是这样的

2、对称变换

对称变换就是变换前的图片和变换后的图片按坐标轴对称,例如按Y轴的对称变换结果如下

图形上每一点的Y轴坐标不变,但是横坐标都加了个负号

写成矩阵的形式就是这样的

3、剪切变换

剪切变换类似方形变平行四边形变化,但是在变换的过程中,有一个维度的坐标是不变的,比如下面的这个图,虽然图形被向右拉,但是每个点的Y轴坐标是不变的

变换后,最左边的每一条边都在直线y=(b/a)x上,以此类推,变换后,图片生所有的横坐标都移动了(a/b)y,所以,写成公式如下

写成矩阵的形式就是

当b=1时,上述矩阵变为如下形式

4、旋转变换

2D旋转变换一般是指绕着原点逆时针旋转

2D旋转过程如下图所示;

假定下图中正方形的边长为1,并旋转了θ角度,则下图中左上角定点坐标由(0,1)变为(-sinθ,cosθ)。右下角定点(1,0)的坐标分别变为(cosθ,sinθ)

所以,上述过程可以写成以下形式

展开上述矩阵,可得a=cosθ,c=sinθ,b=-sinθ,d=cosθ

所以,旋转矩阵可以写成

而旋转矩阵和他的转置矩阵相乘

结果是个单位矩阵,所以,旋转矩阵的转置矩阵=旋转矩阵的逆矩阵,所以,旋转矩阵是正交矩阵

5、小结

对于旋转,缩放,剪切和对称这四种变换,都可以写成下面的形式

而上述形式被叫做线性变换,所以,旋转,缩放,剪切和对称这四种变换都是线性变换

6、平移

当把左图中的图形平移了tx,ty ,图中任意一点的坐标都可以用如下公式表示

写成矩阵的形式就是

会发现,平移变换的矩阵形式不能满足上面第5点中的形式(后面多了个tx和ty的尾巴),所以,平移不是一个线性变换

7、逆变换

当一个图形通过矩阵M进行了变换之后,又想要恢复成之前的状态,这时候就需要进行逆变换操作,逆变换操作对应的是矩阵M逆矩阵

二、齐次坐标

在平移、旋转、缩放、剪切和对称变换中,只有平移变换是一个例外,为了将平移变换也写成线性变换的形式,所以引入了齐次坐标

齐次坐标就是将一个原本是n维的向量或者点扩展成n+1维的向量或者点

二维空间中的点和向量写成齐次坐标的形式如下

将上面的平移矩阵写成齐次坐标的形式就是

这样的话,平移变换就也符合5中的线性形势,也是一个线性变换了

同理,缩放和旋转也可以写成类似的形式

三、变换的组合

 如上图所示,如何将左图变成有图的样子

做法一:先平移再旋转

很明显,方法一无法满足要求

做法二 :先旋转再平移

方法二OK

通常,先进行一个线性变换再进行一个平移变换的这种形式统称为仿射变换

仿射变换通常可以写成下面的形式

对应的齐次坐标就是

通过这个例子也能看出,矩阵相乘的顺序很重要

上述例子中,只有两个变换矩阵,当变换次数变多时,变换矩阵也变多,对应的形式如下

四、2D变换的一个示例

将左图按照左下点进行旋转的变换矩阵如何表示?

正常来说,旋转都是按照原点进行逆时针旋转,所以此时可以先将图形平移至原点,再逆时针旋转一定的角度,最后再平移值目标位置。过程如下

根据1.8中的一般性公式,变换顺序是平移->旋转->平移,可以表示为

参考

GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值