GAMES101第3课Transformation——学习笔记

在GAMS101的第二节课的末尾,闫老师在讲解了向量的基本知识之后,引入了矩阵Matrices。

1)矩阵和向量相乘

 将向量视为列向量(即M\times 1的矩阵),矩阵在左边,向量在右边。

举例:在二维平面中,将向量作y轴对称操作。

给定任一一点(x,y),将y轴作为对称轴时,对称的点是(-x,y).

如果此时我们有一矩阵\begin{pmatrix} -1 & 0\\ 0 & -1 \end{pmatrix},将这一矩阵乘以向量(x,y),我们会得到

\begin{pmatrix} -1 & 0\\ 0 & 1 \end{pmatrix}\begin{pmatrix} x\\ y \end{pmatrix}=\begin{pmatrix} -x\\ y \end{pmatrix}

这样,我们就通过矩阵\begin{pmatrix} -1 & 0\\ 0 & -1 \end{pmatrix}就实现了对向量进行y轴对称反射的操作。

向量的点乘和叉乘,我们也可以用矩阵形式表示

 

到了第三节课,我们主要就是学习通过矩阵来实现图形的变换。

在图形学中,矩阵广泛用于表示转换。(In Graphics,pervasively used to represent transformations)

2)二维变换

Scale缩放变换

 Reflection反射变换

 Shear剪切变换

 Rotate旋转变换

 上述四种变换,我们以Rotate旋转变换来进行讲解。

在二维变换时,假设一个原始点(x,y),在进行某种变换后,变成了(x’,y’),写成表达式为

\begin{bmatrix} x'\\ y' \end{bmatrix}=\begin{bmatrix} A & B\\ C & D \end{bmatrix}\begin{bmatrix} x\\ y \end{bmatrix}

其中,\begin{bmatrix} A &B \\ C& D \end{bmatrix}称为变换矩阵。

在求解变换矩阵\begin{bmatrix} A &B \\ C& D \end{bmatrix}时,我们可以选取特殊的点变换前和变换后的值,带入表达式求值即可。

旋转变换,当旋转\theta角度时,我们分别选取两个特殊的点(1,0)和(0,1),这两个点在旋转之后,变换的位置分别变成了\left ( cos\theta ,sin\theta \right )\left ( -sin\theta ,cos\theta \right ),我们带回表达式,可以得到

\begin{bmatrix} cos\theta \\ sin\theta \end{bmatrix}=\begin{bmatrix} A & B\\ C & D \end{bmatrix}\begin{bmatrix} 1\\ 0 \end{bmatrix}

\begin{bmatrix} -sin\theta \\ cos\theta \end{bmatrix}=\begin{bmatrix} A & B\\ C & D \end{bmatrix}\begin{bmatrix} 0\\ 1 \end{bmatrix}

上述两个表达式,我们依次进行展开,得到如下:

cos\theta =A\times 1+B\times 0,得到cos\theta=A

sin\theta =C\times 1+D\times 0,得到sin\theta =C

-sin\theta =A\times 0+B\times 1,得到-sin\theta =B

cos\theta =C\times 0+D\times 1,得到cos\theta =D

将求得的值再带回表达式,我们得到

\begin{bmatrix} x'\\ y' \end{bmatrix}=\begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix}\begin{bmatrix} x\\ y \end{bmatrix}

这样,我们就得到了旋转的变换矩阵。

缩放、反射、剪切、旋转四种变换,我们可以统一写成如下公式:

 我们称之为线性变换(Linear Transforms)。

但是,我们再讨论Translation平移变换,我们会发现

 表达式为

\begin{bmatrix} x'\\ y' \end{bmatrix}=\begin{bmatrix} 1 &0 \\ 0 & 1 \end{bmatrix}\begin{bmatrix} x\\ y \end{bmatrix}+\begin{bmatrix} t_{x}\\ t_{y} \end{bmatrix}

其中,\begin{bmatrix} t_{x}\\ t_{y} \end{bmatrix}表示x和y的平移量。

为了将缩放、反射、剪切、旋转等线性变换与平移变换的非线性变换统一成一种矩阵形式,我们人为的引入了齐次坐标(Homogeneous Coordinates)。

 在二维坐标中,我们增加第三个坐标。我们规定:

如果第三个坐标为1,表示一个二维的点;

如果第三个作为为0,表示一个二维向量;

我们用齐次坐标来完成上诉各种变换的统一的矩阵形式。

 完成了统一的矩阵形式之后,我们就可以通过研究矩阵来研究变换的特性。

逆变换

 变换的组合

 变换的分解

 3)三维变换

在二维的基础上,我们拓展到三维。

 在三维的齐次坐标上,我们统一三维的矩阵形式。

猜你喜欢

转载自blog.csdn.net/m0_74178120/article/details/128986963