Games101-系列课程笔记
Lecture 03 Transformation
本篇博客图片来自Games101-闫令琪(Lecture 03)讲义,有兴趣的小伙伴可前往GAMES101官网下载相关内容。GAMES101官网
为什么学习变换
- 模型变换(Modeling)
- 视口变换(Viewing)
缩放(Scale)变换
缩放变换可以是对图形等比例缩放,也可以是对某一轴进行缩放。
剪切(Shear)变换
旋转(Rotation)变换
其中,θ代表逆时针旋转角度。
旋转默认是以原点为旋转中心,逆时针方向为旋转角正方向。
线性变换
- 定义:可以将变换后的坐标用变换前的坐标线性表示的一种变换。
- 代数表达:
- 矩阵表达:
平移变换
- 矩阵表达:
形如如下形式的变换称为仿射变换,平移是仿射变换的一种特殊形式(a=1,b=0,c=0,d=1):
我们发现仿射变换前后的坐标无法表达成如下形式(即线性变换形式):
因而此时需要使用齐次坐标(Homogeneous Coordinates)。
齐次坐标
- 何为齐次坐标:
常规表达一个二维向量和点一般是按照如下形式:
齐次坐标将向量和点的维度多扩展一维(二维->三维,三维->四维),扩展后向量最后一维值为0,点最后一维值为1。即二维向量和点的齐次坐标可表示为:
- 齐次坐标的其他规则:
- 扩展出的那一维的值按如下运算规则计算:
- 如果扩展出的维度值不为0或1,可将齐次坐标看成:
回归到前面的问题,仿射变换如何只用一个变换矩阵来表示?答案很简单,利用齐次坐标就可以轻松解决:
其中,a、b、c、d是线性变换的矩阵元素,tx和ty分别是x和y方向的位移量。
二维缩放矩阵、旋转矩阵、平移变换矩阵的齐次坐标表达如下:
- 扩展出的那一维的值按如下运算规则计算:
复合(Composite)变换
- 复合变换如何表示:
考虑如下问题:仅用旋转和平移将左图变为右图,要经历怎样的变换顺序:
由于旋转默认都是以坐标轴原点为旋转中心,不难想到应该先将左图逆时针旋转45度后再向右平移一个单位。整个过程的矩阵表达如下:
- 复合变换矩阵的综合表达:
- 逆复合变换矩阵过程:
过程如上,分三步:
I. 平移到原点
II. 旋转
III. 平移到原图形位置
参考
[1]. GAMES101_Lecture_03.pdf
[2]. Shirley P , Marschner S R . Fundamentals of Computer Graphics[M]. AK Peters, 2005.