3D数学基础:图形与游戏开发第5章笔记

向量运算

线性代数与几何

符号约定

  • 标量,用斜体的小写罗马或希腊字母表示,如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⃗ =(axbx)2+(ayby)2+(azbz)2 .

向量点乘(内积)

运算法则
  • 向量点乘中不能省略点乘号.
  • 向量点乘就是对应分量乘积的和,其结果是一个标量:
    a⃗ b⃗ =ni=1aibi
  • 点乘满足交换律, a⃗ b⃗ =b⃗ a⃗  .
几何解释
  • 点乘描述了两个向量的“相似”程度,点乘结果越大,两向量越相近.
  • 点乘等于向量大小与向量夹角的cos值的积: a⃗ b⃗ =a⃗ b⃗ cosθ .
  • θ=arccos(a⃗ b⃗ a⃗ b⃗ )
    .
  • 零向量和任意其他向量都垂直.
  • 点乘结果的符号可大致确定 θ 的类型:
a⃗ b⃗  θ a⃗  b⃗ 
>0 0θ<90 方向基本相同
=0 θ=90 正交
<0 <script type="math/tex" id="MathJax-Element-44"><0</script> 90<θ180 方向基本相反

向量投影
  • 给定两个向量 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⃗ vcosθn⃗ (5)

    右边同时乘以 n⃗ 
    v⃗ =n⃗ vn⃗ 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=y1z2z1y2z1x2x1z2x1y2y1x2
  • 叉乘的乘法优先于加减法之前计算,当点乘和叉乘在一起时,叉乘优先计算, 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值