2D变换
缩放
可知,变换后边长原来的s倍
化为矩阵形式
切变
如图,在X方向的移动水平距离均为a/1,可得
旋转
默认逆时针旋转,可用待定系数法求得变换矩阵
移动
移动不是线性变换,不能直接用乘法表示。
为了统一使用乘法,引入齐次坐标。
2D点:
2D坐标:
移动矩阵可以改写为:
总结
缩放
旋转
移动
矩阵乘法从右到左的顺序计算。
3D变换
同样的,为了统一线性与非线性变换,引入齐次坐标。
3D点:
3D向量:
缩放
旋转:
移动
视图变换
上面的变换方法都属于模型变换,在世界中对模型进行变换。
视图变换,即将视口摄像机移动到原点,上方向为+Y,朝向-Z,以便后续计算。同时,其他模型也需要进行变换以保持与摄像机的相对位置。所以,视图变换即使求摄像机移动到原点,并且旋转到上方向为+Y,朝向-Z的矩阵,并且对于其他模型也应用这样的矩阵。
设相机朝向为,上方向为。需要将旋转到-Z,旋转到+Y,旋转到+X。可得,
旋转矩阵为正交矩阵,所以其逆矩阵等于转置矩阵
投影变换
正交投影
将一个空间映射到正则立方体上。
透视投影
首先,可以将台体挤压为一个正方体,再对正方体作正交变换。
设挤压的变换矩阵M,即求
由相似三角形,有
可解得
在近平面处,n不变,将n代入
可得第3行一定是的形式
得
远平面中心点不变
得
解得
因为进行完MVP变换后,得到的矩阵,其中(根据左右手系的不同也可能等于相反数)。储存了深度信息。只有将矩阵归一化,也就是除以才能实现真正的近大远小的效果。这一步被称为齐次除法或者透视除法。
进行完MVP变化之后得到的空间被称作裁剪空间。