Arzie100 发表于 2022-5-27 14:48

向量运算与应用

什么是向量

向量指具有大小和方向的量,一般记做: a ,,,同时也可以用数对的形式表示,例如:(x, y) ,(7,8,9)
向量的矩阵表示:
https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D+%3D+%5Cbegin%7Bbmatrix%7D+x+%5C%5Cy%5Cend%7Bbmatrix%7D
https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%3D%5Cbegin%7Bbmatrix%7D+x%5C%5C+y%5C%5C+z+%5Cend%7Bbmatrix%7D
向量的大小,也就是向量的长度(一般称作为 模),向量a的模记为: https://www.zhihu.com/equation?tex=%5Cleft+%7C+%5Cvec%7Ba%7D+%5Cright+%7C ,若 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D+%3D+%5Cleft+%28+x%2Cy%2Cz+%5Cright+%29 ,则 https://www.zhihu.com/equation?tex=%5Cleft+%7C+%5Cvec%7Ba%7D+%5Cright+%7C+%3D+%5Csqrt%7Bx%5E2+%2B+y%5E2%2B+z%5E2%7D
单位向量:即模为1的向量,可以记作   。一个向量的单位向量,可以通过除以它模得到,即 https://www.zhihu.com/equation?tex=%5Chat%7Ba%7D+%3D+%5Cfrac%7B%5Cvec%7Ba%7D%7D%7B%7C+%5Cvec%7Ba%7D%7C%7D。
零向量:即模为0的向量,零向量的方向是任意的
相反向量:长度相等方向相反的向量,的相反向量为 https://www.zhihu.com/equation?tex=-%5Cvec%7Ba%7D
平行(共线)向量:方向相同或相反的非零向量,记作 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D+%2F%2F+%5Cvec%7Bb%7D
向量运算

设 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%3D%28x_1%2Cy_1%2Cz_1%29 , https://www.zhihu.com/equation?tex=%5Cvec%7Bb%7D%3D%28x_2%2Cy_2%2Cz_2%29
加法

向量的加法满足平行四边形法则和三角形法则, https://www.zhihu.com/equation?tex=%5Cvec%7BOA%7D+%2B+%5Cvec%7BOB%7D+%3D+%5Cvec%7BOC%7D


可以将其想象成一个长方形求对角线。
运算过程:

https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D+%2B+%5Cvec%7Bb%7D+%3D+%28x_1%2Cy_1%2Cz_1%29%2B%28x_2%2Cy_2%2Cz_2%29%3D%28x_1%2Bx_2%2Cy_1%2By_2%2Cz_1%2Bz_2%29
https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D+%2B+%5Cvec%7Bb%7D+%3D+%5Cbegin%7Bbmatrix%7D+x_%7B1%7D%5C%5C+y_%7B1%7D+%5C%5Cz_1%5Cend%7Bbmatrix%7D+%2B+%5Cbegin%7Bbmatrix%7D+x_%7B2%7D%5C%5C+y_%7B2%7D+%5C%5Cz_2%5Cend%7Bbmatrix%7D+%3D+%5Cbegin%7Bbmatrix%7D+x_%7B1%7D+%2B+x_%7B2%7D%5C%5C+y_%7B1%7D+%2B+y_%7B2%7D+%5C%5Cz_1%2Bz_2%5Cend%7Bbmatrix%7D
一些运算律:

https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D+%2B+0+%3D+0+%2B+%5Cvec%7Ba%7D+%3D+%5Cvec%7Ba%7D
交换律: https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D+%2B+%5Cvec%7Bb%7D+%3D+%5Cvec%7Bb%7D+%2B+%5Cvec%7Ba%7D
p data-pid="6PQXNsG7">结合律: https://www.zhihu.com/equation?tex=%5Cleft+%28+%5Cvec%7Ba%7D+%2B+%5Cvec%7Bb%7D+%5Cright%29+%2B+%5Cvec%7Bc%7D+%3D+%5Cvec%7Ba%7D+%2B+%5Cleft+%28+%5Cvec%7Bb%7D+%2B+%5Cvec%7Bc%7D+%5Cright%29 </p>减法


