目录

  • 一、标量与向量
    • 1、标量
    • 2、向量
      • 1.向量的方向
      • 2.向量的长度
      • 3.向量的计算
        • 1.向量加法
        • 2.向量的减法
        • 3.向量的乘法
          • 1.点乘
            • 1.在图形学中我们经常使用点乘来计算两个向量的夹角,比如制作光照模型时计算光照和法线的夹角。
            • 2.另外点乘还有一个作用,就是计算一个向量在另一个向量上的投影。
            • 3.通过点乘我们可以知道两个向量的是否指向同一方向
            • 4.我们可以通过点乘计算两个向量有多么接近
          • 2.叉乘
            • 1.作用主要用于方便我们建立一个三维空间的直角坐标系。
            • 2.第二个作用:判断一个向量在另一个向量的左还是右![在这里插入图片描述](https://img-blog.csdnimg.cn/abd46569b54d4767af7c5c8db8f5192c.png)
            • 3.第三个作用:判断内外
          • 3.点乘和叉乘的共同应用:把一个向量分解到一个三维直角坐标系上

一、标量与向量

1、标量

只有大小,没有方向的数值即称为标量。比如:长度,面积,温度等。

2、向量

又称为矢量,既有大小又有方向的量。一个向量表示一个点指向另一个点的方向和长度。向量通常可以用一个字母并在字母上加→来表示,如:a⃗\vec{a}a向量。

1.向量的方向

上图描述一个有 点A 指向 点B 的向量 a⃗\boldsymbol{\vec{a}}a 。 在同一个坐标系内,任何 a⃗\boldsymbol{\vec{a}}a 方向和长度相等的向量都和向量 a⃗\boldsymbol{\vec{a}}a 相等。比如由 点A’ 指向 点B’ 的向量 A′⃗\boldsymbol{\vec{A'}}A′ 。用向量的终点减起点即可得到这个向量的值: a⃗\boldsymbol{\vec{a}}a = B - A

2.向量的长度

向量的长度也叫向量的模,可以用两组两条|包裹的向量名来表示,如:∣∣a⃗∣∣\boldsymbol{||\vec{a}||}∣∣a∣∣ 。
还有一种比较特殊的向量叫单位向量,单位向量的意思是模长为1的向量。单位向量用向量名上面加一个尖尖的角来表示,如:a^\boldsymbol{\hat{a}}a^。 用向量除以他自己的模长即可得到他的单位向量,也叫归一化向量:a^=a⃗/∣∣a⃗∣∣\boldsymbol{\hat{a} = \vec{a} / ||\vec{a}||}a^=a/∣∣a∣∣ 。

在图形学中,我们关注一个方向通常都用单位向量,并不用关心它的长度

求模公式
∣∣A⃗∣∣=x2+y2||\vec{A}|| = \sqrt{x^2+y^2}∣∣A∣∣=x2+y2​
这里我们还可以理解为一个向量为列矩阵乘以他的转置矩阵。
A⃗=(xy)\vec{A} = \begin{pmatrix} x \\ y \end{pmatrix}A=(xy​)
AT=(xy)A^T = \begin{pmatrix}x&y\end{pmatrix}AT=(x​y​)

3.向量的计算

1.向量加法


向量加法可以用两种方式来解释,分别是平行四边形法则和三角形法则。
左边的图是平行四边形法则:
两个向量合成时,以表示这两个向量的线段为邻边作平行四边形,这个平行四边形的对角线就表示合向量的大小和方向,这就叫做平行四边形定则
这里可以这样理解:因为向量在同一平面内可以随意移动而不会改变其值,我们可以把向量 a⃗\boldsymbol{\vec{a}}a和向量 b⃗\boldsymbol{\vec{b}}b的起点放在一起,然后再平移另一组向量 a⃗\boldsymbol{\vec{a}}a和向量 b⃗\boldsymbol{\vec{b}}b使得他们围城一个平行四边形。那么这个平行四边形的对角线就是向量 a⃗\boldsymbol{\vec{a}}a和向量 b⃗\boldsymbol{\vec{b}}b相加之和。

右边的图是三角形法则:
把向量 a⃗\boldsymbol{\vec{a}}a和向量 b⃗\boldsymbol{\vec{b}}b首尾相接,从向量 a⃗\boldsymbol{\vec{a}}a的起点指向向量 b⃗\boldsymbol{\vec{b}}b的终点的向量就是a⃗\boldsymbol{\vec{a}}a+b⃗\boldsymbol{\vec{b}}b的结果
这个不仅适用于两个向量,也可以用于多个向量。

2.向量的减法


将两个向量平移至公共起点,减向量的终点指向被减向量的终点的向量即为结果。

3.向量的乘法

1.点乘

1.在图形学中我们经常使用点乘来计算两个向量的夹角,比如制作光照模型时计算光照和法线的夹角。

几何解释
a⃗⋅b⃗=∣∣a⃗∣∣∣∣b⃗∣∣cosθ\boldsymbol{\vec{a} \cdot \vec{b} = ||\vec{a}|| \ ||\vec{b}|| \ cosθ}a⋅b=∣∣a∣∣ ∣∣b∣∣ cosθ
两个向量点乘的结果是一个标量。
cosθ=a⃗⋅b⃗∣∣a⃗∣∣∣∣b⃗∣∣\boldsymbol{cosθ = \frac{\vec{a} \cdot \vec{b}}{||\vec{a}|| \ ||\vec{b}||}}cosθ=∣∣a∣∣ ∣∣b∣∣a⋅b​
当两个向量都为单位向量时,公式可简化为
cosθ=a^⋅b^\boldsymbol{cosθ = \hat{a} \cdot \hat{b}}cosθ=a^⋅b^
代数解释
a⃗⋅b⃗=(xaya)⋅(xbyb)=xaxb+yayb\boldsymbol{\vec{a} \cdot \vec{b} = \begin{pmatrix}x_a \\ y_a \end{pmatrix} \cdot \begin{pmatrix}x_b \\ y_b \end{pmatrix} = x_ax_b + y_ay_b}a⋅b=(xa​ya​​)⋅(xb​yb​​)=xa​xb​+ya​yb​
a⃗⋅b⃗=(xayaza)⋅(xbybzb)=xaxb+yayb+zazb\boldsymbol{\vec{a} \cdot \vec{b} = \begin{pmatrix}x_a \\ y_a \\ z_a\end{pmatrix} \cdot \begin{pmatrix}x_b \\ y_b \\ z_b \end{pmatrix} = x_ax_b + y_ay_b + z_az_b}a⋅b=⎝⎛​xa​ya​za​​⎠⎞​⋅⎝⎛​xb​yb​zb​​⎠⎞​=xa​xb​+ya​yb​+za​zb​
向量的点乘满足交换律、结合律、分配率
a⃗⋅b⃗=b⃗⋅a⃗\boldsymbol{\vec{a} \cdot \vec{b} = \vec{b} \cdot \vec{a}}a⋅b=b⋅a
a⃗⋅(b⃗+c⃗)=a⃗⋅b⃗+a⃗⋅c⃗\boldsymbol{\vec{a} \cdot (\vec{b}+\vec{c}) = \vec{a} \cdot \vec{b} + \vec{a}\cdot \vec{c}}a⋅(b+c)=a⋅b+a⋅c
(ka⃗)⋅b⃗=a⃗⋅(kb⃗)=k(a⃗⋅b⃗)\boldsymbol{(k\vec{a}) \cdot \vec{b} = \vec{a} \cdot (k\vec{b}) = k(\vec{a} \cdot \vec{b})}(ka)⋅b=a⋅(kb)=k(a⋅b)
如果两个向量的点乘为0则这两个向量互相垂直a⃗⋅b⃗=0\boldsymbol{\vec{a} \cdot \vec{b} = 0}a⋅b=0

2.另外点乘还有一个作用,就是计算一个向量在另一个向量上的投影。


投影公式的推导过程如下
b⃗\boldsymbol{\vec{b}}b在a⃗\boldsymbol{\vec{a}}a上的投影是b⊥⃗\boldsymbol{\vec{b_\perp}}b⊥​​,且两个向量的夹角是θ。因为b⊥⃗\boldsymbol{\vec{b_\perp}}b⊥​​是a⃗\boldsymbol{\vec{a}}a上的投影,所以b⊥⃗\boldsymbol{\vec{b_\perp}}b⊥​​的方向和a⃗\boldsymbol{\vec{a}}a相同。可得:
投影值为长度d乘以单位向量a^\hat{a}a^ (1)
a^=a⃗∣∣a⃗∣∣\hat{a}=\frac{\vec{a}}{||\vec{a}||}a^=∣∣a∣∣a​
b⊥⃗=da⃗∣∣a⃗∣∣\vec{b_\perp}=d\frac{\vec{a}}{||\vec{a}||}b⊥​​=d∣∣a∣∣a​
由三角函数可求出d的值 (2)
d=∣∣b⃗∣∣cosθd=||\vec{b}||cosθd=∣∣b∣∣cosθ
根据点乘公式可得 (3)
cosθ=a⃗⋅b⃗∣∣a⃗∣∣∣∣b⃗∣∣cosθ = \frac{\vec{a} \cdot \vec{b}}{||\vec{a}|| \ ||\vec{b}||}cosθ=∣∣a∣∣ ∣∣b∣∣a⋅b​
投影长度:把3代入2
d=∣∣b⃗∣∣a⃗⋅b⃗∣∣a⃗∣∣∣∣b⃗∣∣=a⃗⋅b⃗∣∣a⃗∣∣d=||\vec{b}||\frac{\vec{a} \cdot \vec{b}}{||\vec{a}|| \ ||\vec{b}||}=\frac{\vec{a} \cdot \vec{b}}{||\vec{a}||}d=∣∣b∣∣∣∣a∣∣ ∣∣b∣∣a⋅b​=∣∣a∣∣a⋅b​
投影向量:把3代入2再,2再代入1,可得:
b⊥⃗=∣∣b⃗∣∣a⃗⋅b⃗∣∣a⃗∣∣∣∣b⃗∣∣a⃗∣∣a⃗∣∣=a⃗⋅b⃗∣∣a⃗∣∣2a⃗\vec{b_\perp}=||\vec{b}||\frac{\vec{a} \cdot \vec{b}}{||\vec{a}|| \ ||\vec{b}||}\frac{\vec{a}}{||\vec{a}||}=\frac{\vec{a} \cdot \vec{b}}{||\vec{a}||^2}\vec{a}b⊥​​=∣∣b∣∣∣∣a∣∣ ∣∣b∣∣a⋅b​∣∣a∣∣a​=∣∣a∣∣2a⋅b​a

得到向量b⃗\vec{b}b在向量a⃗\vec{a}a上的投影向量后,我们可根据向量减法求出另一条直角边所代表的的向量b⃗−b⃗⊥\vec{b}-\vec{b}_\perpb−b⊥​

3.通过点乘我们可以知道两个向量的是否指向同一方向


这里a⃗\vec{a}a和b⃗\vec{b}b的点乘结果大于0,我们可知他们方向基本上是一致的。a⃗\vec{a}a和c⃗\vec{c}c的点乘结果小于0则他们方向相反。如果点乘结果等于0则两个向量垂直。

4.我们可以通过点乘计算两个向量有多么接近

参考3。如果a⃗\vec{a}a和b⃗\vec{b}b的点乘结果越接近1,则两个向越接近。越接近-1则两个向量越远离

2.叉乘


几何解释
不同于点乘的结果是一个标量,叉乘的结果是一个向量。该向量同时垂直于两个相乘的向量所定义的平面。因为是一个向量所以有两个属性:一个是模长,一个是方向。模长的计算公式为:
∣∣a⃗×b⃗∣∣=∣∣a⃗∣∣∣∣b⃗∣∣sinθ||\vec{a} \times \vec{b}|| = ||\vec{a}||||\vec{b}||sinθ∣∣a×b∣∣=∣∣a∣∣∣∣b∣∣sinθ
方向则是由两个乘数决定的,根据右手螺旋定则,由乘数指向被乘数,拇指的方向即为叉乘结果的方向

1.作用主要用于方便我们建立一个三维空间的直角坐标系。

代数解释
a⃗×b⃗=(yazb−ybzazaxb−xazbxayb−yaxb)\boldsymbol{\vec{a} \times \vec{b} = \begin{pmatrix} y_az_b-y_bz_a \\ z_ax_b-x_az_b \\ x_ay_b-y_ax_b \end{pmatrix}}a×b=⎝⎛​ya​zb​−yb​za​za​xb​−xa​zb​xa​yb​−ya​xb​​⎠⎞​
另一种算法是把a⃗\vec{a}a写成矩阵的形式A
a⃗×b⃗=A∗b=(0−zayaza0−xa−yaxa0)(xbybzb)\boldsymbol{\vec{a} \times \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=A∗b=⎝⎛​0za​−ya​​−za​0xa​​ya​−xa​0​⎠⎞​⎝⎛​xb​yb​zb​​⎠⎞​
向量的叉乘不满足交换律:a⃗×b⃗=−b⃗×a⃗\vec{a} \times \vec{b} = -\vec{b} \times \vec{a}a×b=−b×a
一个向量和它自己的叉乘是0⃗\vec{0}0:a⃗×a⃗=0⃗\vec{a} \times \vec{a} = \vec{0}a×a=0。因为一个向量与它自己的夹角是0,所以sinθ=0.
a⃗×(b⃗+c⃗)=a⃗×b⃗+a⃗×c⃗\vec{a} \times (\vec{b} + \vec{c}) = \vec{a} \times \vec{b} + \vec{a} \times \vec{c}a×(b+c)=a×b+a×c
a⃗×(kb⃗)=k(a⃗×b⃗)\vec{a} \times (k \vec{b}) = k( \vec{a} \times \vec{b})a×(kb)=k(a×b)

2.第二个作用:判断一个向量在另一个向量的左还是右

根据右手螺旋定则,如果a⃗\vec{a}a和b⃗\vec{b}b在xy平面内,他们两个的的叉乘结果如果是正值则证明b⃗\vec{b}b在a⃗\vec{a}a的左侧,反之b⃗\vec{b}b在a⃗\vec{a}a的右侧。

3.第三个作用:判断内外


分别用AB⃗×AP⃗\vec{AB}\times\vec{AP}AB×AP、BC⃗×BP⃗\vec{BC}\times\vec{BP}BC×BP、CA⃗×CP⃗\vec{CA}\times\vec{CP}CA×CP得出每次P点都在左侧,即为在该区域内部

3.点乘和叉乘的共同应用:把一个向量分解到一个三维直角坐标系上

我们可以定义一个uvw的坐标系
∣∣u⃗∣∣=∣∣v⃗∣∣=∣∣w⃗∣∣=1||\vec{u}||=||\vec{v}||=||\vec{w}||=1∣∣u∣∣=∣∣v∣∣=∣∣w∣∣=1他们三个长度都为1,即为单位向量
u⃗⋅v⃗=v⃗⋅w⃗=u⃗⋅w⃗=0\vec{u}\cdot\vec{v}=\vec{v}\cdot\vec{w}=\vec{u}\cdot\vec{w} = 0u⋅v=v⋅w=u⋅w=0三个向量互相垂直
w⃗=u⃗×v⃗\vec{w}=\vec{u}\times\vec{v}w=u×v叉乘结果等于第三个向量
这样我们就可以得到一个右手的三维直角坐标系。
然后我们把一个向量通过投影分解到这个直角坐标系上。
p⃗=(p⃗⋅u⃗)u⃗+(p⃗⋅v⃗)v⃗+(p⃗⋅w⃗)w⃗\vec{p}=(\vec{p}\cdot\vec{u})\vec{u}+(\vec{p}\cdot\vec{v})\vec{v}+(\vec{p}\cdot\vec{w})\vec{w}p​=(p​⋅u)u+(p​⋅v)v+(p​⋅w)w
投影公式为两个向量的点乘,因为被投的向量是单位向量所以:
在u方向上的投影向量为:∣∣p⃗∣∣cosθu⃗||\vec{p}|| \ cosθ \ \vec{u}∣∣p​∣∣ cosθ u
以此类推可以得到三个方向上的投影向量。即为分解之前的向量

Games101计算机图形学学习笔记:线性代数-向量相关推荐

  1. 计算机图形学学习笔记——Whitted-Style Ray Tracing(GAMES101作业5讲解)

    计算机图形学学习笔记--Whitted-Style Ray Tracing GAMES101作业5讲解 遍历所有的像素生成光线 光线与平面求交 遍历所有的像素生成光线 关于作业五中如何遍历所有的像素, ...

  2. GAMES101-现代计算机图形学学习笔记(作业07)

    GAMES101-现代计算机图形学学习笔记(作业07) Assignment 07 GAMES101-现代计算机图形学学习笔记(作业07) 作业 作业描述 思路 结果 原课程视频链接以及官网 b站视频 ...

  3. 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等

    接上文 计算机图形学 学习笔记(六):消隐算法:Z-buffer,区间扫描线,Warnock,光栅图形学小结 在图形学中,有两大基本工具:向量分析,图形变换.本文将重点讲解向量和二维图形的变换. 5. ...

  4. GAMES101-现代计算机图形学学习笔记(作业02)

    GAMES101-现代计算机图形学学习笔记(作业02) Assignment 02 GAMES101-现代计算机图形学学习笔记(作业02) 作业 作业描述 需要补充的函数 思路 结果 原课程视频链接以 ...

  5. 计算机图形学 学习笔记(九):曲线曲面(一):参数曲线、参数几何代数形式

    接上文 计算机图形学 学习笔记(八):三维图形变换:三维几何变换,投影变换(平行/ 透视 投影) 计算机图形学三大块内容:光栅图形显示(前面已经介绍完了 1-8).几何造型技术.真实感图形显示.光栅图 ...

  6. 计算机图形学 学习笔记(十一):曲线曲面(三):B样条 曲线与曲面

    接上文 计算机图形学 学习笔记(十):曲线曲面(二):Bezier 曲线与曲面 8.4 B样条曲线产生背景及定义 B样条产生的背景 Bezier 曲线曲面有很多优点,比如说可以用鼠标拖动控制顶点以改变 ...

  7. GAMES101-现代计算机图形学学习笔记(作业01)

    GAMES101-现代计算机图形学学习笔记(作业01) Assignment 01 GAMES101-现代计算机图形学学习笔记(作业01) 作业 作业描述 需要补充的函数 思路 结果 原课程视频链接以 ...

  8. 计算机图形学 学习笔记(八):三维图形变换:三维几何变换,投影变换(平行/ 透视 投影)

    接上文 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等 通过三维图形变换,可由简单图形得到复杂图形,三维图形变化则分为三维几何变换和投影变换. 6.1 三维图形几何变换 三维 ...

  9. 计算机图形学 学习笔记(五):多边形裁剪(Suther land-Hodgeman),文字裁剪

    接上文 计算机图形学 学习笔记(四):直线裁剪算法:Cohen-Suther land,中点分割法,Liang-Barsky 光栅图形学算法 3.4 多边形裁剪 之前上一篇文章中,我们介绍了直线段的裁 ...

最新文章

  1. jsp实现简单的分页
  2. linux中shell脚本启动报错
  3. Spring Data JPA 复杂/多条件组合分页查询
  4. 【备份恢复】Oracle 数据备份与恢复微实践
  5. Mysql select into outfile NULL值导出的处理方法
  6. android http请求缓存,Android Http请求和响应使用协议缓冲区
  7. 低价购买(洛谷 1108)
  8. oracle修改redolog路径,oracle修改redo log files路径
  9. jqc3ff继电器引脚图_电气元件中间继电器的知识全面解读,欢迎电工朋友收藏!...
  10. JS中关于clientWidth、offsetWidth、scrollWidth
  11. Spring 自定义注解,配置简单日志注解
  12. (组合数学笔记)拆分数各类定义及公式总结
  13. Linux内核跟踪eBPF:bpftrace一行教程
  14. Python笔记4 实例之批量修改文件名
  15. 相机打开显示服务器错误,Win10相机打不开报错“0xa00f4244”怎么解决?
  16. 商业智能BI全解析,探寻BI本质与发展趋势
  17. c语言学生信息结构体录入文件,C语言—学生信息管理系统
  18. cadence 通孔焊盘_[转载]Cadence学习3(通孔类焊盘的建立)(转)
  19. C++ RALL机制浅谈
  20. anaconda 的安装及环境配置、anaconda创建新的环境、jupyter代码高亮及自动补全、改变jupyter注释的字体及颜色

热门文章

  1. GridControl应用点滴之选中数据行事件
  2. BMS养殖后台管理系统开发文档
  3. Citrix XenApp - VM Hosted Apps
  4. 周明:NLP进步将如何改变搜索体验
  5. 华为鸿蒙电脑操作系统测试版,华为鸿蒙OS测试
  6. hdu 1789 贪心算法
  7. MAP实现一个key,对应多个Value值。
  8. 【jmeter】JMeter日志查看与日志分析
  9. ev6 ev8 ev4a加密视频破解翻录提取教程
  10. Linux系统常用基本命令总结