Skip to content

Transformation ​

2D 变换 ​

缩放 ​

[x′y′]=[sx00sy][xy]

齐次坐标形式:

[x′y′1]=[sx000sy0001]⏟R(α)[xy1]R(−α)=R(α)⊤=R(α)−1

切变 ​

shear

[x′y′]=[1a01][xy]

旋转 ​

shear

[x′y′]=[cos⁡θ−sin⁡θsin⁡θcos⁡θ][xy]

齐次坐标形式:

[x′y′1]=[cos⁡θ−sin⁡θ0sin⁡θcos⁡θ0001]⏟S(sx,sy)[xy1]

平移 ​

仿射变换(Affine Transformations)形式:

[x′y′]=[1001][xy]+[txty]

齐次坐标形式:

[x′y′w′]=[10tx01ty001]⏟T(tx,ty)[xy1]

齐次坐标(Homogenous coordinates) ​

在齐次坐标中,一个 2D 点可以表示为 (x,y,1)⊤,一个 2D 向量可以表示为 (x,y,0)⊤;

在齐次坐标中,[xyw] 代表的是一个 2D 点 [x/wy/w1],w≠0

这样就有:

  • vector + vector = vector
  • point - point = vector
  • point + vector = point
  • point - point = point (中点)

Complex Transforms ​

如何绕指定的点旋转?

shear

T(c)⋅R(α)⋅T(−c)

3D 变换 ​

[x′y′z′1]=[abctxdeftyghitz0001][xyz1]

缩放 ​

S(sx,sy,sz)=[sx0000sy0000sz00001]

平移 ​

T(tx,ty,tz)=[100tx010ty001tz0001]

旋转 ​

shear

Rx(α)=[10000cos⁡α−sin⁡α00sin⁡αcos⁡α00001]Ry(α)=[cos⁡α0sin⁡α00100−sin⁡α0cos⁡α00001]Rz(α)=[cos⁡α−sin⁡α00sin⁡αcos⁡α0000100001]

基于欧拉角定义: ​

Rxyz(α,β,γ)=Rx(α)Ry(β)Rz(γ)

绕任意轴 n 旋转,根据罗德里格斯旋转公式 ‌(Rodrigues' rotation formula):

R(n,α)=cos⁡(α)I+(1−cos⁡(α))nn⊤+sin⁡(α)[0−nznynz0nx−nynx0]⏟N