二维变换
线性变换可用矩阵表示,即
[x′y′]=T[xy]
缩放 Scale
T=[sx00sy]
镜像 Reflection
T=[rx?−1:100ry?−1:1]
切变 Shear
T=[10a1]
旋转 Rotation
T=[cosθsinθ−sinθcosθ]
旋转矩阵推理过程
设T=[ACBD]
首先带入(1, 0)点,旋转θ后坐标为(cosθ, sinθ), 即
A⋅1+B⋅0=cosθ
C⋅1+D⋅0=sinθ
得:
A=cosθ,C=sinθ
同理, 带入(0, 1)点, 得出
T=[cosθsinθ−sinθcosθ]
齐次坐标
为什么引入?
当前矩阵无法直接表示平移操作, 而是需要额外加另一个矩阵, 形如:
[x′y′]=[acbd][xy]+[txty]
解决思路
添加一个坐标(w), 即:
2D 点: (x, y, 1)
2D 向量: (x, y, 0)
使用矩阵表示:
⎣⎢⎡x′y′1⎦⎥⎤=⎣⎢⎡ac0bd0txty1⎦⎥⎤⎣⎢⎡xy1⎦⎥⎤
为什么加入1和0
保证如下几点
- 向量 + 向量 = 向量 -> 向量加法
- 点 - 点 = 向量 -> 向量定义
- 点 + 向量 = 点 -> 点平移
- 点 + 点 = ?? -> 无意义
扩充定义
⎣⎢⎡xyw⎦⎥⎤=⎣⎢⎡x/wy/w1⎦⎥⎤
所以, 点 + 点在齐次坐标表示下, 为该两个点的中点
将线性变换和平移变换, 统称为仿射变换
逆变换
将变换的操作恢复原样的变换; 数学上, 变换后, 乘以该变换矩阵的逆矩阵
矩阵性质在图形学中的应用
- 矩阵乘法不满足交换律, 即变换的顺序会影响最终的结果
- 矩阵乘法满足结合律, 可以合并变换以优化性能, 即An(...(A2(A1⋅x)))=(An...A2⋅A1)⎣⎢⎡xy1⎦⎥⎤
变换的分解
如: 以任意点为中心旋转
- 平移是中心点位于原点
- 旋转
- 将图形平移回原位置
即 T(c)R(α)T(-c)
系列说明
本系列文章 是 @Lingqi Yan(闫令琪) 教授《现代计算机图形学入门》 视频课程的文字笔记, 方便各位图形学爱好者朋友学习巩固使用
原课程链接: GAMES101: 现代计算机图形学入门
同时, 该教程已上传哔哩哔哩, 链接: GAMES101-现代计算机图形学入门-闫令琪
3D 变换
齐次坐标表示
3D 点 =(x,y,z,1)T
3D 向量 =(x,y,z,0)T
仿射变换
⎣⎢⎢⎢⎡x′y′z′1⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡adg0beh0cfi0txtytz1⎦⎥⎥⎥⎤⋅⎣⎢⎢⎢⎡xyz1⎦⎥⎥⎥⎤
*先应用变换, 再应用平移
系列说明
本系列文章 是 @Lingqi Yan(闫令琪) 教授《现代计算机图形学入门》 视频课程的文字笔记, 方便各位图形学爱好者朋友学习巩固使用
原课程链接: GAMES101: 现代计算机图形学入门
同时, 该教程已上传哔哩哔哩, 链接: GAMES101-现代计算机图形学入门-闫令琪
附
课件源文件: GAMES101_Lecture_03.pdf
哔哩哔哩视频传送门: GAMES101-现代计算机图形学入门-闫令琪