用矩阵表示图形旋转缩放变换

二维图形

1.缩放

假设x和y都缩小到0.5倍

在这里插入图片描述
那新的x’ = 0.5x 新的y’ = 0.5y 我们现在通用化一下,假设x方向缩放为Sx,y方向缩放为Sy,并且用矩阵的方法可表示如下
在这里插入图片描述
-1 <= Sx <= 1, -1 <= Sy <= 1

2.斜切

在这里插入图片描述
我们先假设y的高度是1,顶部x方向移动距离是a。
y始终是不变化的
对于顶部的线,x’ = x + a;
对于底部的线, x’ = x;
对于任意位置,x’= x + a* y ;
转为矩阵
在这里插入图片描述
假设y的高度是y0,顶部x方向移动距离是a0。那a = a0 / y0;

这钟斜切是保证一个方向的坐标不变的,还有一种如下

在这里插入图片描述
相当于把矩形推到
对于顶部线x’ = x + sinα * y; y’ = cosα * y;
显然对于任意一点,也是如上公式
那转换为矩阵表示为
在这里插入图片描述

3.旋转

在这里插入图片描述
假设有一个矩阵可以描述旋转变换
在这里插入图片描述
然后根据特殊点来求解A、B、C、D;
在这里插入图片描述
先根据特殊点(1, 0)得到如下关系
在这里插入图片描述
求解后可得
在这里插入图片描述
同理再根据特殊点(0,1)求解B、D的值

最后可得
在这里插入图片描述

至此我们知道旋转和缩放和斜切都可以用如下形式表示
在这里插入图片描述

4.平移

在这里插入图片描述
我们假设x方向移动了tx; y方向移动了ty, 则
在这里插入图片描述
那就不能表示为
在这里插入图片描述
只能表示成
在这里插入图片描述

5.小结

那旋转缩放斜切平移通用表达式就只能表示为
在这里插入图片描述
但我们不想对平移特殊处理,只想用一个矩阵表示,后面不用加

此处引入齐次坐标
定义 二维点和向量如下
在这里插入图片描述
那平移就可以表示为
在这里插入图片描述
通用表表达式则变为
在这里插入图片描述
至此,所有变换都能用一个矩阵来表示了

6.组合

那如何用变换矩阵表示下面这个图呢

在这里插入图片描述
只要先旋转再平移即可
在这里插入图片描述
在这里插入图片描述

那可不可以先平移再旋转呢?
不行,因为旋转是以原点作为中心点的
先平移再旋转会得到如下结果
在这里插入图片描述
不在原点的旋转可以先移回原点,旋转后再移回去
在这里插入图片描述

三维图形

此处也引入齐次坐标
定义三维的点和向量为
在这里插入图片描述
通用变换为
在这里插入图片描述

【注】:文章资料来源于【现代计算机图形学入门-闫令琪】

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值