Skip to content

变换

模型变换

01.

缩放

[xy]=[sx00sy][xy]

切变

[xy]=[1a01][xy]

02.

旋转

R_θ=[cosθsinθsinθcosθ]

推导:

03.

线性变换(Linear Transforms)

x=ax+byy=cx+dy[xy]=[abcd][xy]x=Mx

齐次坐标

平移变换的特殊性:平移变换不是线性变换,想统一处理所以引入齐次坐标。

x=x+txy=y+ty[xy]=[abcd][xy]+[txty]

特殊性:平移变换不是线性变换,想统一处理所以引入齐次坐标。

方法:增加一个维度。

  • 2D:point=(x,y,1)T
  • 2D:vector=(x,y,0)T

注:向量具有平移不变性,所以此处 1 0

平移的矩阵表示:

(xyw)=(10tx01ty001)(xy1)=(x+txy+ty1)(xyw)isthe2Dpoint(x/wy/w1)

04.

仿射变换

仿射变换 = 线性变换 + 平移变换

(xy)=(abcd)(xy)+(txty)

使用齐次坐标

(xy1)=(abtxcdty001)(xy1)

05.

2D转换

  • 缩放
S(sx,sy)=(sx000sy0001)
  • 旋转
R(α)=(cosαsinα0sinαcosα0001)
  • 平移
T(tx,ty)=(10tx01ty001)

06.

逆变换

M1

07.

复合变换

先平移后旋转 与 先旋转后平移

矩阵乘法不满足交换律

R45T(1,0)T(1,0)R45

注意,矩阵是从右向左应用的

T(1,0)R45[xy1]=[101011001][cosαsinα0sinαcosα0001][xy1]

分解复合变换

T(c)R(α)T(c)

08.

3D Transformations

  • 3D:point=(x,y,z,1)T
  • 3D:vector=(x,y,z,0)T

使用4x4的矩阵:

(xyz1)=(abctxdeftyghitz0001)(xyz1)

问题:线性变换先还是平移变换先? 答:看矩阵运算顺序[04.仿射变换]。

视图变换