变换
- 模型变换(Modeling)
- 视图变换(Viewing)
2D变换
缩放


[x′y′]=[sx00sy][xy]
反射(对称)

[x′y′]=[−1001][xy]
切变

纵坐标不变,水平变化
[x′y′]=[10a1][xy]
旋转
默认情况下绕(0, 0)点旋转,逆时针旋转

Rθ=[cosθsinθ−sinθcosθ]
线性变换

齐次坐标
为什么需要齐次坐标?
平移变换

x′=x+txy′=y+ty
平移无法表示成矩阵形式
[x′y′]=[acbd][xy]+[txty]
平移操作不属于线性变换
增加一个维度
- 2D point=(x,y,1)T
- 2D vector=(x,y,0)T


平移矩阵表示
⎝⎛x′y′w′⎠⎞=⎝⎛100010txty1⎠⎞⋅⎝⎛xy1⎠⎞=⎝⎛x+txy+ty1⎠⎞
放射变换(Affine Transformations)
Affine map = linear map + translation
(x′y′)=(acbd)⋅(xy)+(txty)
使用齐次坐标
⎝⎛x′y′1⎠⎞=⎝⎛ac0bd0txty1⎠⎞⋅⎝⎛xy1⎠⎞

逆变换

组合变换

一个复杂变换可以由多个简单变换组成,变换的顺序至关重要(矩阵不满足交换律)。

变换分解

3D变换
齐次坐标
- 3D point = (x,y,z,1)T
- 3D vector = (x,y,z,0)T

矩阵表示
⎝⎛x′y′z′1⎠⎞=⎝⎛adg0beh0cfi0txtytz1⎠⎞⋅⎝⎛xyz1⎠⎞
闫令琪 <<现代计算机图形学入门>>