https://www.zhihu.com/equation?tex=%5Cvec%7BOA%7D+-+%5Cvec%7BOB%7D+%3D+%5Cvec%7BBA%7D ,如图


运算过程:

https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D+-+%5Cvec%7Bb%7D+%3D+%28x_1%2Cy_1%2Cz_1%29%2B%28x_2%2Cy_2%2Cz_2%29%3D%28x_1-x_2%2Cy_1-y_2%2Cz_1-z_2%29
https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D+-+%5Cvec%7Bb%7D+%3D+%5Cbegin%7Bbmatrix%7D+x_%7B1%7D%5C%5C+y_%7B1%7D+%5C%5Cz_1%5Cend%7Bbmatrix%7D+-+%5Cbegin%7Bbmatrix%7D+x_%7B2%7D%5C%5C+y_%7B2%7D%5C%5Cz_2+%5Cend%7Bbmatrix%7D+%3D+%5Cbegin%7Bbmatrix%7D+x_%7B1%7D+-+x_%7B2%7D%5C%5C+y_%7B1%7D+-+y_%7B2%7D+%5C%5Cz_1-z_2%5Cend%7Bbmatrix%7D
一些运算律:

https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%2B%28-%5Cvec%7Bb%7D%29%3D%5Cvec%7Ba%7D-%5Cvec%7Bb%7D
实数和向量的积

设有实数 k,和向量的乘积还是一个向量,记做 https://www.zhihu.com/equation?tex=k%5Cvec%7Ba%7D ,且 https://www.zhihu.com/equation?tex=+%7C+k+%5Cvec%7Ba%7D+%7C+%3D++%7C+k%7C+%2A+%7C+%5Cvec%7Ba%7D+%7C ,如果 https://www.zhihu.com/equation?tex=k%5Cvec%7Ba%7D%3D0 ,则 k = 0 或 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%3D0
其几何意义为:向量的有向线段的伸长或者压缩。
一些运算律:
结合律: https://www.zhihu.com/equation?tex=%28+k%5Cvec%7Ba%7D+%29%5Ccdot+%5Cvec%7Bb%7D+%3D+k%28%5Cvec%7Ba%7D+%5Ccdot+%5Cvec%7Bb%7D+%29+%3D+%5Cvec%7Ba%7D+%5Ccdot+%28+k%5Cvec%7Bb%7D+%29
分配律: https://www.zhihu.com/equation?tex=%28+j%2B+k%29+%5Cvec%7Ba%7D+%3D+j%5Cvec%7Ba%7D+%2B+k%5Cvec%7Ba%7D

https://www.zhihu.com/equation?tex=k%28+%5Cvec%7Ba%7D+%2B+%5Cvec%7Bb%7D+%29+%3Dk%5Cvec%7Ba%7D+%2Bk%5Cvec%7Bb%7D
向量的点乘(点积,内积,数量积)(Dot Product)

