闫令琪计算机图形学GAMES101的b站课程地址:Lecture 03 Transformation_哔哩哔哩_bilibili
图片来自于b站课程截图
1 二维变换
1.1线性变换
通过矩阵可以对图形(/坐标)进行变换操作。
变换后的新坐标可以通过以下表示(维度相同的矩阵):
1.1.1 缩放
S为缩放矩阵,取s=0.5,即可实现将原图像x,y缩小。
也可实现不均匀的缩放:
1.1.2 反转
对x轴取负操作,即可实现反转(以x轴为基准翻转),同理y轴操作可实现上下反转
1.1.3 切变(让图变形)
坐标系中,图案y轴方向值不变(因此缩放矩阵不对y轴进行处理),x轴方向上,图案(整个方形,不是圆形图案)底部不变,顶部向右移动了a。中间位置(鼠标箭头)坐标(a/2,1/2),水平方向移动了a*y个距离。即:新的x=旧的x+ay,因此矩阵S的第0行取值为1,a。
(我的理解:坐标在x轴方向上移动距离沿着t边的斜率变化,推出y=x,x=ay,移动了ay距离。)
1.1.4 旋转
默认绕原点,逆时针。
下图旋转矩阵是什么呢?
旋转矩阵如下:(哇!上难度了。。。)
求旋转矩阵关键在于找到旋转前后的坐标关系(找特殊点)!(b站课程p3的18分)
(下节课补充的内容)那么旋转-角度,矩阵应该如何表示呢?---在旋转中,旋转矩阵的逆=旋转矩阵的转置。-正交矩阵
1.2 平移变换
如果想实现平移变换,应该怎样做呢?--->将x,y平移⬇
在二维坐标系中,只能这样表示(此类表示形式的变换可称为仿射变换):
需要额外加一个向量。。。
能不能将实现这两种变换的方法统一呢?
下面请看⬇
齐次坐标!!!
1.3 齐次坐标
人们发现,将二维的点坐标后添加一个1,二维的向量坐标后添加一个0,如下:
在变换时,依旧用线性变换中---矩阵×向量---的形式,即可实现平移变换:
为什么要把点和向量区别对待呢?-------->因为向量具有平移不变性,当对向量平移处理时,希望他还是他自己(上述式子手算一下就知道了)。
区别对待还能保证以下是正确运算的
向量+向量 = 向量
点-点 = 向量
点+向量 = 点
点+点 = 中点 ,,(例:(1,2,1)+(3,4,1)=(4,6,2)=》(2,3,1)->因为,对于点可以通过除法将w的位置表示成1。
对于以下形式可称之为仿射变换
变换的规律:仿射变换--矩阵最后一行是0,0,1
缩放:斜对角
旋转:小矩阵
平移:最后一列
1.4 逆变换
变换之后再变回去---对应着逆矩阵
1.5 组合变换
复杂的变换可以通过组合简单的变换得到。
1.以下变换如何得到?
先旋转(默认旋转是关于原点的)--->再平移(变换顺序非常重要)
矩阵变换如下,图案上的点先左乘旋转矩阵,再乘平移矩阵
由于矩阵的结合率,仅用3*3的矩阵就可以表示复杂的变换
变换的分解
问题:以任意点c为中心进行旋转 --------可以分解为⬇
1.先把点c移到原点---->所有点都平移到-c
2.旋转
3.再把点移回c
2 三维变换
与二维变换同理
用4*4矩阵,仿射变换(最后一行依旧是0,0,0,1)
如果线性变换,平移变换对应位置都有值,先线性再平移