首页 > 专栏 > 计算机图形学 > 文章详情
线性代数基础:向量的叉乘 发布于:2023-02-12 17:12:37   来源:李伟的博客   查看:73  讨论:0

前言

叉乘又叫叉积、外积。ss3【易塔云】自习室

回顾点积的名字,它还叫內积。ss3【易塔云】自习室

那么叉积和点积,外积和內积,是不是如其名字样有所关联呢?ss3【易塔云】自习室

这个答案是肯定的。ss3【易塔云】自习室

叉乘是两个向量的交叉相乘,所以叫叉乘。ss3【易塔云】自习室

叉乘的返回值如点积一般,是一个实数,此数有正负。ss3【易塔云】自习室

使用叉乘可以计算计算以两个向量为临边的平行四边形和三角形的面积,以此原理便可以计算户型图的面积。ss3【易塔云】自习室

我们之前说过,向量可以用坐标点位表示,也可以用方向和长度表示。ss3【易塔云】自习室

所以叉乘的求值方式也有两种:ss3【易塔云】自习室

  • 基于向量的长度和夹角求叉乘
  • 基于向量的坐标点求叉乘

接下来咱们就详细说一下这两个求叉乘的方式。ss3【易塔云】自习室
ss3【易塔云】自习室
第一章 基于向量的长度和夹角求叉乘ss3【易塔云】自习室
 ss3【易塔云】自习室

1-基本公式

image-20201219144006511ss3【易塔云】自习室

已知:ss3【易塔云】自习室

  • 向量a的长度是|a|
  • 向量b的长度是|b|
  • 向量a和向量b的夹角是θ

则向量a和向量b的叉乘为:ss3【易塔云】自习室

a^b=|a|*|b|*sinθ

上面的公式就是基于向量的长度和夹角求叉乘的公式。ss3【易塔云】自习室

这时,有的同学可能会疑惑,为什么这么写就是叉乘的公式了?这么做有什么意义吗?还是它暗合了图形的某种规律?ss3【易塔云】自习室

为了解开这个谜团,接下来咱们说一下向量的正投影。ss3【易塔云】自习室

2-向量在轴上的正射投影

我们先分析一下向量的叉乘公式:ss3【易塔云】自习室

a^b=|a|*|b|*sinθ

在这里面我们看见了|b|*sinθ,而在三角函数里有这么一个公式:ss3【易塔云】自习室

sinθ=y/r
y=r*sinθ

对比上面的公式,我们可以猜测:ss3【易塔云】自习室

  • |b|是不是可以作为斜边?
  • |b|*cosθ 是不是一条对边?

那咱们画个图看一下:ss3【易塔云】自习室

image-20201219144719283ss3【易塔云】自习室

过点B 做OA的垂线BD,则:ss3【易塔云】自习室

BD=|b|*sinθ

向量BD就叫做向量OB在向量OA的垂线上的正射投影。ss3【易塔云】自习室

因此,叉乘可以看成向量b在向量a的垂线上的正射投影和向量a的长度的乘积。ss3【易塔云】自习室

接下来,咱们根据上图分析一下叉乘的性质:ss3【易塔云】自习室

  • 正射投影的值是个实数,可正可负。
  • 两个向量的夹角的值域是[-180°,180°]
  • 两个向量的夹角和叉乘的关系:
    • 当θ=90° 时,b⊥a ,正射投影=|b|,叉乘=|a|*|b|
    • 当θ=-90° 时,b⊥a ,正射投影=-|b|,叉乘=-|a|*|b|
    • 当θ=0°或180° 时,正射投影=0,叉乘=0
    • 当θ∈(0°,180°) 时,正射投影>0,叉乘>0
    • 当θ∈(-180°,0°) 时,正射投影<0,叉乘<0
  • a^b≤|a|*|b|,因为叉乘可正、可负、可零,|a|*|b|≥0

关于叉乘的由来我就说到这,接下来咱们说一下叉乘的运算规律。ss3【易塔云】自习室

3-叉乘的运算律

3-1-交换律

a^b=-b^a

简单论证一下:ss3【易塔云】自习室

由叉乘的定义得:ss3【易塔云】自习室

a^b=|a|*|b|*sin<a,b>
b^a=|b|*|a|*sin<b,a>

因为:<a,b>和<b,a>互为相反数ss3【易塔云】自习室

所以:sin<a,b>和sin<b,a>互为相反数ss3【易塔云】自习室

所以:a^b和b^a互为相反数ss3【易塔云】自习室

所以:ss3【易塔云】自习室

a^b=-b^a

注:ss3【易塔云】自习室

如果我们将点积理解为加法,那叉乘就像减法,如;ss3【易塔云】自习室

a+b=b+a
A*b=b*a

a-b=-(b-a)
a^b=-b^a

3-2-分配率

(a+b)^c=a^c+b^c

