学习视频链接
【GAMES101-现代计算机图形学入门-闫令琪】 https://www.bilibili.com/video/BV1X7411F744/?p=2&share_source=copy_web&vd_source=8332072dc5586e92174abc96d6e4280f
向量复习
图形学中,未作特殊规定的向量,缺省值(默认值)都是列
-
点积
-
叉积
-
正交基与坐标系
点乘
点乘基本知识
左下角的公式中:点乘可以快速得到两个向量之间的夹角,特别是在两个向量都只是方向的时候。
右下角的公式中:只要我们做一个反余弦,那就可以得到两个向量之间的夹角。
A表示一个向量(默认列向量),AT是A向量的转置
A的值可以用红色公式表示。
直角坐标系的点积
图形学应用
-
求两个向量之间的夹角(如光源与表面夹角的余弦)
-
求一个向量在另一个向量上的投影
投影点积
点乘可以把一个向量任意的进行垂直与平行的分解
上图计算向量b向量a的投影时,b的投影向量 = 向量b的长度 · cosθ · 向量a
图形学作用
-
测量两个方向的距离
-
分解向量
-
确定向前/向后
图形学中,可以计算两个向量或两个方向多么接近。主要通过比较点乘结果,可以判断接近还是远离这两个方向。
向量的点乘还可以得到一个前与后的信息。
如图假设向量a给定了某个方向,从a的起点向上为前,向下为后。
向量a与b的点乘会为正数表示其的方向是指向a的前方。向量c反之。
若向量a与某个向量的点乘为0,那么这个向量与向量a垂直。
同理,前面说到点乘可以判断接近还是原理。向量b与向量a越来越远,那么两者的点乘还会越来越等于0(即垂直),随后更远就是与a的方向相反,直到点乘变成-1(此时b与a完全相反)。
判断两个向量是否接近,其中一个应用——菲涅尔效果(看的角度和面的法线是否重合问题。越重合,说明面是对着相机的。否则面就越侧面(越亮),直到变成负数就是背面了(暗色))
叉乘
叉乘基本知识
-
叉积与两个初始向量正交
-
右手定则确定方向
-
在构造坐标系中很有用(以后)
右手螺旋定则(有些地方会用左手),可以判断
左侧的公式中,如果在三维坐标系中,x叉乘y是z,那么这个坐标系就是一个右手坐标系。
右侧的公式中,注意向量叉乘自己是0向量。并且叉乘只有反交换律。
在下方的公式,是向量可以写成矩阵的形式,然后向量的叉乘可以转换成矩阵乘以向量
图形学的应用
-
确定左/右
-
确定内部/外部
在图形学中,叉乘一是判断左和右,另一个是判断内和外。
在左图中,向量a叉乘向量b、得到z是正的;向量b叉乘向量a、得到的z是负的。这两种都能证明b在a的左侧。
在右图中,ABC的排布是逆时针,AB叉乘AP和BC叉乘AP、AC叉乘AP的z都是向外的(即AP都在所有边的左侧),这能说明P在ABC的中间。
ABC的排布变成顺时针也同理。(此处是对三角形做光栅化的基础,可以判断三角形覆盖了那些像素。若值等于0,即该像素刚好在三角形的边上,那么就自己定义)
正交基与坐标系
通过这些向量的乘法,就可以定义坐标系。定义坐标系可以把任意一个向量分解到三个轴上(利用点积算投影,然后用投影分解)
如图,假设将uvw设为一个三维坐标系的坐标轴,它们都是单位向量。
假设有一个向量p。我们可以用投影的方式投影到坐标轴上,直接用点乘的结果就可以立刻得到投影的长度。原因解释如下:
-
先假设向量p投影到u轴上,此时计算向量p在向量u上的投影向量。
-
p在向量u上的投影向量 = 向量p的长度 · cosθ · 向量u
-
向量p点乘向量u=p的长度 × u的长度 × cosθ。
-
此时u为单位向量,长度为1。
-
那么,向量p点乘向量u = u的长度 × cosθ,正好就是其投影长度。
-
(picgo上传出了问题,后面再补坑吧呜呜呜)
矩阵复习
-
神奇的2D阵列,在每一个CS课程中萦绕
-
在图形学中,广泛用于表示变换翻译、旋转、剪切、缩放(下一讲更详细)
矩阵乘积知识
m*n的矩阵 乘以 n*p的矩阵 = m*p的矩阵
矩阵乘法运算,黑色框框和蓝色框框分别是两个例子:
-
黑色框框的?,是在结果的第一行第二列,那么就去第一个矩阵中找第一行,第二个矩阵中找第二列,(1*6)+(3*7) = 27
-
蓝色框框同理,(5*4)+(2*3) = 26
矩阵没有任何的交换率。结合律比较有用。
-
将向量视为列矩阵(mx1)
-
转换点的关键(下一讲)
-
官方剧透:关于y轴的2D反射
始终认为,矩阵在左边,向量在右边。
矩阵的变换(转置)
矩阵和向量
向量在矩阵形式上的计算。
总结
这节课主要是对线性代数中向量和矩阵的复习,总体来说难度不大。
1.向量主要是其点乘和叉乘的两种乘法。
-
点乘能够用于计算向量之间的投影和向量之间的夹角,能够判断两向量是否相近(菲涅尔效果)
-
而向量投影主要能测量两个方向的距离、分解向量以及确定向前/向后等,这些特性能够运用到确定直角坐标系上(即确定基坐标,就是确定一个基准的感觉)
-
叉乘能够用于确定向量之间的位置关系,左右、内外等。
-
确定内外在后续光栅化用的会很多,而确定左右的方向好像没有提及运用??后续有涉及到的话在回来补坑。
2.矩阵则是其乘法计算的一些计算方法。
-
计算机的图形信息基本都是用矩阵存储的,信息与信息的计算后续也会涉及。这里闫老师主要是稍微复习了一下。