两个向量的数量积(点积,内积,点乘)是一个数量,没有方向,记作 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Ccdot+%5Cvec%7Bb%7D
代数定义: https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Ccdot+%5Cvec%7Bb%7D+%3D+x_%7B1%7Dx_%7B2%7D%2By_%7B1%7Dy_%7B2%7D%2Bz_1z_2
几何定义:我们将和的夹角记作,且
若,不共线,则   
若,共线,则 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Ccdot+%5Cvec%7Bb%7D+%3D+%5Cpm+%5Cleft+%7C+%5Cvec%7Ba%7D+%5Cright+%7C+%5Ccdot+%5Cleft+%7C+%5Cvec%7Bb%7D+%5Cright+%7C ,因为此时 https://www.zhihu.com/equation?tex=%5Ctheta%3D0 则 https://www.zhihu.com/equation?tex=%5Ccos%5Ctheta%3D1,若两个向量方向相反,则认为https://www.zhihu.com/equation?tex=%5Ctheta%3D%5Cpi 则 https://www.zhihu.com/equation?tex=%5Ccos%5Ctheta%3D-1。
一些运算律:
交换律: https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Ccdot+%5Cvec%7Bb%7D%3D%5Cvec%7Bb%7D%5Ccdot+%5Cvec%7Ba%7D
结合律: https://www.zhihu.com/equation?tex=%28+k%5Cvec%7Ba%7D+%29%5Ccdot+%5Cvec%7Bb%7D+%3D+k%28+%5Cvec%7Ba%7D%5Ccdot+%5Cvec%7Bb%7D+%29
分配率: https://www.zhihu.com/equation?tex=%28+%5Cvec%7Ba%7D+%2B+%5Cvec%7Bb%7D+%29%5Ccdot+%5Cvec%7Bc%7D+%3D%5Cvec%7Ba%7D%5Ccdot+%5Cvec%7Bc%7D+%2B+%5Cvec%7Bb%7D%5Ccdot+%5Cvec%7Bc%7D
一些性质:

https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Ccdot+%5Cvec%7Ba%7D+%3D+%7C+%5Cvec%7Ba%7D+%7C+%5E%7B2%7D
若两个向量互相垂直,则 https://www.zhihu.com/equation?tex=%5Ccos%5Ctheta%3D0因此 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Cperp+%5Cvec%7Bb%7D+%5Cleftrightharpoons+%5Cvec%7Ba%7D%5Ccdot+%5Cvec%7Bb%7D+%3D+0
点乘的实际使用场景

1.计算两个向量的夹角,通过点乘我们可以得到:

https://www.zhihu.com/equation?tex=cos%5Ctheta+%3D+%5Cfrac%7B%5Cvec%7Ba%7D%5Ccdot+%5Cvec%7Bb%7D%7D%7B%7C+%5Cvec%7Ba%7D+%7C+%5Ccdot+%7C+%5Cvec%7Bb%7D+%7C%7D+%3D+%5Cfrac%7Bx_1x_2%2By_1y_2%2Bz_1z_2%7D%7B%5Csqrt%7Bx_1%5E2%2By_1%5E2%2Bz_1%5E2%7D%2A%5Csqrt%7Bx_2%5E2%2By_2%5E2%2Bz_2%5E2%7D%7D
若和为单位向量,即模为1,那么上面的式子分母即为1,得

https://www.zhihu.com/equation?tex=cos%5Ctheta+%3D+x_1x_2%2By_1y_2%2Bz_1z_2

2.可以用来求一个向量在另一个向量上的投影,例如图中在上的投影,我们记作


因为是   在上的投影,因此 的方向和相同。因此 https://www.zhihu.com/equation?tex=%5Cvec%7Bb%7D+_%7B%5Cperp+%7D+%3D+k+%5Chat%7Ba%7D ,k为一个常量, 为的单位向量。

的值我们很好求得: https://www.zhihu.com/equation?tex=%5Chat%7Ba%7D%3D%5Cfrac%7B%5Cvec%7Ba%7D%7D%7B%7C%5Cvec%7Ba%7D%7C%7D
接下来要看看 k 值的含义,因为和方向相同, 因此不仅是的单位向量,同时也是的单位向量,因此 k 即为的模,即 https://www.zhihu.com/equation?tex=k%3D%7C%5Cvec%7Bb%7D+_%7B%5Cperp+%7D%7C
然后由于的结尾与的结尾的连线,垂直于(如图,也是投影的性质),因此通过三角函数,我们可以得知 https://www.zhihu.com/equation?tex=%7C%5Cvec%7Bb%7D+_%7B%5Cperp+%7D%7C%3D%7C%5Cvec%7Bb%7D+%7C%2A%5Ccos%5Ctheta

