本节课主要是数学基础知识。
概述
- 光栅化(OpenGL…)Rasterization
- 光栅化:三维空间的几何形体显示在屏幕上。
- 实时:每秒钟至少能够生成30帧(fpx)。达不到的叫离线。
- 曲线和曲面(几何)Curves and Meshes
- 光线追踪 Ray Tracing
- trade off:为了达到某一目标必须牺牲其他的目标
- 慢,效果好
- 实时光线追踪
- 动画与模拟 Animation/Simulation
计算机视觉:视觉包含一切需要猜测的,需要分析理解。
计算机视觉与计算机图形学的区别:
向量与线性代数
向量vector
A
B
⃗
=
B
−
A
\vec{AB}=B-A
AB=B−A,A指向B
属性:方向,长度
单位向量(表示方向)长度为一,与原始向量同方向
向量基本操作:
- 加和:减法和加法互逆
默认写法为A
- 点乘:结果是数量不是向量。在图形学中可以计算夹角θ。(右边公式两个向量是单位向量)满足交换律、结合律、分配率。
b ⃗ \vec{b} b投影到 a ⃗ \vec{a} a上:投影方向与 a ⃗ \vec{a} a一致。
计算投影的好处:
①可以将一个向量分解为两个向量,其中一个平行于某方向,另一个垂直某方向。
②可以通过点乘计算结果来判断两个向量接近程度。结果*(cosθ值)*从1到-1即表示两个向量从重合慢慢远离到达了方向完全相反。
应用:金属的高光就是因为观察的向量与反射的出射光向量接近。
③可以得出前与后的信息。将向量与参考向量点乘,结果为正代表该向量相同;结果为负代表方向相反;结果为0代表方向一致。
- 叉乘:结果为向量,与叉积的两个向量都垂直。
可以用来建立三维空间的直角坐标系*(右手坐标系 x ⃗ y ⃗ = + z ⃗ \vec{x}\vec{y}=+\vec{z} xy=+z)。左手坐标系 x ⃗ y ⃗ = − z ⃗ \vec{x}\vec{y}=-\vec{z} xy=−z
向量 a ⃗ \vec{a} a可以表示为矩阵 A ∗ A^* A∗进行运算
叉积作用:
①判定左和右。
eg.如何判断 b ⃗ \vec{b} b在 a ⃗ \vec{a} a的左侧( a ⃗ \vec{a} a逆时针旋转到 b ⃗ \vec{b} b)还是右侧( a ⃗ \vec{a} a顺时针旋转到 b ⃗ \vec{b} b)*?
答: a ⃗ × b ⃗ \vec{a}\times\vec{b} a×b为正代表 b ⃗ \vec{b} b在 a ⃗ \vec{a} a左侧,为负代表右侧。
②判定内和外。
eg.判断p点是否在三角形ABC内部(逆时针排布)。
答: A B ⃗ × A P ⃗ \vec{AB}\times\vec{AP} AB×AP结果向外,P在 A B ⃗ \vec{AB} AB左侧; B C ⃗ × B P ⃗ \vec{BC}\times\vec{BP} BC×BP结果向外,P在 B C ⃗ \vec{BC} BC左侧; C A ⃗ × C P ⃗ \vec{CA}\times\vec{CP} CA×CP结果向外,P在 C A ⃗ \vec{CA} CA左侧。证明P在三角形内部;只要P在一个边的右侧,证明P在三角形外部。
结论:如果点P一直在三角形三个边的左边(逆时针排布),或者一直在三角形三个边的右边(顺时针排布),则点P在三角形内部。否则在外部。结果为0(三角形边上)自己决定在内部在外部
应用:光栅化要判断三角形覆盖哪些像素,对内部像素进行着色。
建立坐标系
定义坐标系uvw,
u
⃗
,
v
⃗
,
w
⃗
\vec{u},\vec{v},\vec{w}
u,v,w皆为单位向量且互相垂直(点乘为0)。
上面是
p
⃗
\vec{p}
p分解到三个坐标轴的公式。
矩阵
矩阵乘积
前提要求:第一个矩阵的列数需要与第二个矩阵的行数一致。
矩阵乘积没有交换率,有结合律和分配律。
矩阵和向量乘积
规定:矩阵在左边(
x
×
m
x\times m
x×m),向量在右边,向量是一个列数为1的矩阵(
m
×
1
m\times1
m×1)
eg.将二维坐标系的坐标根据y轴做对称操作
转置:行列互换
⭐乘积转置:
单位矩阵:对角阵。
矩阵的逆:
⭐逆的运算
使用矩阵表示向量的点乘、叉乘
点乘就是一个数(1x1矩阵),叉乘为一个向量(mx1矩阵)
A
∗
A^*
A∗矩阵可用于旋转的推导。