图形学笔记3 变换矩阵 transformation

变换矩阵

之前很奇怪, 为什么按比例缩放不直接乘一个系数, 而是乘一个矩阵, 这样不是计算起来更慢吗, 其实这里面的原因是为了和其他操作统一起来

在二维的情况下

transform matrix样式为:

\[ \left[ \begin{matrix} a & b \\ c & d \end{matrix} \right] \]

变换矩阵就相当于矩阵右乘得到的线性组合

image-20230407215125527

二维的理解方式是

$$

=

x+ y= + = $$ 普通的理解方式(直接):

image-20230407215903397

也就是说, 有两种理解方式

第一种理解方式, 直接按照矩阵乘法方式去理解, 第一步 用a和b算出来x' 第二步用 c和d算出来y'

第二种理解方式 用矩阵右乘的线性组合去理解, 第一步用a和c算出来半个x'和y' 第二步用b和d算出来另外半个x'和y' 然后加在一起

下面是一些例子

等比例缩放

image-20230407210926847

首先是最常用的, 主对角线上的缩放因子分别是对图片的x和y方向进行缩放

不等比例缩放

下面的例子是两个缩放因子不相等的情况(不按照原图比例的缩放Non-uniform):

image-20230407211312877

image-20230407211128412

轴对称变换

还有一个例子, 那就是轴对称

image-20230407211457875

副对角线在上面的情况下都是0, 但是也有不是0的情况

切变shear

那就是带有线性拉伸的"切变"(shear)变换:

image-20230407212103771

分析流程: 首先y都没变化 所以第二行可以确定是0和1

然后观察到拉伸程度是线性变换的, 也就是说, 拉伸相同角度的话, 距离原点越远, 拉伸的长度会越长, 因此x的变换是一个基于拉伸长度/拉伸角度的表达式

为了方便, 我们用最终拉伸长度来表达每个点的拉伸长度, 因为他们(矩形的左边那条边)是在一条直线上的, 所以拉伸是等比例的

所以最终变换矩阵如图所示

上述研究过程中的思考方法

学习到的思考方法: 为了写出一个变换, 我们需要观察四组原图和变换后图的点的关系, 变换后的点的位置既可能与变换前的x有关也可能与y有关, 也可能同时与x和y有关

旋转变换

如果不给出旋转中心点和方向, 默认中心点是原点, 方向是逆时针

这里是根据角度旋转, 还有一种旋转方式是, 从坐标轴旋转到目标向量位置, 参见笔记4下

image-20230407213055695

image-20230407213206276

\[ \left[ \begin{matrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{matrix} \right] \]

齐次坐标与平移变换

首先关注到平移变化

image-20230408134736266

不能够用单一的变换矩阵描述, 必须要加个常数

为了统一平移变换和旋转、缩放等变换,引入齐次坐标,用三维的数据表达二维的点

其次坐标的最后一维度的变量本质上是一个分母

image-20230408134927352

下图是一个形象描述(https://www.zhihu.com/question/59595799)

image-20230408135007009

这样就可以统一平移变化, 不需要加一个常数矩阵,只需要像旋转变换那样乘以一个齐次坐标下的矩阵就可以了:(仿射变换转换成矩阵乘法)

image-20230408135129560

需要注意的一点是, 在齐次坐标系中, 点的坐标的w值都为1, 因为w相当于分母,w等于1的话,相当于除1,等于其本身

但是为什么向量的w值都为0?

首先需要知道:齐次坐标不是我们中学和大一阶段学习的欧几里得几何,他属于非欧几何,首先需要证明非欧几何引理1:平行线交于一点,求该点坐标

证明过程:http://www.songho.ca/math/homogeneous/homogeneous.html

image-20230408135636923

另外再折腾一句

image-20230408140117325

这里w所确定的平面,是映射出来的,他不完全等同于xy确定的平面然后平移过去

既然证得平行线相交于点(x,y,0)所以我们定义向量的w值是0,因为向量的本质是一组平行线

另外还需要注意的是,如果定义点的w为1,向量的w为0,可以很好的满足:

image-20230408135951557

还需要指出的是,点加上点,在齐次坐标中相当于求得两点之间的中点,因为w值变成2了

所以在其次坐标中,求中点时避免了直接运算除法

阶段性总结:齐次坐标下的 缩放、旋转、平移

image-20230408140920342

变换的合成

image-20230408142050039

image-20230408142159863

矩阵的运算没有交换律但是有结合律

所以TRA转换成T(RA)离坐标矩阵近的先被计算

当然,也可以事先把所有需要的矩阵乘起来,变成单一的变换矩阵

image-20230408142814258

逆变换和逆矩阵

(待添加)

三维空间的拓展

齐次坐标表示如下

image-20230408143001176

变换矩阵通项公式:

image-20230408143044373

下节课讲解细节

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2019-2024 kier Val
  • Visitors: | Views: