6
在做编程开发特别是做几何图形开发时,经常用到向量,向量广泛用于做方向判断,求距离,求角度,做位移等等.用途非常广泛,如果不了解向量的基本知识,根本无法写代码
常见的向量有二维(2D)向量,三维(3D)向量,四维(4D)向量,向量可以有很多个维度,也可以只有一个维度,一维向量只有一个数值,也可以认为是标量(只有大小没有方向).数学上,二维(2D)向量的各个分量使用x,y表示,三维(3D)向量的各个分量使用x,y,z表示,四维(4D)向量的各个分量使用x,y,z,w表示.向量有两种书写形式,水平书写(行向量)和垂直书写(列向量),并且认为,这两种书写方式是等价的(这两种方式只有在和矩阵做转换的时候稍微有区别,本篇没有涉及到矩阵的相关知识)

行向量是水平书写的,行向量书写如下:
二维向量a写法[x,y]如[0,1]表示x= 0,y= 1
三维向量b写法[x,y,z]如[3,2,4]表示x= 3,y= 2,z= 5
四维向量c写法[x,y,z,w]如[6,2,3,2]表示x= 6,y = 2,z= 3,w=2
列向量是垂直书写的 ,列向量书写形式如下:
image.png

向量的几何图形:

image.png

向量的位移和位置的解析:

向量没有位置,只有大小和方向,比如:“往前走两步”描述的是一个向量,“往前”代表向量的方向,“走两步”代表向量的长度,向量是描述方向和长度(距离),并且这两个元素(方向和长度)缺一不可。以下所有的向量都是相同的,因为他们方向相同,并且长度相同,但是向量的位置是没有意义的,只要不改变向量的方向和长度,那么向量可以随便平移的。
image.png
如果向量的长度是一样的,但是向量的方向不一样,那么它们是不同的向量,如下图:
image.png
以下向量虽然方向相同,但是他们的长度不一样,它们是不同的向量。
image.png
在坐标系中,一般描述的是一个点的位置,如点B的位置是(3,3),向量AB的值也是(3,3),向量在坐标系上可以这样描述:从原点的X轴位移3个单位,再从Y轴位移3个单位,最终得到向量AB,点在坐标系的描述:从原点(0,0),经过向量(3,3)的移动之后,最终到达坐标点(3,3)的位置。向量在坐标系中描述的是偏移量,坐标点描述的是在坐标系上的位置。两者千万不能混淆。
image.png
向量也可以描述为,坐标系的相对位移,如下图的E点(1,4),F点是(3,1)那么向量EF可以表示从E点到F点的偏移量是(2,-3),即:如果E点要移动到F点,那么需要在X轴加2个单位,在Y轴上减3个单位,就可以达到F点了。
image.png
向量和点(位置)一定要区分清楚,在坐标系中,任意的一个点的位置都可以表示为从原点移动一个偏移量(向量)得到的。

零向量:

简单的来说,向量长度为零的向量称为零向量。
a =[0,0],b =[0,0,0],c =[0,0,0,0]

负向量:

把一个向量变成负向量,表示,把一个向量的方向取反,如:
a =[3,-5],-a =[-3,5]并且a+(-a)=[3+(-3),-5+5]=[0,0]=零向量。
一个向量的负向量,是和原来向量的方向相反,长度(模)相同,如下图:
image.png

向量的大小(长度、模、模长)

image.png

向量长度几何解释:

求向量的长度其实就是求直角三角形的斜边,通过勾股定理即可求出.
如下图,二维向量AB的长度就是直接通过勾股定理得出.
image.png
image.png
image.png

标量和向量的乘法:

标量和向量相乘,计算方式是把向量的各个分量乘以标量,得到另外一个向量。标量k乘以向量v,写法kv
二维向量和标量乘法:k[x,y] = [kx,ky]如:3[3,4] = [3x3,3x4]=[9,12]
三维向量和标量乘法:k[x,y,z] = [kx,ky,kz]如:3[3,4,5] = [3x3,3X4,3x5]=[9,12,15]

向量除以标量:

向量除以标量和标量乘以向量类似,计算方式是把向量的各个分量除以标量(也可以写成乘以标量的倒数)得到另外一个向量。
image.png

向量乘法和除法的几何意义:

向量乘一个标量(正数)等于把这个向量的长度放大(方向不变),向量除以一个标量(正数)等于把这个向量的长度变小(方向不变),如果标量是负数,那么除了改变长度之外,方向会相反。如下图所示:
image.png

标准化向量

向量长度大小是1的向量称为单位向量,单位向量也称为标准化向量或向量归一化或简称“法线”.对于任何非零向量,都可以转换成单位向量。
标准化一个向量,将向量除以它的长度大小(模)即可。
image.png

向量标准化公式推导过程:

