问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

图形学基本线性变换:缩放、旋转、平移、切变、镜像

创作时间:
作者:
@小白创作中心

图形学基本线性变换:缩放、旋转、平移、切变、镜像

引用
CSDN
1.
https://blog.csdn.net/qq_35635374/article/details/145532827

图形学中的线性变换是计算机图形学、游戏开发、计算机视觉等领域的核心技术之一。本文详细介绍了图形学中的基本线性变换,包括缩放、旋转、平移、切变、镜像等变换,并通过矩阵运算的方式进行了深入的解释。

线性变换定义

变换都可以使用以下表达式表示:

使用矩阵形式表示为:

继而表示为:输出坐标 = 变换矩阵 × 输入坐标 的形式

满足以上条件的变换称为线性变换

(1)缩放变换

如果想把一个图形缩小为原来的0.5倍,那么就需要x坐标变为0.5倍,y坐标也变为0.5倍,可以用以下表达式表示:

这两个表达式可以用矩阵的形式表示如下:

上面的矩阵表达式针对x轴和y轴进行相同比例的缩放,实际中两个方向上的缩放可能不尽相同,例如x轴缩放为0.5倍与轴不缩放,这时只需要把矩阵表达式稍作修改即可:

Sx表示在x轴方向上缩放的倍数,Sy表示在y轴方向上缩放的倍数

缩放变换效果如下所示:

(2)镜像变换

将物体以y轴进行镜像,那么可以用以下表达式表达:

也可以用矩阵形式的表达:

同理, 一些其他镜像矩阵如下:

镜像变换效果如下所示:

(3)剪切变换

剪切变换好像是拽着图形的右上角沿着x轴向右拉了一段距离,称为剪切变换。

用矩阵形式的表达为:

剪切变换效果如下所示:

(4)原点旋转变换

默认指的是绕原点(0,0)逆时针旋转,下图是物体绕原点逆时针旋转θ角的示意图。

写成矩阵的形式:

(5)非原点的旋转变换

我们学会了物体绕原点旋转,对于一个不是绕原点旋转的变换需要换个思维实现,实现过程分三步:

1、将物体旋转要绕的点移动到原点,

2、移到原点后做旋转变换

3、旋转变换完成后平移到原来的位置

这个过程用一个表达式表示:

矩阵变换作用在物体上的顺序是从右到左,所以上面表达式表示,先平移T(-c)到原点,然后旋转R(α),最后平移到原来位置T(c),一定要注意先后顺序

(6)平移变换(仿射变换)

把一个图形沿x轴平移tx,沿y轴平移ty,可以用以下表达式表示:

它无法用前面熟悉的线性变换矩阵的形式表示,也就是说平移变换是非线性变换。只能用以下矩阵形式表示,上面把这种变换称为非线性变换,叫仿射变换。

引入齐次坐标把平移变换也能够像其他变换一样用同样的形式表示,使用起来更加便捷统一。

平移变换齐次坐标表示:

平移变换原本是仿射变换,通过引入齐次坐标后,可以使用线性变换的形式表示

这样我们的目的就达到了,把平移变换也表示为一个矩阵乘以一个坐标的线性变换的形式。

仿射变换效果如下所示:

(7)逆变换(逆矩阵)

一个物体做一个变换,变换完以后要恢复到原来的位置,变换回原来的位置的过程称为逆变换,逆变换在数学上的实现是乘以变换矩阵的逆矩阵。

(8)组合变换(进行平移和旋转变换,注意矩阵乘法结合律)

上图中有两套组合变换:

先平移(1,0),再旋转45度

先旋转45度,再平移(1,0)

你会发现虽然都作了相同的变换,但是变换的顺序不同最终的结果也不同,是因为矩阵A乘矩阵B与矩阵B乘矩阵A的结果不同。

组合变换矩阵相乘应用的顺序

上图中A1,A2一直到An表示变换矩阵,一个点进行组合变换时,应用在该点的矩阵是从右到左。即矩阵An乘An-1一直乘到A1,实际应用到点的顺序是A1,A2一直到An

矩阵乘法结合律使用。

我们知道矩阵相乘交换律不适用,但是适用结合律,既然适用有什么妙用,接下来看看

一个点做多个变换即多个矩阵相乘再乘以这个点,根据矩阵乘法结合律,可以先把这些矩阵相乘,乘完在与这个点相乘,只要保证矩阵相乘的顺序不变即可

(9)刚体变换(刚体变换矩阵)

刚体变换定义

只有平移和旋转组成的变换称为刚体变换,并没有改变的图形的形状

举例:

一个物体先旋转45度在x轴方向上平移一个单位,这样的变换称为刚体变换,刚体变换的本质是一个物体的位置和角度发生了变换,物体本身的形状并不发生任何变化

假如有一个刚体变换先逆时针旋转45度,在沿x轴平移1个单位,那么这个变换可以用下面的矩阵表示:

上面的变换是先进行线性变换-旋转,在进行仿射变换-平移,这时可以把两个变换的矩阵合并为一个矩阵,之所以可以合并因为在同一个矩阵同时表示两种变换时,会先进行线性变换再进行仿射变换,这与我们提到的变换顺序是一致的,两种变换合并为一个矩阵用来表示刚体变换,这个矩阵称为刚体变换矩阵

刚体变换的逆变换

二维刚体变换的逆变换矩阵,只需要把原变换矩阵左上角2×2矩阵(上图蓝色框部分)转置,右侧最后一列(上图红色框部分)的平移分量符号取反。就可以得到刚体变换的逆变换矩阵

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号