https://www.zhihu.com/equation?tex=%7C%5Cvec%7Bb%7D%7C 的值很好求得, https://www.zhihu.com/equation?tex=%5Ccos%5Ctheta 我们可以通过点乘得到,因此即可求得k的值,然后求得   
如图,通过向量的减法,我们可以得到 https://www.zhihu.com/equation?tex=%5Cvec%7Bb%7D-%5Cvec%7Bb%7D+_%7B%5Cperp+%7D ,这样就把分解成了两个互相垂直的向量。
若我们要把向量 (x, y, z) 投影到x,y,z的某个平面上,只需要把垂直于该平面的那个轴对应的值设置为0即可,例如:投影到xy平面,即为 (x, y, 0) ,投影到yz平面上,即为 (0, y, z)。若投影到某个轴上,则只保留该轴的值即可,例如:投影到x轴上,即为 (x, 0, 0),投影到y轴上,即为 (0, y, 0)。

3.判断一个向量的朝向是否和另个向量相似,即两个向量的方向性,如图


图中我们可以认为,   和一样,同时朝向前方,而 https://www.zhihu.com/equation?tex=%5Cvec%7Bc%7D 朝向的是的后方。我们可以通过点积的值来判断, > 0 则为同方向(0 <= 夹角 < 90), < 0 则为反方向(90 < 夹角 <= 180), = 0 即为垂直(夹角 = 90)。
因为   ,若两个都是非零向量,则 https://www.zhihu.com/equation?tex=%7C+%5Cvec%7Ba%7D+%7C+%5Ccdot++%7C+%5Cvec%7Bb%7D+%7C%3E+0 ,通过三角函数可知:当 https://www.zhihu.com/equation?tex=0+%5Cleqslant+%5Ctheta+%3C+%5Cfrac%7B%5Cpi%7D%7B2%7D , https://www.zhihu.com/equation?tex=cos%5Ctheta+%3E+0 ,因此点积的值 > 0,当 https://www.zhihu.com/equation?tex=%5Ctheta%3D%5Cfrac%7B%5Cpi%7D%7B2%7D , https://www.zhihu.com/equation?tex=cos%5Ctheta+%3D+0 ,因此点积的值 = 0,当 https://www.zhihu.com/equation?tex=%5Cfrac%7B%5Cpi%7D%7B2%7D+%3C%5Ctheta++%5Cleqslant+%5Cpi , https://www.zhihu.com/equation?tex=%5Ccos%5Ctheta%3C0 ,因此点积的值 < 0。

4.两个向量是否接近,夹角越小,即两个向量越接近。通过上面3提到的,我们只能通过点积的值来判断夹角是钝角还是锐角还是直角,那么如何只通过点积的值来判断夹角大小呢?那就是我们把两个向量的单位向量进行点积。这样就会使 https://www.zhihu.com/equation?tex=%7C+%5Cvec%7Ba%7D+%7C+%5Ccdot+%7C+%5Cvec%7Bb%7D+%7C+%3D+1 ,因此 https://www.zhihu.com/equation?tex=%5Chat%7Ba%7D%5Ccdot+%5Chat%7Bb%7D+%3D+cos%5Ctheta ,那么当值为 1 时,代表两向量方向正好相同,当值越来越小时,代表两个向量离得越来越远,当值为 -1 时,代表两向量方向正好相反。因此两个向量的单位向量的点积越接近1,两个向量越接近。
这个性质可以应用在高光的显示上,当人眼看向目标的向量和光折射的向量,它们越接近则高光效果越明显。
向量的叉乘(叉积,向量积,外积)(Cross Product)

两个向量的向量积(叉积,叉乘,外积)是一个向量,记作(或者 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D+%5Cwedge+%5Cvec%7Bb%7D )
我们将和的夹角记作,且 ,那么叉乘得到的向量的模长为:

https://www.zhihu.com/equation?tex=%7C+%5Cvec%7Ba%7D+%5Ctimes+%5Cvec%7Bb%7D+%7C+%3D+%7C+%5Cvec%7Ba%7D+%7C+%5Ccdot+%7C+%5Cvec%7Bb%7D+%7C%5Ccdot+sin%5Ctheta
方向:与这两个向量所在平面垂直,且遵守右手螺旋定则(四指方向代表旋转的方向,右手四指从转向时,大拇指的方向即向量积的方向)


