变换矩阵的定义

453 阅读2分钟

在计算机图形学和线性代数中,变换矩阵是一种工具,用于在空间中对点或对象进行各种线性变换,比如平移、旋转、缩放、反射、剪切等。它使用矩阵乘法来表示这些变换,因而具有高效且简洁的特性。


常见的变换类型

1. 平移(Translation)

  • 平移用于将点或对象从一个位置移动到另一个位置。
  • 平移矩阵(假设二维空间):

截屏2024-12-02 14.32.48.png

  • (tx, ty) 是平移量。
  • 平移效果:

截屏2024-12-02 14.37.50.png

2. 缩放(Scaling)

  • 缩放改变点或对象的大小。
  • 缩放矩阵(二维):

截屏2024-12-02 14.38.20.png

  • (sx, sy) 是 X 和 Y 轴方向的缩放因子。
  • 缩放效果:

截屏2024-12-02 14.39.14.png

3. 旋转(Rotation)

  • 旋转用于绕某个点(通常是原点)旋转对象。
  • 旋转矩阵(二维):

截屏2024-12-02 14.40.03.png

  • θ是旋转角度。
  • 旋转效果:

截屏2024-12-02 14.40.40.png

4. 剪切(Shearing)

  • 剪切用于倾斜对象,使其沿某个方向拉伸或压缩。
  • 剪切矩阵(二维):

截屏2024-12-02 14.42.58.png

  • (shx, shy) 是剪切因子。

齐次坐标和 3x3 矩阵的必要性

  • 二维中的问题:直接使用 2x2 矩阵只能表示线性变换(如旋转、缩放、剪切)。然而,平移并不是线性变换,无法用 2x2 矩阵表示。
  • 齐次坐标:通过引入一个额外的维度(即使在二维空间中,也将点扩展为 ([x, y, 1])),可以将平移也纳入矩阵运算。这就是为什么在二维变换中常使用 3x3 矩阵

三维变换

1. 平移

  • 平移矩阵(假设三维):

截屏2024-12-02 14.43.30.png

2. 缩放

  • 缩放矩阵:

截屏2024-12-02 14.44.14.png

3. 旋转

旋转围绕 X、Y、Z 轴的旋转矩阵分别为:

  • 绕 X 轴旋转

截屏2024-12-02 14.45.16.png

  • 绕 Y 轴旋转

截屏2024-12-02 14.46.10.png

  • 绕 Z 轴旋转

截屏2024-12-02 14.46.29.png


变换矩阵的组合

  • 在实际应用中,经常需要组合多个变换(如先缩放后旋转再平移)。这种组合可以通过矩阵乘法实现: [ M_{\text{组合}} = T \cdot R \cdot S ]
    • 组合的顺序非常重要!矩阵乘法不满足交换律,因此变换顺序会影响结果。

实际用途

  1. 图形学与渲染

    • 在 3D 渲染中,变换矩阵用于物体的建模变换(Model Transformation)、观察变换(View Transformation)和投影变换(Projection Transformation)。
    • 例如,Unity 和 OpenGL 中,变换矩阵广泛用于定义对象的世界坐标和相机视角。
  2. 动画

    • 变换矩阵用于对对象执行动态操作,如旋转、移动或缩放。
  3. 物理模拟

    • 变换矩阵可以模拟刚体运动和变形操作。
  4. 数据处理

    • 在数据可视化中,矩阵变换用于坐标系的变化和图表的缩放。

总结

变换矩阵是对对象在空间中进行位置和形状操作的数学工具,它将平移、旋转、缩放等操作统一到矩阵乘法中,通过高效的计算实现灵活的空间操作,是计算机图形学的核心概念之一。