Skip to content

Transformation

矩阵乘法理解 ——

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

Modeling Transformation

线性变化

x=ax+by,y=cx+dy

提取成

[xy]=[abcd][xy]

Scale Matrix

[xy]=[sx00sy][xy]

sx=sy 则表示均匀在二维空间下缩放 s 倍 不相等,则表示分别在对应轴缩放 s

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,0) 对于每一个向量 (x,y) 不妨增加一个维度 (x,y,1)

关于最后一个维度添加了0或者1,很好的满足了平移不变性等向量特性

推广,对于所有的二维平面下的点,都有(x,y,w) 表示(xw,yw,1) 其中w0

例如,对于一个点

[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. 缩放成一个单位立方体 所以——得到变化矩阵为(假设锚点在中心)
Moroth=[2rl00002tb00002nf0][100r+l2010t+b2001n+f20001]

透视投影(Perspective Projection)

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

Released under the MIT License.