2D Transforms

Transform in Scale

对于二维平面上的一个点, 将向量变换成原来的倍,只需要左乘缩放矩阵

非均匀缩放:如果对坐标轴上缩放不同比例,只需调整为

关于轴的镜像

Shear Matrix:

竖直方向上移动为0,水平方向的移动;

效果如下

image-20241205114854529

Transform: Rotate

旋转默认绕原点逆时针旋转

旋转矩阵如下:

不难观察到,换句话说旋转矩阵是正交矩阵;

对于一般的旋转矩阵也有旋转矩阵的逆即为其转置

旋转效果如下:

image-20241205115452455

Liner Transforms

对于线性变换

我们只需要左乘一个相同维度的矩阵

为进一步描述平移变换,只需要进一步加上平移量

为进一步描述仿射变换(Affine Transform)

但是这个就不属于线性变化的范畴了,为此我们引入齐次坐标,基于向量的平移不变性,增加一个维度;

一个理解是

vector + vector = vector point - point = vector point + vector = point point + point = ?

在齐次坐标下,将三维点看作二维向量

那么在齐次坐标的观点下,点+点的结果是线段的中点

平移变换可以表示如下

仿射变换可以表示如下

Affine Transformation

在齐次坐标下,这些特殊的仿射变换可以左乘如下矩阵,表达如下:

缩放Scale

旋转Rotate

平移Translation

Inverse Transform

在数学上,逆变换等价于左乘变换矩阵的逆矩阵;

image-20241205122455101

Composite Transform

复杂的变换可以通过简单的变换相乘得到;

乘法的顺序很重要,因为矩阵乘法不满足交换律;

image-20241205122656009

image-20241205122756461

对于仿射变换矩阵从右到左运用以下矩阵,根据结合律,可以先将所有矩阵合成为一个最终矩阵;

反过来也可以将复杂矩阵进行分解,下图是沿任意点旋转的过程

image-20241205123342624

Transform in 3D

试图引入齐次坐标

3D Point =

3D vector =

几乎和2D版本同理,仿射变换如下:

具体来说,

缩放变换

平移变换

旋转变换(分别从x,y,z轴旋转),注意轮换对称性

对于任意旋转,写成三个欧拉角对应的绕轴旋转

对于一个旋转轴和一个旋转角,这条旋转轴默认过原点,以下是Rodrigues旋转公式

对于将三维模型转化成二维图片,应该经过如下mvp变换

  • model transformation
  • view transformation
  • projection transformation

视图变换

相机应该有如下属性,如下图所示

  • position

  • gaze direction

  • up direction

image-20241206142540343

在观察相机和背景进行着相同的相对运动时,得出的视图可能完全一样,我们约定相机永远在原点,沿着z轴看,头顶为y轴,这是相机的标准位置;

将任意摆放的相机平移到标准位置,需要经历以下步骤,那么这些步骤相乘对应的逆矩阵就是视图矩阵;

  • 平移到原点
  • 旋转和y轴正方向同向
  • 旋转和x轴正方向同向

由此写出视图矩阵

思考的逆,即将旋转到,将旋转到,结合旋转矩阵的逆等于其转置,如下

相机和物品应该要运用相同的视图矩阵,所以模型变换和视图变换其实相同,也统称为魔模型视图变换;

投影变换

投影变换分为

  • 正交投影Orthographic projection:常用于工程制图,相机在无限远处
  • 透视投影Perspective projection:常用于美术,有近大远小的成像原理

image-20241206145750325

Orthographic Projection

一般来说,我们将空间中方体,可以映射为标准立方体(canonical cube),这需要先进行平移再缩放即可,如下:

Perspective Projection

对于透视变换,我们划归成正交投影变换问题:也就是规定一个近平面Near clip plane和一个远平面Far clip plane,其中两个面中心被相机正对着,满足以下性质

  • 运用矩阵后,近平面上点保持不动
  • 运用矩阵后,远平面上的点分量z保持不变
  • 运用矩阵后,原平面中心点保持不变

这样我们将两个面上的物品大小变得完全一样,可以直接运用正交投影变换,也就是

image-20241206155742667

以下是变换矩阵的推导:

对于空间任意一个点,和透视点和近平面满足某种相似三角形的特性,假设这个点被映射到近平面上的点

在齐次坐标的假设下,这个点等价于;

变换矩阵应该具有如此形式,才能满足

结合近平面方程和远平面方程,我们有

最终透视变换的矩阵如下:

思考:可以注意到,对于近平面和原平面之间的点,运用值变得更大也就是更靠近远平面了,数学上来说;