介绍变化入门概念
向量点乘
可以判断向量前与后的信息
点乘>0 同方向
点乘<0 反方向
向量叉乘
A x B = C 则 C 垂直于A和B所在的平面
右手螺旋定则:如a×b=c 四指从a的方向向b的方向握紧,大拇指指向的就是c的方向
a×b得到结果是和z轴同向,是正的,说明b在a的左侧 负即为右侧
三角形:
AB×AP > 0 说明P在AB左侧
BC×BP > 0 说明P在BC左侧
CA×CP > 0 说明P在CA左侧
说明点P落在三角形ABC内部
基础变化
1.缩放
缩放0.5倍:

此处 s_x = 0.5
2.Shear Matrix 错切变换


3.旋转


4.平移


发现无法写成矩阵形式,于是:

如果用一个矩阵乘以输入可以得到输出的坐标,那么称这个变换叫线性变换 因此,平移不是线性变换
但是,我们不希望多带一个尾巴,希望写成两个矩阵相乘的形式,因此,引入齐次坐标–增加一个维度。

矩阵:
那么,为什么向量的最后一维是0,而点是1呢?
向量具有平移不变性,即一个向量经过平移,他的值不应该改变,置0就可以很好的体现这一点。
2D 变化汇总

3D变化

相对应的:使用4*4的矩阵表示变化
3D 旋转

为什么y轴如此特殊?
在 xy 平面里,你习惯按 (x,y) 看 2D 旋转
在 yz 平面里,你也能按 (y,z) 看
但在 xz 平面里,若还按 (x,z) 去套 2D 旋转模板,就会觉得符号“反了”
因为:x × z = −y
也就是说,(x,z) 这个顺序对应的法向量是 −y,不是 +y。
而绕 +y 轴的正旋转,真正与右手系匹配的平面坐标顺序其实是:(z, x)
因为 z×x=y 这才和“绕 +y 轴”一致。
Rodrigues旋转公式

其中,n是旋转轴 α是旋转角度
Viewing(观测)变化
图形学的最终目的是为了将三维中的物体渲染成二维里的图像
在现实生活中如何照一张照片?
- 找个好地方摆pose(Model变换)
- 把相机放个好角度(View变换)
- 按快门(Projection变换)
View变换–如何摆放相机的角度
- 决定相机的位置
- 决定相机看向的方向
- 决定相机头朝上的方向

规定相机永远在(0,0,0),沿着-Z看,变化的永远是其他物体

所以要先把摄像机归到原点
- 平移摄像机至(0,0,0)
- 将相机lookat的方向旋转到-z
- 旋转相机头朝上的方向到Y
在进行旋转时,若发现,将任意向量旋转至x轴(假设)很困难,则可以先将x轴旋转至任意向量,求出其变化矩阵,再求逆,即可得到我们希望的正向的矩阵。