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 的值