3D数学基础:图形与游戏开发第5章笔记
来源:互联网 发布:直播串流软件 编辑:程序博客网 时间:2024/05/06 06:16
- 向量运算
- 线性代数与几何
- 符号约定
- 零向量
- 负向量
- 运算法则
- 几何解释
- 向量大小长度或模
- 运算法则
- 几何解释
- 标量与向量的乘法
- 运算法则
- 几何解释
- 标准化向量
- 运算法则
- 几何解释
- 向量的加法和减法
- 运算法则
- 几何解释
- 一个点到另一个点的向量
- 距离公式
- 向量点乘内积
- 运算法则
- 几何解释
- 向量投影
- 向量叉乘叉积
- 运算法则
- 几何解释
- 线性代数公式
- 练习
- 向量运算
向量运算
线性代数与几何
符号约定
- 标量,用斜体的小写罗马或希腊字母表示,如a, b, x, y, z,
θ ,γ ,λ . - 向量,用小写黑粗体字母表示,如a, b, u, v, q, r.
- 矩阵,用大写黑粗体字母表示,如A, B, M, R.
- 注意,不用的文档有不用的符号约定。一种常用的手写约定是,用符号
a⃗ 表示向量
零向量
- 任何集合都存在加性单位元x,对集合中任意元素y,满足y+x=y.
- 零向量是唯一一个没有方向的向量.
- 零向量表示的是”没有位移”.
负向量
对于任何集合,元素x的加性逆元为-x,其与x相加等于加性单位元,也就是x+(-x)=0.
运算法则
−[x,y,z]=[−x,−y,−z] .
几何解释
- 向量变负,将得到一个和原向量大小相等,方向相反的向量.
向量大小(长度或模)
运算法则
- 向量的大小用向量两边家双竖线表示,如
∥v⃗ ∥=∑ni=1v2i−−−−−−√ . - 向量的大小就是向量个分量平方和的平方根,
∥v⃗ ∥=v2x+v2y+v2z−−−−−−−−−−√ . - 向量的大小就是一个非负标量.
几何解释
- 对2D中的任意向量
v⃗ ,能构造一个以v⃗ 为斜边的直角三角形. |x⃗ |2=x⃗ 2 .
标量与向量的乘法
标量与向量相乘,结果将得到一个向量,与原向量平行,但长度不同或方向相反.
运算法则
- 将向量的每个分量都与标量相乘即可,
v⃗ k=(1k)v⃗ =[vx/k,vy/k,vz/k] - 标量与向量相乘时,不需要写乘号.
- 标量与向量的乘法与除法优先级高于加法与减法.
- 标量不能除以向量,且向量不能除以另一个向量.
- 负向量能被认为是乘法的特殊情况,乘以标量-1.
几何解释
- 向量乘以标量k的效果是以因子|k|缩放向量的长度,如果k<0则向量的方向被反转.
标准化向量
单位向量就是大小为1的向量,单位向量也被称作标准化向量或者更简单的称为“法线”.
运算法则
- 对于任意非零向量,都能计算出一个和
v⃗ 方向相同的单位向量v⃗ norm=v⃗ ∥v⃗ ∥,v⃗ ≠0⃗ . - 零向量不能被标准化.
几何解释
- 2D平面中,如果以原点为尾画一个单位向量,那么向量的头将位于圆心在原点的单位圆上.3D空间中,单位向量的头将位于单位球上.
向量的加法和减法
如果两个向量的维数相同,那么它们能相加、或相减,结果向量的维数与原向量相同.
运算法则
- 两个向量相加,将对应分量相加即可.
- 减法解释为加负向量,
a⃗ −b⃗ =a⃗ +(−b⃗ ) . - 向量不能与标量或维数不同的向量相加减.
- 向量的加法满足交换律,但向量减法不满足交换律.
几何解释
- 加法:平移向量,使
a⃗ 的头连接b⃗ 的尾,接着从a⃗ 的尾向b⃗ 的头画一个向量,这就是向量加法的“三角形法则”. - 减法:平移向量,使
a⃗ 的尾连接b⃗ 的尾,接着从b⃗ 的头向a⃗ 的头画一个向量,这就是a⃗ −b⃗ 的结果向量.
一个点到另一个点的向量
- 减法
a⃗ −b⃗ 代表了从b⃗ 到a⃗ 的向量.
距离公式
d⃗ =a⃗ −b⃗ ,a⃗ 到b⃗ 的距离等于d⃗ 的长度.- 距离
(a⃗ ,b⃗ )=∥a⃗ −b⃗ ∥=(ax−bx)2+(ay−by)2+(az−bz)2−−−−−−−−−−−−−−−−−−−−−−−−−−−√ .
向量点乘(内积)
运算法则
- 向量点乘中不能省略点乘号.
- 向量点乘就是对应分量乘积的和,其结果是一个标量:
a⃗ ⋅b⃗ =∑ni=1aibi - 点乘满足交换律,
a⃗ ⋅b⃗ =b⃗ ⋅a⃗ .
几何解释
- 点乘描述了两个向量的“相似”程度,点乘结果越大,两向量越相近.
- 点乘等于向量大小与向量夹角的cos值的积:
a⃗ ⋅b⃗ =∥a⃗ ∥⋅∥b⃗ ∥⋅cosθ . - .
θ=arccos(a⃗ ⋅b⃗ ∥a⃗ ∥⋅∥b⃗ ∥) - 零向量和任意其他向量都垂直.
- 点乘结果的符号可大致确定
θ 的类型:
向量投影
- 给定两个向量
v⃗ 和n⃗ ,能将v⃗ 分解成两个向量:v⃗ ∥ 和v⃗ ⊥ .它们分别与n⃗ 平行和垂直,并且满足v⃗ =v⃗ ∥+v⃗ ⊥ .一般称平行分量v⃗ ∥ 为v⃗ 在n⃗ 上的投影. - 下面求证
v⃗ ∥ :v⃗ ⋅n⃗ =∥v⃗ ∥⋅∥n⃗ ∥⋅cosθ(1) v⃗ ∥=n⃗ ∥v⃗ ∥∥∥n⃗ ∥(2) cosθ=∥v⃗ ∥∥∥v⃗ ∥(3)
变形为cosθ∥v∥→=∥v⃗ ∥∥(4)
(4)式代入(2)式得v⃗ ∥=n⃗ ∥v∥→⋅cosθ∥n⃗ ∥(5)
右边同时乘以∥n⃗ ∥ v⃗ ∥=n⃗ ∥v∥→⋅∥n⃗ ∥⋅cosθ∥n⃗ ∥2(6)
(1)式代入(6)式得v⃗ ∥=n⃗ v⃗ ⋅n⃗ ∥n⃗ ∥2(6) - 由
v⃗ =v⃗ ∥+v⃗ ⊥ 知:v⃗ ⊥=v⃗ −n⃗ v⃗ ⋅n⃗ ∥n⃗ ∥2
向量叉乘(叉积)
向量叉乘结果是向量,并且叉乘不满足交换律
运算法则
- 叉乘公式:
⎡⎣⎢x1y1z1⎤⎦⎥×⎡⎣⎢x2y2z2⎤⎦⎥=⎡⎣⎢y1z2−z1y2z1x2−x1z2x1y2−y1x2⎤⎦⎥ - 叉乘的乘法优先于加减法之前计算,当点乘和叉乘在一起时,叉乘优先计算,
a⃗ ⋅b⃗ ×c⃗ =a⃗ ⋅(b⃗ ×c⃗ ) (三重积). - 叉乘满足反交换律:
a⃗ ×b⃗ =−(b⃗ ×a⃗ ) . - 叉乘也不满足结合律:
(a⃗ ×b⃗ )×c⃗ ≠a⃗ ×(b⃗ ×c⃗ )
几何解释
- 叉乘的得到的向量垂直于原来的两个向量.
a⃗ ×b⃗ 的长度等于向量的大小与向量夹角sin值的积,如:∥a⃗ ×b⃗ ∥=∥a⃗ ∥⋅∥b⃗ ∥⋅sinθ (以a⃗ 和b⃗ 为边的平行四边形面积).- 叉乘对零向量的解释为:它平行于任意其他向量.
- 在左手坐标系中,让
a⃗ 和b⃗ 的尾部相连,如果a⃗ 和b⃗ 呈顺时钟,那么a⃗ ×b⃗ 垂直于a⃗ 和b⃗ 所在平面且方向向上.
线性代数公式
- 向量加法的交换律:
a⃗ +b⃗ =b⃗ +a⃗ - 向量减法的定义:
a⃗ −b⃗ =a⃗ +(−b⃗ ) - 向量加法的结合律:
(a⃗ +b⃗ )+c⃗ =a⃗ +(b⃗ +c⃗ ) - 标量乘法的结合律:
s(ta⃗ )=(st)a⃗ - 标量乘法对向量加法的分配律:
k(a⃗ +b⃗ )=ka⃗ +kb⃗ - 向量乘以标量相当于以标量的绝对值为因子缩放向量:
∥ka⃗ ∥=|k|∥a⃗ ∥ - 向量的模非负:
∥a⃗ ∥≥0 - 勾股定理在向量中的应用:若
a⃗ ⊥b⃗ ,则∥a⃗ ∥2+∥b⃗ ∥2=∥a⃗ +b⃗ ∥2 - 向量加法的三角形法则:
∥a⃗ ∥+∥b⃗ ∥≥∥a⃗ +b⃗ ∥ - 点乘的交换律:
a⃗ ⋅b⃗ =b⃗ ⋅a⃗ - 用点乘定义向量的大小:
∥a⃗ ∥=a⃗ ⋅a⃗ −−−−√ - 标量乘法对点乘的结合律:
k(a⃗ ⋅b⃗ )=(ka⃗ )⋅b⃗ =a⃗ ⋅(kb⃗ ) - 点乘对向量加减法的分配律:
a⃗ ⋅(b⃗ +c⃗ )=a⃗ ⋅b⃗ +a⃗ ⋅c⃗ - 任意向量与自身的叉乘等于零向量:
a⃗ ×a⃗ =0⃗ - 叉乘逆交换律:
a⃗ ×b⃗ =−(b⃗ ×a⃗ ) - 叉乘的操作数同时变负得到相同的结果:
a⃗ ×b⃗ =(−a⃗ )×(−b⃗ ) - 标量乘法对叉乘的结合律:
k(a⃗ ×b⃗ )=(ka⃗ )×b⃗ =a⃗ ×(kb⃗ ) - 叉乘对向量加法的分配律:
a⃗ ×(b⃗ +c⃗ )=a⃗ ×b⃗ +a⃗ ×c⃗ - 向量与另一向量的叉乘再点乘该向量本身等于零:
a⃗ ⋅(a⃗ ×b⃗ )=0
练习
阅读全文
0 0
- 3D数学基础:图形与游戏开发第5章笔记
- 3D数学基础:图形与游戏开发(第6章3D向量类)笔记
- 3D数学基础:图形与游戏开发 第3章笔记
- 3D数学基础:图形与游戏开发第4章笔记
- 3D数学基础:图形与游戏开发(第7章矩阵)笔记
- 3D数学基础,图形与游戏开发笔记3
- 3D数学基础,图形与游戏开发笔记1
- 3D数学基础,图形与游戏开发笔记2
- 数学原来这么有用-笔记《3D数学基础:图形与游戏开发》
- <<3D数学基础:图形与游戏开发>>读后感
- 3D数学基础:图形与游戏开发_读书笔记
- 《3D数学基础:图形与游戏开发》读后感
- 3D数学基础图形与游戏开发之 坐标系
- 3D数学基础:图形与游戏开发》阅读感言
- 3D数学基础图形与游戏开发之坐标系
- 《3D数学基础:图形与游戏开发 》
- 3D数学基础 图形与游戏开发的学习 (四)[2D笛卡尔数学]
- 3D数学基础 图形与游戏开发的学习 第三章 多坐标系
- 51Nod-1593-公园晨跑
- 万向节死锁(Gimbal Lock)
- 234. Palindrome Linked List(java)
- sql语句group by以及count()的一些思考
- 神经网络与深度学习笔记——第3章 改进神经网络的学习方法
- 3D数学基础:图形与游戏开发第5章笔记
- 深度学习之二——相关数学基础(线性代数理论)
- Ubuntu16.0微信安装
- Spring MVC不进入Controller,报错404解决方案
- 配置Sublime Text3为Python IDE
- linux 下 gdb没有符号表被读取。请使用"file" 命令
- caffe2实现多任务学习
- JavaScript之Array类型(数组)
- 从开始到结束