用矩阵表示:
https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Ctimes+%5Cvec%7Bb%7D+%3D+%5Cbegin%7Bbmatrix%7D+0%26+-z_a%26+y_a%5C%5C+z_a%26+0%26+-x_a+%5C%5C+-y_a+%26+x_a%260+%5Cend%7Bbmatrix%7D%5Cbegin%7Bbmatrix%7D+x_b%5C%5C+y_b+%5C%5C+z_b+%5Cend%7Bbmatrix%7D%3D+%5Cleft+%28+y_%7Ba%7Dz_%7Bb%7D-z_%7Ba%7Dy_%7Bb%7D+%2Cz_%7Ba%7Dx_%7Bb%7D-x_%7Ba%7Dz_%7Bb%7D+%2Cx_%7Ba%7Dy_%7Bb%7D-y_%7Ba%7Dx_%7Bb%7D+%5Cright+%29
若为二维向量,即z的值为0,因此 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Ctimes+%5Cvec%7Bb%7D+%3D%280%2C0%2C+x_%7Ba%7Dy_%7Bb%7D-y_%7Ba%7Dx_%7Bb%7D%29 ,又因为二维没有z轴,所以常写作 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Ctimes+%5Cvec%7Bb%7D+%3D+x_%7Ba%7Dy_%7Bb%7D-y_%7Ba%7Dx_%7Bb%7D ,该常量其实就是 https://www.zhihu.com/equation?tex=%7C%5Cvec%7Ba%7D%5Ctimes+%5Cvec%7Bb%7D+%7C 。
一些运算律:

https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Ctimes+%5Cvec%7Bb%7D+%3D+-%5Cvec%7Bb%7D%5Ctimes+%5Cvec%7Ba%7D

https://www.zhihu.com/equation?tex=%28+k%5Cvec%7Ba%7D+%29%5Ctimes+%5Cvec%7Bb%7D+%3D+k%28+%5Cvec%7Ba%7D%5Ctimes+%5Cvec%7Bb%7D+%29

https://www.zhihu.com/equation?tex=%28+%5Cvec%7Ba%7D+%2B+%5Cvec%7Bb%7D+%29%5Ctimes+%5Cvec%7Bc%7D+%3D%5Cvec%7Ba%7D%5Ctimes+%5Cvec%7Bc%7D+%2B+%5Cvec%7Bb%7D%5Ctimes+%5Cvec%7Bc%7D
一些性质:

https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%5Ctimes+%5Cvec%7Ba%7D+%3D+%5Cvec%7B0%7D (因为 sin0 = 0)
若两个向量互相平行,则 https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%2F%2F+%5Cvec%7Bb%7D+%5Cleftrightharpoons+%5Cvec%7Ba%7D%5Ctimes+%5Cvec%7Bb%7D+%3D+%5Cvec%7B0%7D

https://www.zhihu.com/equation?tex=%7C+%5Cvec%7Ba%7D+%5Ctimes+%5Cvec%7Bb%7D+%7C 的值是以和为边的平行四边形的面积,同样的以和为边的三角形的面积自然就是 https://www.zhihu.com/equation?tex=%5Cfrac%7B%7C+%5Cvec%7Ba%7D+%5Ctimes+%5Cvec%7Bb%7D+%7C%7D%7B2%7D (至于为什么,下面第四点解释)
叉乘实际使用场景

1.建立三维坐标中的坐标系,例如给定一个x轴和y轴,我们可以通过x轴叉积y轴来获得z轴

