目录
变换
2D 变换
缩放
- X'=SX
- Y=SY
X轴翻转
- X'=-X
- Y'=Y
切变
旋转
R-θ=RθT
齐次坐标
为了解决平移产生必须要用加法的问题,加入齐次坐标。
- 矩阵没有交换律:同时需要平移和线性变换的时候,需要先线性变换再平移
- 仿射变换=线性变换+平移
3D 变换
齐次坐标
3D点:(x,y,z,1)T
3D向量:(x,y,z,0)T
旋转向量与欧拉角
RXYZ(α,β,γ)=RX(α)Ry(β)Rz(γ)
利用右手螺旋定则
在三维坐标系中:
XxY=Z XxZ=-Y YxZ=X
因此RY(α)中为X或Y的转置
同时,去掉分别代表XYZ运算的行列即可变换为最基本的旋转式
罗德里格旋转公式
这是一种可以表示任意旋转后的向量
四元数解决了两个旋转角度中差值的问题,本课中不具体讲解
视图变换
什么是视图变换?
视图想想如何拍一张照片:
- 找一个好的地方并安排好拍照的人(模型变换)
- 找一个好角度并放好相机(视图变化)
- 茄子!(投影变换)
定义相机
-
position(相机在哪)e
-
look-at/gaze direction(朝哪个方向)g
-
up direction(向上方向:控制歪斜)t
同时,相机默认的向上方向为+Y。永远朝着-Z方向看,永远在原点上。
把任意点相机移到默认点
-
先平移
-
再旋转(利用逆矩阵的性质,先算从原点到任意点再转置过来)
(g x t = e)
投影变换
正交投影:更像工程制图,没有近大远小的性质
透视投影:近大远小,更类似于现实中的形态
正交投影
一种简单的理解方式
- 把z轴去掉
- 相机位于原点,看向-Z轴,向上为Y轴
- 将生成的矩形平移并缩放为[-1,1]²
标准方式
总的来说,要将任意的立方体变成标准(canonical)立方体
先做平移,再做缩放
透视投影
如何做透视投影?
- 将视锥体压扁成立方体
- 做正交变换
“压扁”操作
其中:
n为近平面
f为远平面
利用相似三角形求出y轴的位置
同理可以得到x'=(n/z)x
Z轴如何处理?
当我们完成X、Y轴处理后,发现Z轴仍不知道,同时乘z后得到右下的矩阵
同时可以通过矩阵叉乘得到未知矩阵的一部分:
(?,?,?,?))->(0,0,?,?)
再通过下图的方法得出原本"still unknown"的数值为n²
以此得到:
An+B=n²
同时z轴在远平面上的数值并不会改变,因此得到:
Af+B=f²
通过解上面两个方程得到:
A=n+f
B=-nf
因此Z轴一行的矩阵为:
(0,0,n+f,-nf)
参考资料
完整笔记
- 度盘链接
- 提取码:njcf