这里我就不再论证了,可参考点积的论证思路。ss3【易塔云】自习室

3-3-其它公式

将向量的交换律和分配率结合起来,还可以推出其它公式。ss3【易塔云】自习室

(a+b)²=a²+2ab+b²
(a+b)*(a-b)=a²-b²

第二章 基于向量的坐标点求叉乘ss3【易塔云】自习室
 ss3【易塔云】自习室

1-基本公式

image-20210106092441814ss3【易塔云】自习室

已知:ss3【易塔云】自习室

  • 向量a和向量b所在的坐标系为二维直角坐标系
  • 向量a的坐标点位是(a1,a2)
  • 向量b的坐标点位是(b1,b2)

则向量a和向量b的叉乘为:ss3【易塔云】自习室

a^b=a1*b2-a2*b1

上面的公式就是基于向量的坐标点求叉乘的公式。ss3【易塔云】自习室

至于这个公式是怎么来的,咱们可以用图形来论证一下。ss3【易塔云】自习室

image-20201231230441252ss3【易塔云】自习室

已知:ss3【易塔云】自习室

  • 向量OA=a=(a1,a2)
  • 向量OB=b=(b1,b2)
  • ∠<a,b>=θ

求证:ss3【易塔云】自习室

a^b=a1*b2-a2*b1

证:ss3【易塔云】自习室

因为:ss3【易塔云】自习室

叉乘是向量b在另一个向量a的垂线上的正射影与向量a的长度的乘积。ss3【易塔云】自习室

所以:ss3【易塔云】自习室

叉乘可视之为以向量a、b为临边的平行四边形的面积。ss3【易塔云】自习室

所以:ss3【易塔云】自习室

S▱OACB=|a|*|b|*sinθ

接下来我们用坐标点求一下S▱OACBss3【易塔云】自习室

由图可知:ss3【易塔云】自习室

S▱OACB等于包含了▱OACB的矩形OC1CC1的面积,减去除▱OACB 之外的部分。ss3【易塔云】自习室

所以:ss3【易塔云】自习室

S▱OACB=(a1+b1)*(b2+a2)-b1*a2-a1*a2/2-b1*b2/2-b1*a2-b2*b1/2-a2*a1/2
S▱OACB=a1*b2+b1*b2+a1*a2+b1*a2-b1*a2-a1*a2/2-b1*b2/2-b1*a2-b2*b1/2-a2*a1/2
S▱OACB=a1*b2+b1*b2+a1*a2+b1*a2-2*b1*a2-a1*a2-b1*b2
S▱OACB=a1*b2-b1*a2

所以:ss3【易塔云】自习室

a^b=a1*b2-b1*a2

第三章 用叉乘计算多边形的面积ss3【易塔云】自习室
 ss3【易塔云】自习室

之前我们用叉乘计算出了以向量a、b为邻边的平行四边形的面积。ss3【易塔云】自习室

那么以向量a、b为邻边的三角形面积也可以迎刃而解,即平行四边形的面积的一半。ss3【易塔云】自习室

利用这个原理我们便可以去求多边形的面积,无论这个多边形是凸多边形还是凹多边形。ss3【易塔云】自习室

实例

clipboard.pngss3【易塔云】自习室

已知:点A、点B、点C、点D的坐标位ss3【易塔云】自习室

求:多边形ABCD的面积ss3【易塔云】自习室

解:ss3【易塔云】自习室

多边形ABCD的面积可以理解为:ss3【易塔云】自习室

S△ACD-S△ABC

所以我们可以将其拆成两个三角形来分析:ss3【易塔云】自习室

由叉乘公式可知:ss3【易塔云】自习室

S△ABC=AB^AC/2
S△ACD=AC^AD/2

在此我们还要知道叉乘的结果是有正负的,因为一个向量在另一个向量的垂线上的正射影是有正负的。ss3【易塔云】自习室

因此,我在我在计算两个三角的面积的时候是按照多边形从x轴正方向到y轴正方向的绘制顺序排列向量的。ss3【易塔云】自习室

所以,通过坐标系不难看出:ss3【易塔云】自习室

-90°<∠BAC<0
90°>∠CAB>0

所以:ss3【易塔云】自习室

sin∠BAC<0
sin∠CAB>0

因为:ss3【易塔云】自习室

AB^AC=|AB|*|AC|*∠BAC
AC^AD=|AC|*|AD|*∠CAD

所以:ss3【易塔云】自习室

AB^AC<0
AC^AD>0

所以多边形ABCD的面积就是:ss3【易塔云】自习室

(AB^AC+AC^AD)/2

总结ss3【易塔云】自习室
ss3【易塔云】自习室
此理适用于更多边数的多边形,其公式为:ss3【易塔云】自习室

多边形面积 = (a^b + b^c + ... + f^g)/2ss3【易塔云】自习室

 ss3【易塔云】自习室

发表评论

  • 匿名
还没有注册?