真实感渲染:三角函数、向量和矩阵

大家好~本课程为“真实感渲染”的线上课程,从0开始,介绍相关的图形学算法和数学基础,给出详细的数学推导、伪代码和实现代码,最终带领大家开发出基于物理的渲染器

线上课程资料:

本节课录像回放

加QQ群,获得ppt等资料,与群主交流讨论:106047770

本系列文章为线上课程的复盘,每上完一节课就会同步发布对应的文章

本课程系列文章可进入索引查看:
真实感渲染系列文章索引

为什么要学习本课

  • 如何在几何上表示向量的加法?
  • 如何在代数上计算向量的加法?
  • 三角函数、向量、矩阵在图形学中有哪些应用?

主问题:什么是三角函数

  • 对直角三角形而言,下面的三角函数的值分别是多少?
    image

    • sinθ
    • cosθ
    • tanθ
    • cotθ
  • 对任意三角形而言呢?

  • 三角函数在图形学中有哪些应用?

    • 已知三角函数的值后,可以计算出角度:\(\arcsin\frac{1}{2} = 30^o\)
    • 已知直角三角形的一边和一个角度,可以计算另外一边

主问题:什么是向量

  • 用什么符号表示向量?
    image
    答:使用\(\overrightarrow{a}\)或者粗体a表示;
    或者用起点和终点表示:\(\overrightarrow{AB} = B - A\)

  • 向量有什么特性?
    答:具有方向和长度;
    没有绝对的起点;

  • 如何用代数表示向量?
    答:
    image

image

  • 用什么符号表示向量的长度?
    答:\(\Vert{\overrightarrow{a}}\Vert\)

  • 什么是单位向量?
    答:长度为1的向量

  • 如何计算一个向量的单位向量(向量正交化)?
    答:\(\widehat{a}=\frac{\overrightarrow{a}} {\Vert{\overrightarrow{a}}\Vert}\)

  • 如何应用单位向量?
    答:用来表示方向,如法线

  • 如何计算向量的加法?

    • 几何上
      答:image

    • 代数上
      答:略

  • 向量的点积的定义是什么?
    答:image

\[\overrightarrow{a} \cdot \overrightarrow{b} = {\Vert{\overrightarrow{a}}\Vert} {\Vert{\overrightarrow{b}}\Vert} cos\theta \]

  • 对于两个单位向量,点积是多少?
    答:\(\widehat{a} \cdot \widehat{{b}} = cos\theta\)

  • 点积满足什么运算法则?
    答:image

  • 如何进行点积的代数运算?
    答:image

  • 点积在图形学中有哪些应用?

    • 计算两个向量的夹角
      答:通过“两个单位向量的点积”,得到\(cos\theta\),然后就可以得到夹角。这可以应用于计算光源方向和表面法线的夹角
    • 计算一个向量到另一个向量的投影
      答:image
      image
    • 分解一个向量
      答:image
    • 决定向量的前/后关系

    答:image

    如上图所示,如果两个向量都在一个半圆内,则它们属于“前”关系(如\(\overrightarrow{a},\overrightarrow{b}\));否则,则它们属于“后”关系(如\(\overrightarrow{a},\overrightarrow{c}\)

    如果两个向量点积大于0,则\(cos\theta>0\),所以\(\theta \in [0, \frac{\pi}{2})\),它们属于“前”关系;否则,它们属于“后”关系

  • 向量的叉积的定义是什么?
    答:image
    image

  • 叉积满足什么运算法则?
    答:image

  • 如何进行叉积的代数运算?
    答:image

  • 叉积在图形学中有哪些应用?

    • 构建坐标系
      答:image
      右手坐标系:
      image
      如上图所示,通过两个正交的单位向量的叉积来构建坐标系第三维的向量
    • 决定向量的左/右关系
      答:image
      如上图所示,假设\(\overrightarrow{a}, \overrightarrow{b}\)在xy平面,如果\(\overrightarrow{a} \times \overrightarrow{b} = +\overrightarrow{z}\),则\(\overrightarrow{b}在\overrightarrow{a}\)的左侧;否则在右侧
    • 判断一个点是否在三角形内
      答:image
      分别判断上图的AB和AP、BC和BP、CA和CP,如果它们叉乘的结果同号,则点在三角形内。

结学

  • 什么是向量?
  • 向量有什么特性?
  • 点积在图形学中有哪些应用?
  • 叉积在图形学中有哪些应用?

主问题:什么是矩阵

  • 在图形学中,矩阵有哪些应用?
    答:用于坐标变换,如位移、旋转、缩放

  • 什么是矩阵?
    答:可以看成是一个包含数字的数组
    image
    image

  • 如何进行矩阵与标量相乘的代数计算?
    答:矩阵的每个元素乘以该标量

  • “矩阵与矩阵”相乘有什么约束?
    答:image

  • 如何进行矩阵与矩阵相乘的代数计算?
    答:image
    乘积中的第(i, j)个元素=第一个矩阵的第i行与第二个矩阵的第j列的点积

  • 矩阵与矩阵相乘满足什么运算法则?
    答:不满足交换律;
    满足结合律和分配律:
    image

  • “矩阵与向量”相乘有什么约束?
    答:矩阵(mxn)乘以向量(nx1)

  • 如何进行矩阵与向量相乘的代数计算?
    image

  • “矩阵与向量相乘”在图形学中有哪些应用?

    • 变换一个点
      答:如将一个点沿y轴镜像变换:
      image
  • 什么是矩阵转置?
    答:image

  • 矩阵转置满足什么运算法则?
    答:image

  • 什么是单位矩阵?
    答:image

  • 什么是逆矩阵?
    答:image

  • 如何用矩阵表示向量的点积?
    答:image

  • 如何用矩阵表示向量的叉积?
    image
    答:
    image

结学

  • 什么是矩阵?
  • “矩阵与向量相乘”在图形学中有哪些应用?

总结

  • 回答开始的问题?

参考资料

posted @ 2022-12-02 07:02  杨元超  阅读(97)  评论(0编辑  收藏  举报