GAMES101笔记 Lecture 01&02 Overview of Computer Graphics & Review of Linear Algebra


一、什么是图形学?

Computer graphics: the use of computers to synthesize and manipulate visual information.

  • 图形学的应用领域和应用场景:游戏、电影、动画、设计(如基于光照等的外观设计)、可视化(医学等领域)、虚拟现实/增强现实、数码插画(digital illustration)、仿真模拟(如雾、沙、黑洞)、GUI设计、 字体设计(Typography)等。
  • 图形学的研究内容与挑战:研究如何创建一个贴近真实的虚拟世界,需要对实体世界的各方各面具有理解;研究如何把这个世界在设备上显示出来,需要新的计算方法、显示方法。
  • 从技术上来看,图形学的内容包括:投影、曲线、曲面的数学;光照和阴影的物理学;在3D下表示和操作几何形体;动画和模拟;3D图形软件编程和相关硬件。

二、课程内容

本课程教授的内容

  1. 光栅化:将三维空间的几何形体显示在屏幕上。在实时图形学(30fps)中广泛应用。
  2. 曲线和网格:如何表示曲面、如何用简单曲面通过细分得到复杂曲面、在几何体形状发生变化时如何保持其拓扑结构等。
  3. 光线追踪
  4. 动画、模拟

本课程不涉及的内容

  1. OpenGL、DirectX、Vulkan等图形绘制API;
  2. 如何建模、如何建得好看;
  3. 计算机视觉领域以图像角度为切入点的研究。

课程作业

每周一个小作业,使用C++语言,提供代码框架和虚拟机环境。一般来说需要写的代码不超过20行。
大作业,使用所学知识和提供的参考,自定义主题,在课程中段开始。
(推荐使用IDE(VS/VSCode))

三、糙、快、猛的线性代数复习

图形学所涉及的知识:

  1. 基础数学:线代、微积分、统计;
  2. 基础物理:光学、力学;
  3. 杂项:信号处理、数值分析,…
  4. 以及一点点的美学。

平移、旋转和缩放等操作,均可以用向量、矩阵的计算表示。

向量

方向长度两个属性,没有绝对的起始位置。向量的长度(magnitude)写作 ∥ a ⃗ ∥ \| \vec a \| a ,单位向量只表示方向,写作 a ^ \hat a a^ a ^ = a ⃗ / ∥ a ⃗ ∥ \hat a = \vec a /\| \vec a \| a^=a /∥a

  • 在图形学中,默认向量以行形式排列,即 A = ( x y ) \bf A = \begin{pmatrix}x \\y \end{pmatrix} A=(xy), A T = ( x , y ) \bf A^T = \begin{pmatrix}x,y \end{pmatrix} AT=(x,y)

向量点积

向量点积: a ⃗   ⋅   b ⃗ = ∥ a ⃗ ∥ ∥ b ⃗ ∥ cos ⁡ θ \vec a \, · \, \vec b = \| \vec a \| \| \vec b \| \cos \theta a b =a ∥∥b cosθ cos ⁡ θ = a ⃗   ⋅   b ⃗ ∥ a ⃗ ∥ ∥ b ⃗ ∥ \cos \theta = \frac {\vec a \, · \, \vec b} {\| \vec a \| \| \vec b \|} cosθ=a ∥∥b a b 。当两个向量都是单位向量时, cos ⁡ θ = ∥ a ⃗ ∥ ∥ b ⃗ ∥ \cos \theta = \| \vec a \| \| \vec b \| cosθ=a ∥∥b

  • 点积满足的运算性质:交换律、分配律、结合律。
  • 在笛卡尔坐标系中,向量点乘结果为对应元素相加再求和。
  • 点积在图形学中的作用:找到两个向量的夹角(如光线和平面之间)、一个向量到另一个向量的投影、对一个向量在另一个向量的方向上进行分析,根据点积结果数值判断两个向量是否接近(1)还是完全相反(-1)、方向是相同(>0)还是相反(<0)。

向量叉积

向量叉积:叉积得到的向量垂直于两向量,方向遵循右手定则。 ∥ a ⃗   ×   b ⃗ ∥ = ∥ a ⃗ ∥ ∥ b ⃗ ∥ sin ⁡ θ \|\vec a \, × \, \vec b\| = \| \vec a \| \| \vec b \| \sin \theta a ×b =a ∥∥b sinθ
叉积可以用于建立三维空间的直角坐标系。对于右手坐标系: x ⃗   ×   y ⃗ = + z ⃗ \vec x \, × \, \vec y =+ \vec z x ×y =+z (本课程默认右手系,opengl等api中会假设左手系

  • 叉积满足的运算性质:交换律方向相反: a ⃗   ×   b ⃗ = −   b ⃗   ×   a ⃗ \vec a \, × \, \vec b = - \,\vec b \, × \, \vec a a ×b =b ×a a ⃗   ×   a ⃗ = 0 \vec a \, × \, \vec a = 0 a ×a =0;分配律、结合律仍存在。
  • 在笛卡尔坐标系中,叉积结果可以表示为 a ⃗ × b ⃗ = A ∗ b = ( 0 − z a y a z a 0 − x a − y a x a 0 ) ( x b y b z b ) \vec a × \vec b = A^*b=\begin{pmatrix}0 & -z_a & y_a \\ z_a & 0 & -x_a \\ -y_a & x_a & 0 \end{pmatrix} \begin{pmatrix}x_b \\ y_b \\ z_b \end{pmatrix} a ×b =Ab= 0zayaza0xayaxa0 xbybzb ;其中 A ∗ A^* A 称为 a ⃗ \vec a a 的dual matrix。
  • 叉积在图形学中的作用:根据叉积结果>0/<0判定两向量之间的左/右关系;判断一个点是否在三角型内(光栅化的基础):三个顶点与该点连成的向量,与按逆(顺)时针方向连接三个顶点的向量对应叉积均>0(<0)。

标准正交坐标系(Orthonormal Bases / Coordinate Frames)

对于一组正交的单位向量基 u ⃗ , v ⃗ , w ⃗ \vec u, \vec v, \vec w u ,v ,w ,任意向量可以用它在三个基向量的投影与基向量相乘的方式分解:
p ⃗ = ( p ⃗   ⋅   u ⃗ ) u ⃗ + ( p ⃗   ⋅   v ⃗ ) v ⃗ + ( p ⃗   ⋅   w ⃗ ) w ⃗ \vec p = (\vec p \, · \, \vec u)\vec u + (\vec p \, · \, \vec v)\vec v + (\vec p \, · \, \vec w)\vec w p =(p u )u +(p v )v +(p w )w


矩阵

矩阵在图形学中主要被用于表示图形变换(transformations)。

矩阵乘积

  • 运算性质:一般来说不满足交换律,满足结合律和分配律。

矩阵的转置、求逆

  • ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT ( A B ) − 1 = B − 1 A − 1 (AB)^{-1}=B^{-1}A^{-1} (AB)1=B1A1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值