入门
课程主页:https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
计算机图形学分四块:
1、光栅化
2、几何造型
3、光线追踪
4、动画和仿真
实时计算机图形学(帧率能达到30fps),低于30则为离线。
线性代数基础
默认使用列向量 与 右手坐标系(
x
⃗
×
y
⃗
=
z
⃗
\vec x \times \vec y = \vec z
x×y=z)
向量 与 单位化
向量加法
三角形法则是一系列向量首尾相连,就能得到相加后的结果。
向量的点积
a hat(戴帽子的a)表示的是单位向量,两个单位向量点积就是夹角余弦值。
向量点积的应用
1、求投影向量 与 向量分解
2、向量的朝向 与 接近
两个向量朝向相反,点积小于0,朝向相同点积大于0,以a为参考则b朝前,c朝后。
两个向量越接近,其单位向量的点积越接近1,这个在观察镜面反射 或者 高光计算中会用。
向量叉乘
以右手螺旋定则判定右手坐标系(
x
⃗
×
y
⃗
=
z
⃗
\vec x \times \vec y = \vec z
x×y=z)
向量的叉乘也能写成矩阵形式,dual matrix(
A
∗
A*
A∗)
向量叉乘的应用
1、用于建立三维直角坐标系
给定x,y轴,能计算得到z轴
2、判定左右 与 内外
a
⃗
×
b
⃗
>
0
\vec a \times \vec b > 0
a×b>0,则b在a的左侧(逆时针旋转)
b
⃗
×
b
⃗
<
0
\vec b \times \vec b < 0
b×b<0,则a在b的右侧(顺时针旋转)
如果ABC按逆时针排列,若P同时在向量的AB、BC、CA的左侧,则说明在三角形内部。
如果ABC按顺时针排列,则当P同时在向量的AB、BC、CA的右侧,则说明在三角形内部。
p只要同时在向量的AB、BC、CA的右侧或者左侧,都说明在内部。
做光栅化时,需要判定像素点是否位于三角形内部。如果叉积为 0 ⃗ \vec 0 0,说明点在三角形边线上,可自行设定是否属于三角形。
坐标系
可以使用单位向量u,v,w来定义坐标系,或者计算投影坐标。
矩阵数乘
矩阵乘一个数,把所有元素都乘该数即可
矩阵乘法
特殊的,列向量只是一个m×1的矩阵。
矩阵乘法在坐标变换中会经常使用。
矩阵转置
矩阵的逆
相同的矩阵作用与一个向量,其结果相同。
向量乘法的矩阵形式
叉乘的矩阵形式在 旋转变换的推导中 会用到。
矩阵变换
线性变换
凡能写成如下形式的都是线性变换,如旋转,错切,放缩等等
尺度变换
反射变换
剪切变换
旋转变换
平移变换
齐次坐标
点和向量的区别在于,平移变换作用在坐标点上,坐标点会受到影响而发生改变;但若作用到向量上,向量不会受到丝毫影响,所以点后面加的是1,而向量加的是0。
根据点和坐标的性质差别,我们可以得到如下结果:
当然,由于齐次坐标点要除以 w w w,使得最后一个数为1,所以两个点相加的结果,实际上是两个点连线的中点。
仿射变换
仿射变换即:线性变换 + 平移变换 。它可以用齐次坐标变换矩阵表示,使用该矩阵进行变换时,默认对坐标先进行旋转变换,再进行平移变换
逆变换
对于正交矩阵(如旋转矩阵),矩阵的逆=其转置
变换的顺序
变换的合并
一个复杂的变换可以由一系列简单的基本变换构成。
3D的坐标变换形式