[*]
[*]https://www.zhihu.com/equation?tex=%5Cvec%7By%7D%5Ctimes+%5Cvec%7Bx%7D+%3D+-%5Cvec%7Bz%7D
[*]https://www.zhihu.com/equation?tex=%5Cvec%7By%7D%5Ctimes+%5Cvec%7Bz%7D+%3D+%5Cvec%7Bx%7D
[*]https://www.zhihu.com/equation?tex=%5Cvec%7Bz%7D%5Ctimes+%5Cvec%7By%7D+%3D+-%5Cvec%7Bx%7D
[*]https://www.zhihu.com/equation?tex=%5Cvec%7Bz%7D%5Ctimes+%5Cvec%7Bx%7D+%3D+%5Cvec%7By%7D
[*]https://www.zhihu.com/equation?tex=%5Cvec%7Bx%7D%5Ctimes+%5Cvec%7Bz%7D+%3D+-%5Cvec%7By%7D
注:若三维坐标系的   那么该坐标系即为右手坐标系。

2.判断一个向量在另一个向量的左侧还是右侧。例如我们给定两个向量https://www.zhihu.com/equation?tex=%5Cvec%7Ba%7D%3D+%282%2C+3%2C+0%29 , https://www.zhihu.com/equation?tex=%5Cvec%7Bb%7D%3D+%283%2C+1%2C+0%29 ,我们想知道在的左侧还是右侧,该如何判定?
根据和的值,我们可以看出它俩都在 xy 平面上,根据叉积的性质我们可以知道得到的向量一定垂直于 xy 平面(和z轴平行或重叠),然后根据右手螺旋法则,若的向量的z的值 > 0 ,那么即表示在的右侧,若z的值 < 0 ,那么即表示在的左侧。
上面的例子我们是从z轴的正方向看向负方向,但是若从负方向看向正方向,那么原本在左边就会变成在右边,因此左右关系和我们的观察方向有关。
因此若我们从z轴正方向看向负方向,若两个向量组成的平面没有平行于xy平面,我们可以先将其投影到xy平面上,然后再计算左右。

3.判断点是否在三角形内部。


其实本质上还是2中的思路,例如上图,我们可以利用 https://www.zhihu.com/equation?tex=%5Cvec%7BAP%7D+%5Ctimes+%5Cvec%7BAB%7D , https://www.zhihu.com/equation?tex=%5Cvec%7BBP%7D+%5Ctimes+%5Cvec%7BBC%7D , https://www.zhihu.com/equation?tex=%5Cvec%7BCP%7D+%5Ctimes+%5Cvec%7BCA%7D 来判断P点是否在,, https://www.zhihu.com/equation?tex=%5Cvec%7BCA%7D 的左侧,若成立,则P点在三角形ABC的内部。
同理可以应用到四边形等多边形中,但是必须夹角小于180度(如下图,ABC>180,因此P点即使在内部,但是却在的右侧,   的左侧)。


这点是三角形光栅化的基础,要判断三角形覆盖了哪些像素,那就需要知道这些像素是否在三角形内部,好给这个像素进行着色。

4.求三角形面积
如下图三角形,CD长度为 h,AC长度为 b,AB长度为 c,AC和AB的夹角为 α 。


我们知道其面积为: https://www.zhihu.com/equation?tex=S%3D%5Cfrac%7Bch%7D%7B2%7D
因为 https://www.zhihu.com/equation?tex=h%3Db%2A%5Csin+%5Calpha
因此 https://www.zhihu.com/equation?tex=S%3D%5Cfrac%7Bcb%5Csin%5Calpha%7D%7B2%7D
而https://www.zhihu.com/equation?tex=cb%5Csin%5Calpha 正是我们向量AC和向量AB叉乘结果的模 https://www.zhihu.com/equation?tex=%7C%5Cvec%7BAC%7D+%5Ctimes+%5Cvec%7BAB%7D%7C
因此 https://www.zhihu.com/equation?tex=S+%3D+%5Cfrac%7B%7C%5Cvec%7BAC%7D+%5Ctimes+%5Cvec%7BAB%7D%7C%7D%7B2%7D
页: [1]
查看完整版本: 向量运算与应用