首页 > 其他分享 >真实感渲染:三角函数、向量和矩阵

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

时间:2022-12-02 07:11:21浏览次数:63  
标签:overrightarrow 三角函数 点积 矩阵 图形学 真实感 向量 Vert

大家好~本课程为“真实感渲染”的线上课程,从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

结学

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

总结

  • 回答开始的问题?

参考资料

标签:overrightarrow,三角函数,点积,矩阵,图形学,真实感,向量,Vert
From: https://www.cnblogs.com/chaogex/p/16943331.html

相关文章

  • Opengl___真实感技术1:光照
    光照设置glLightfv(灯光,属性,属性值);例如:1.glLightfv(GL_LIGHT0,GL_AMBIENT,ambient);2.glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse);3.glLightfv(GL_LIGHT0,GL_P......
  • 矩阵快速幂优化DP
    一篇比较初步的方法总结。矩阵快速幂优化递推最经典的应用是快速求斐波那契数列的某一项,由于过于简单在这里没有什么必要提。由此引申出一类和上面一样单纯地优化递推过程......
  • 稀疏矩阵之 toarray 方法和 todense 方法
    在SciPy稀疏矩阵中,有着2个经常被混为一谈的方法:toarray() 方法以及todense() 方法。事实上,我在才开始接触SciPy稀疏矩阵的时候也曾经把这2个方法之间画上等号。......
  • 推荐两本数学方面的书籍《数学要素》和《矩阵力量》
    最近在知乎看到一个话题《线性代数到底应该怎么学?》,有位名叫生姜DrGinger的大佬写了几本相关书。对,你没看错,就是几本,看他的github,应该是7本了,其中两本的草稿已经比较稳定,正......
  • 十进制矩阵乘法优化DP
    十进制矩乘优化DPP1397[NOI2013]矩阵游戏题目描述婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的\(n\)行\(m\)列的矩阵(你不用担心她如何存储)。她生成......
  • 矩阵乘法
    矩阵乘法定义,设A是\(m\timesn\)矩阵,B是\(n\timesp\)矩阵,则\(C=A\timesB\)是一个\(m\timesp\)矩阵性质:\(A\timesB\)不一定等于\(B\timesA\),\((A\timesB)\time......
  • 差分矩阵
    输入一个 n 行 m 列的整数矩阵,再输入 q 个操作,每个操作包含五个整数 x1,y1,x2,y2,c,其中 (x1,y1) 和 (x2,y2)表示一个子矩阵的左上角坐标和右下角坐标。每个操作......
  • 爱生气的书店老板 二维区域和检索 - 矩阵不可变 元素和为目标值的子矩阵数量
    1052.爱生气的书店老板思路,把老板不生气时候的值都加起来,同时让当前值为零;最后,按照最长时间滑动窗口,求解窗口最大值,与上值相加即可intsum=0;for(inti=0;i<cu......
  • 【C语言基础】C语言实现矩阵相乘
    前言最近在考虑如何实现kalman跟踪,其中涉及较多矩阵运算,比如矩阵相乘、矩阵转置等,先实现了一个矩阵相乘的c代码如下。其实,后续可以使用matrix类实现kalman跟踪。code#......
  • 力扣240(java&python)-搜索二维矩阵 II(中等)
    题目:编写一个高效的算法来搜索 m x n 矩阵matrix中的一个目标值target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例......