假如三维向量[x,y,z],假定他们的长度是L,那么:
image.png
也就是向量[x,y,z],除以向量的长度,得到长度为1的单位向量。
很多时候,我们求向量只关心向量的方向,长度希望为1,以这个标准向量做一些运算,如根据单位向量,延长我们需要的长度,那么用一个标量乘以单位向量,就得到向量的长度了。

两向量相加:

两个向量相加运算方式:把两个向量的对应的分量相加即可,结果是一个向量。a+b=[ax,ay,az] + [bx,by,bz] =[ax+ bx, ay+ by, az+ bz],例如:
向量a[2,3,1]和向量b[3,3,2]相加:等于[2+3,3+3,1+2] = [5,6,3]

两向量相减:

和两向量相加类似,把两个向量对应的分量相减即可,结果是一个向量。
a+b=[ax,ay,az] - [bx,by,bz] =[ax- bx, ay- by, az- bz],例如:
向量a[2,3,1]和向量b[3,3,2]相减:等于[2-3,3-3,1-2] = [-1,0,-1]
另外,向量减法可以描述成加一个负向量:a-b = a+(-b)
a + b = b+a 但是,a-b≠b-a,因为a-b = -( b-a)方向相反。也就是说:
a-b和b-a的向量方向相反,长度大小一样。

向量加法的几何表示:

平移向量,使向量a的终点连接向量b的起点,接着从a的起点指向b的终点就可以得出两向量相加后得到的新向量,如下图所示:
image.png

向量减法的几何表示:

d-c向量:平移线路c和向量d,使向量c的起点和向量d的起点在同一个点上,然后从c向量的终点指向d向量的终点。
c-d 刚好相反,使向量c的起点和向量d的起点连接在一起,然后从d向量的终点指向c向量的终点。
image.png

计算一个点到另一个点的向量:

在坐标系中有点a和点b,那么点b减去点a等于从a到b点的向量(偏移量),如下图:
image.png
向量减法常用于确定方向。

两点的距离公式:

假设点a到点b的距离是向量d(偏移量)
那么d = b-a=[bx- ax, by- ay,bz- az] 注:这里的a和b不是向量,是坐标系的点的位置。
那么求得向量d的长度(模)就是a到b的距离了。
image.png
假如:点a[3,4],点b[6,1],那么点a到点b的距离就是:
image.png

向量点乘

两个向量点乘(内积)书写方式a·b,我们规定点乘的运算法则是:两个向量的各个分量相乘,并且把所有的值都累加起来,最终得到一个标量(数值),公式写法如下:
image.png
两个向量点乘等于向量大小与向量夹角的cos值的乘积,公式如下:
image.png
这个公式的最主要的作用是求得两个向量的夹角。

上面公式推导如下:

image.png
image.png

推导过程:

image.png
把上面得出的算法替换得出如下:
image.png
另外点乘的另一个作用是看点乘结果的符号可以判断两个向量是否相同方向:
如果点乘结果>0,那么那么两个向量的角度是0°≤θ≤90°,两向量方向基本相同
如果点乘结果=0,那么两个向量的角度是θ=90°,两向量方向相互垂直
如果点乘结果<0,那么两个向量的角度是90°<θ≤180°,两向量方向基本相反。

向量的叉乘

向量的另一种乘法叫做叉乘或(叉积)也叫外积,两向量叉乘的结果是一个向量,并且这个向量同时垂直于原两个向量。
叉乘的公式:
image.png
例如:
image.png

两向量叉乘的几何意义:

假如向量a和b在同一个平面中,向量axb的结果是一个向量,该向量指向a、b向量所在平面的正上方,同时垂直于a和b向量
知道两向量叉乘,得出来的是一个向量,那么这个向量的正方向是哪个呢?可以这样判断:假设使用的坐标系统是右手坐标系统,那么,axb的正方向是:使用右手的四只手指顺着a的方向,手心面向b的方向,那么大拇指的方向就是这个向量的方向了。反之,如果是bxa,并且是右手坐标系统,那么使用右手的四只手指顺着b的方向,手心面向a的方向,大拇指的方向就是这个向量的方向了。如果使用的是左手坐标系统,那么判断正方向就用左手来。
如下图:
image.pngimage.png
由上图可以发发现:axb = -(bxa)
另外两个向量叉乘的长度等于两向量的长度(模)与两向量夹角sinθ值的乘积:
image.png

这个推导过程稍微有点复杂,推导过程如下:

首先两个向量叉乘,得出另一个向量的长度的平方,如下:
image.png
image.png
到这里可以知道,向量的点乘和向量的叉乘都可以知道两个向量的夹角。
另外根据公式也可以得出,两向量叉乘得到另一个向量的长度(模)等于两向量围成的平行四边形的面积。

推导过程如下:

image.png
可以平行四边形的右边一块切下来,移到左边。
image.png
补齐,变成一个矩形:
image.png
image.png


bihailvlin
18 声望2 粉丝

下一篇 »
矩阵(一)