真实感渲染:三角函数、向量和矩阵
大家好~本课程为“真实感渲染”的线上课程,从0开始,介绍相关的图形学算法和数学基础,给出详细的数学推导、伪代码和实现代码,最终带领大家开发出基于物理的渲染器
线上课程资料:
加QQ群,获得ppt等资料,与群主交流讨论:106047770
本系列文章为线上课程的复盘,每上完一节课就会同步发布对应的文章
本课程系列文章可进入索引查看:
真实感渲染系列文章索引
为什么要学习本课
- 如何在几何上表示向量的加法?
- 如何在代数上计算向量的加法?
- 三角函数、向量、矩阵在图形学中有哪些应用?
主问题:什么是三角函数
-
对直角三角形而言,下面的三角函数的值分别是多少?
- sinθ
- cosθ
- tanθ
- cotθ
-
对任意三角形而言呢?
-
三角函数在图形学中有哪些应用?
- 已知三角函数的值后,可以计算出角度:\(\arcsin\frac{1}{2} = 30^o\)
- 已知直角三角形的一边和一个角度,可以计算另外一边
主问题:什么是向量
-
用什么符号表示向量?
答:使用\(\overrightarrow{a}\)或者粗体a表示;
或者用起点和终点表示:\(\overrightarrow{AB} = B - A\) -
向量有什么特性?
答:具有方向和长度;
没有绝对的起点; -
如何用代数表示向量?
答:
-
用什么符号表示向量的长度?
答:\(\Vert{\overrightarrow{a}}\Vert\) -
什么是单位向量?
答:长度为1的向量 -
如何计算一个向量的单位向量(向量正交化)?
答:\(\widehat{a}=\frac{\overrightarrow{a}} {\Vert{\overrightarrow{a}}\Vert}\) -
如何应用单位向量?
答:用来表示方向,如法线 -
如何计算向量的加法?
-
几何上
答: -
代数上
答:略
-
-
向量的点积的定义是什么?
答:
-
对于两个单位向量,点积是多少?
答:\(\widehat{a} \cdot \widehat{{b}} = cos\theta\) -
点积满足什么运算法则?
答: -
如何进行点积的代数运算?
答: -
点积在图形学中有哪些应用?
- 计算两个向量的夹角
答:通过“两个单位向量的点积”,得到\(cos\theta\),然后就可以得到夹角。这可以应用于计算光源方向和表面法线的夹角 - 计算一个向量到另一个向量的投影
答:
- 分解一个向量
答: - 决定向量的前/后关系
答:
如上图所示,如果两个向量都在一个半圆内,则它们属于“前”关系(如\(\overrightarrow{a},\overrightarrow{b}\));否则,则它们属于“后”关系(如\(\overrightarrow{a},\overrightarrow{c}\))
如果两个向量点积大于0,则\(cos\theta>0\),所以\(\theta \in [0, \frac{\pi}{2})\),它们属于“前”关系;否则,它们属于“后”关系
- 计算两个向量的夹角
-
向量的叉积的定义是什么?
答:
-
叉积满足什么运算法则?
答: -
如何进行叉积的代数运算?
答: -
叉积在图形学中有哪些应用?
- 构建坐标系
答:
右手坐标系:
如上图所示,通过两个正交的单位向量的叉积来构建坐标系第三维的向量 - 决定向量的左/右关系
答:
如上图所示,假设\(\overrightarrow{a}, \overrightarrow{b}\)在xy平面,如果\(\overrightarrow{a} \times \overrightarrow{b} = +\overrightarrow{z}\),则\(\overrightarrow{b}在\overrightarrow{a}\)的左侧;否则在右侧 - 判断一个点是否在三角形内
答:
分别判断上图的AB和AP、BC和BP、CA和CP,如果它们叉乘的结果同号,则点在三角形内。
- 构建坐标系
结学
- 什么是向量?
- 向量有什么特性?
- 点积在图形学中有哪些应用?
- 叉积在图形学中有哪些应用?
主问题:什么是矩阵
-
在图形学中,矩阵有哪些应用?
答:用于坐标变换,如位移、旋转、缩放 -
什么是矩阵?
答:可以看成是一个包含数字的数组
-
如何进行矩阵与标量相乘的代数计算?
答:矩阵的每个元素乘以该标量 -
“矩阵与矩阵”相乘有什么约束?
答: -
如何进行矩阵与矩阵相乘的代数计算?
答:
乘积中的第(i, j)个元素=第一个矩阵的第i行与第二个矩阵的第j列的点积 -
矩阵与矩阵相乘满足什么运算法则?
答:不满足交换律;
满足结合律和分配律:
-
“矩阵与向量”相乘有什么约束?
答:矩阵(mxn)乘以向量(nx1) -
如何进行矩阵与向量相乘的代数计算?
-
“矩阵与向量相乘”在图形学中有哪些应用?
- 变换一个点
答:如将一个点沿y轴镜像变换:
- 变换一个点
-
什么是矩阵转置?
答: -
矩阵转置满足什么运算法则?
答: -
什么是单位矩阵?
答: -
什么是逆矩阵?
答: -
如何用矩阵表示向量的点积?
答: -
如何用矩阵表示向量的叉积?
答:
结学
- 什么是矩阵?
- “矩阵与向量相乘”在图形学中有哪些应用?
总结
- 回答开始的问题?