games101-week2

2D transformations

下面的三种变换,旋转,缩放和错切都叫做线性变换

更有意思的是,这些都可以通过特殊的矩阵实现

rotation

旋转矩阵的推导有两个方法

方法一是转成极坐标

方法二是考虑坐标系基的变换

原始坐标系的基

\[ i = \begin{pmatrix} cos0\\ sin0 \end{pmatrix} j = \begin{pmatrix} cos{\frac{\pi}{2}}\\ sin{\frac{\pi}{2}} \end{pmatrix} \]

旋转 \(\theta\) 度后就有新的

\[ i = \begin{pmatrix} cos{\theta}\\ sin{\theta} \end{pmatrix} j = \begin{pmatrix} cos{(\frac{\pi}{2}+{\theta})}\\ sin{(\frac{\pi}{2}+{\theta})} \end{pmatrix}=\begin{pmatrix} -sin{\theta}\\ cos{\theta} \end{pmatrix} \]

scale

shear

Homogeneous coordinates

怎么没有移动矩阵?

这个根本就不是线性变换,而且还不优雅!

这时候就需要加上齐次坐标了

这样得到的就是优美的矩阵乘法

拓展到 3D

View / Camera Transformation

就像转动相机一样,把视角固定在一个位置

第一步先移动到视角的位置上

第二步调整视角

Orthographic Projection

正交投影,不考虑物体的远近

先移动到原点位置,然后进行缩放

上面需要的参数就是通过摄像机的可视范围进行一个推导

Perspective Projection

远小近大,所以我们要先有一个压缩的操作

这个压缩的操作用矩阵怎么表达呢?

推导过程就是利用相似三角形然后外加一些特殊点来确定 A B 的值

MVP