图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)

1.变换

1.1 什么是变换?

变换(Transform)是计算机图形学中非常重要的一部分。变换包含模型变换(Modeling transform)以及视图变换(View transform)。模型变换指的是变换模型(被拍摄物体)的位置,大小和角度;视图变换指的是变换照相机的位置和角度。从相对运动的角度来看,两种变换是可以相互转化的。

1.2 模型变换

1.2.1 二维变换

  1. 缩放变换

缩放变换(Scale)中,如果一个图片以原点 (0, 0) 为中心缩放 倍。那么点 (, ) 变换后数学形式可以表示为
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第1张图片
写成矩阵形式为:
在这里插入图片描述
当然,我们也可以给 x 轴和 y 轴不同的缩放倍数 和 。在非均匀情况下,缩放变换的矩阵形式为
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第2张图片

  1. 反射变换

反射变换(Reflection)指的是图片对着 x 轴或者 y 轴做对称变换。对于图片上的点 (, ) 在经过 x 轴
的对称反射变换后,数学形式可以表示为:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第3张图片
表示成矩阵形式为:
在这里插入图片描述
同理可以得到 y 轴对称反射变换后的变换矩阵为:
在这里插入图片描述
沿原点反射变换的变换矩阵为:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第4张图片

  1. 切变变换

切变变换(Shear),指的是在物理学上指的是两个距离很近、大小相等、方向相反的平行力作用于同一物体上所引起的形变。使用示意图可以更直观的去表示什么是切变。如图2.2所示,是图片在 x 轴方向上发生了切变。从图中我们可以看出所有点在 y 轴上的坐标不变,在 x 轴上的坐标满足: = 0 上的点,x 轴坐标不发生变化; = 1 上的点水平方向上移动了 个长度。因此对于任意一个点来说,水平方向上移动长度为。
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第5张图片
切变的矩阵变换可以写作:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第6张图片

  1. 旋转变换

我们默认旋转变换(Rotate)都绕着原点 (0, 0) 旋转,并且默认旋转方向为逆时针方向(逆时针方向旋
转角度值为正,顺时针旋转角度值为负)。旋转变换的推导过程比较复杂(见后续推导过程)。结论如下:当一个点 (, ) 绕着原单 (0, 0) 旋转 角时,变换矩阵可以表示为:图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第7张图片
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第8张图片

  1. 线性变换

对于任何一种变换如果可以写作:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第9张图片
矩阵形式可以表示为:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第10张图片
那么我们认为这种变换是线性变换(Linear transformation)。

2. 齐次坐标

  1. 平移变换

平移变换(Translation)相比于以上的线性变换有特殊的地方。平移变换的数学形式为:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第11张图片
这种数学表示不能写作线性变换的矩阵形式,只能记作:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第12张图片
说明平移操作不是线性变换。但是我们不希望把平移操作看作特殊变换,因此需要把这些变换统一起
来,就引入了齐次坐标。

  1. 齐次坐标的引入

为了统一变换操作,我们引入一个新的维度。对于二维的点 (, ) 我们可以增加一个维度,对于 2 维的
点可以表示为 (, , 1)2 维向量的 (, , 0)。因此,一个点的平移可以用矩阵表示为:

图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第13张图片
为什么点补充维度大小为 1,但是向量补充维度大小为 0?

对于向量来说,平移变换不应该使向量的结果发生变化。因此补充维度为 0 的时候可以屏蔽
平移带来的影响。
对于加入齐次坐标的点和向量满足:

  • 向量 + 向量 = 向量
  • 点-点 = 向量
  • . 点 + 向量 = 点
  • 点 + 点 = 两个点中点
    对引入齐次坐标的点的扩充定义如下:
    图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第14张图片

因此一个点加上另一个点的结果是两个点的中点。引入了扩充定义点和向量的加法是有意义的。

  1. 仿射变换

仿射变换(Affine)包含线性变换与平移变换。可以用矩阵表示为:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第15张图片
使用齐次坐标后可以写作:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第16张图片

  1. 逆变换

任何变换的逆变换(Inverse transform)的变换矩阵 的逆矩阵 −1 表示。

  1. 变换的组合与分解

变换的组合
可以用矩阵的乘法进行变换的组合(Transform compose)。变换的先后顺序不同,变换的结果不同。矩
阵和向量的乘法是从右到左依次相乘,从右到左依次应用变化。如果我们要依次应用变化 1, 2, 3, ⋯,写成矩阵形式:

图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第17张图片
根据矩阵运算的结合律, 我们可以先把变换矩阵乘在一起,接下来把这个矩阵的乘积和向量相乘。可
以用一个矩阵表示一个复杂的变换。

变换的分解
所有的复杂变换都可以分解成多个普通的变换。为了使某个图像沿着某个点 变换,我们可以分解为
以下步骤:

  1. 把中心点 移动到原点
  2. 进行旋转;
  3. 把中心点(0,0)移动到原来的中心点

用变换矩阵表示为:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第18张图片

3. 三维变换

3 维变换可以类比于 2 维变换得到引入齐次坐标的点和向量,3 维的点可以表示为 (, , , 1),3 维向量可以表示为 (, , , 0)。当 ≠ 0 的时候:(, , , ) = (/, /, /, 1)

使用 4 × 4 的矩阵来表示仿射变换:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第19张图片
左上角表示是一个3✖3的线性变换
在仿射变换中的变换矩阵表示先线性变换在平移

  1. 3 维变换中缩放变换

3 维变换中缩放变换的变换矩阵:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第20张图片

  1. 维变换中的平移变换

三维变换中平移变换的变换矩阵:
图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第21张图片
3. 三维变换中的旋转变换

当空间内的物体绕着 x 轴,y 轴或者 z 轴旋转的时候,变换矩阵为:

图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第22张图片
对于一般性的旋转问题,可以用简单的旋转描述复杂的旋转。用 x 轴,y 轴和 z 轴上的旋转来定义旋转:

在这里插入图片描述

这三个角就被称作欧拉角(Euler angles)

  1. 罗德里格斯旋转公式
    绕着旋转轴 n 旋转角度 。默认旋转轴是过原点的,对于不过原点的条件可以将图形平移到过原点的
    旋转轴上,旋转后再平移回去。罗德里格斯旋转公式(Rodrigues’ Rotation Formula)是:
    图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)_第23张图片

你可能感兴趣的:(计算机图形学,矩阵,线性代数,算法)