Skip to content

Transformation

矩阵乘法理解 ——

  • 代数上,可以看成是方程组的系数抽成矩阵形式
  • 几何上,直接把矩阵看成是做了一次线性变化(基底的变化)
    • 可以仅通过追踪基底的变化来找到对应的变化矩阵

Modeling Transformation

线性变化

x=ax+by,y=cx+dy

提取成

[xy]=[abcd][xy]

Scale Matrix

[xy]=[sx00sy][xy]

sx=sy=s,则表示在二维空间下均匀缩放 s 倍。 若二者不相等,则表示在 xy 轴上分别缩放 sxsy 倍。

Reflection Matrix

关于 y 轴反射

[xy]=[1001][xy]

理解为,x轴方向相反,但是y轴不变

Shear Matrix

原先的 i, j 不互相垂直

Rotation Matrix

(绕原点进行旋转,默认逆时针)

Rθ

[xy]=[cosθsinθsinθcosθ][xy]

平移变化

[xy]=[xy]+[txty]

齐次坐标

把平移和线性变换统一为仿射变换,并用一次矩阵乘法表示。

对于每一个点 (x,y),增加一个维度表示为 (x,y,1)。 对于每一个向量 (x,y),增加一个维度表示为 (x,y,0)

向量最后一个维度为 0,因此不会受到平移分量的影响;点最后一个维度为 1,因此会受到平移作用。

推广到一般形式,当 w0 时,齐次坐标 (x,y,w) 表示欧氏点

(xw,yw),

并且对于任意 λ0(x,y,w)(λx,λy,λw) 表示同一个点。

例如,对于一个点

[xyw]=[abtxcdty001][xy1]

三维齐次坐标系同理

Viewing Transformation

相机

如何确认相机——

  • Position —— e
  • LookAt —— g
  • Up —— t

定义 ——(规避相对运动之类的麻烦,简化模型

  • 相机位于(0,0,0)
  • 相机沿着z 方向看
  • 相机向上方向为y
  • 移动的是Object

投影

正交投影(Orthographic Projection)

将对应z轴方向拿掉,就压缩到了(x, y)平面上;再scale到[1,1]上,就形成了正交投影(最简)

正式做法:

  1. 讲锚点移动到原点
  2. 缩放成一个单位立方体 所以——得到变化矩阵为(假设锚点在中心)
Mortho=[2rl00002tb00002nf00001][100r+l2010t+b2001n+f20001]

透视投影(Perspective Projection)

把原平面“挤压”成和近平面一样大小,然后做一次正交投影即可

Released under the MIT License.