供参考和备忘用html
对数学家来讲向量就是一个数字列表,对程序员来讲向量能够数组(Array)表示,但在计算机的图形开发中咱们侧重于向量的几何表示。程序员
从几何学上讲,向量是具备大小和方向的有向线段。在图形上经常使用箭头(起点指向终点)表示,由于它捕获了向量的两个定义特征:大小和方向。数组
- 向量的大小(Magnitude):是指向量的长度。向量的长度是非负的。
- 向量的方向(Direction):是指向量在空间中指向的方向。
向量是没有位置的,只有大小和方向。它描述了从一个位置到另外一个位置的位移,是一种相对位置关系而不是绝对位置。ide
向量a可书写为:\(\vec a\)函数
在书写向量时,有两种表达方式:水平写入和垂直写入,水平写入的向量称为行向量(Row Vector),垂直写入的称为列向量(Column Vector)。spa
以下所示的一个三维行向量,各个数字间可用逗号或空格隔开:scala
以下所示的一个三维列向量:3d
向量的维度表示向量中元素的个数。一个元素就是一维向量,两个数元素就是二维向量,三个元素就是三维向量......orm
份量用来表示向量中具体的某一个元素,好比向量中的第一个份量表示向量中的第一个元素。
表示方式:htm
- 使用下标,如:\(v_1\) 指的是向量 \(v\) 中的第一个元素。
- 使用字母,使用x、y来指代二维向量中的元素;使用x、y、z表示三维向量中的元素;使用x、y、z、w表示四维向量中的元素。
例如,以下向量中,\(a_1 = a_x = 1\)表示的都是向量 \(a\) 的第一个份量。
标量其实就是普通数字的技术术语,与咱们平常中使用的数字无异。
在二维笛卡尔坐标中,X向右为正,Y向上为正。对于二维向量\([1.5,2]\),在二维笛卡尔坐标系中可描述为:向右移动1.5个单位而后向上移动两个单位,或者向上移动两个单位而后向右移动1.5个单位。
零向量表示没有方向且长度为0的向量。能够将零向量看做是表达“无位移”概念的一种方式。
点用于指定位置,向量用于描述位移。
点的位置是相对的——相对于指定其坐标的坐标系的原点。
向量描述了一个位置到另外一个位置的位移,是一种相对位置关系。
因此,若是从原点(参考点)开始并按向量\([x,y]\)指定的量移动,那么将最终到达点\((x,y)\)所描述的位置。也就是说向量\([x,y]\)给出了从原点(参考点)到点(x,y)的位移。好比,在二维笛卡尔坐标系中,点:\((1,2)\),能够表示为向量:\([1,2]\),原点(0,0)开始,向右移动了1个单位,而后向上移动了2个单位,而后到达点\((1,2)\)。
世界上有不少东西都是很难创建“绝对”参考的东西。好比上面提到的点和向量。另外还有温度、速度、音量等等。
好比咱们说体温是:37.3℃,是相对于0℃(水的冰点)来讲的。
负向量就是将向量的每个份量变为其相反数。\(\vec a\)的负向量为\(-\vec a\)
好比,向量:\([-3,2]\)的负向量为:\(-[-3,2] = [3,-2]\)
使向量变负会产生大小相同但方向相反的向量。
被乘数通常放在算式的前面,乘数通常放在算式的后面。被乘数表示需重复相加的数,乘数表示需重复相加的次数。
如:\(4 \times 2 = 8\),4是被乘数,2是乘数。读做:4 乘以 2 等于8,或者读做:2 乘 4 等于8。表示2个4相加。
向量不能与标量相加,可是能够将向量乘以标量。其实,向量乘以标量也能够当作标量个向量相加的和。
其结果是一个与原始向量平行的向量,但具备不一样的长度和可能相反的方向。也可理解为:对原始向量进行长度为标量的绝对值的缩放,若是标量小于0,则翻转向量的方向。
计算方式:将标量与每个向量的份量相乘。如:
等价于向量乘以此标量的倒数。反过来,标量是不能够除以向量的。向量也不能够除以另外一个向量。
一些注意事项:
两个向量相加或相减,它们必须具备相同的维度,不一样维度不能相加减。
计算方式:将向量对应的份量相加便可。如:
向量的加法知足交换律,即:\(\vec a + \vec b = \vec b + \vec a\)
相应的份量相减便可。向量的减法能够理解为加上一个向量的负向量。即:\(\vec a - \vec b = \vec a + (- \vec b)\)。如:
向量的减法不知足交换律,即:\(\vec a - \vec b \neq \vec b - \vec a\),它们的结果长度相同但方向相反,因此,\(\vec a - \vec b = -(\vec b - \vec a)\)。
如上所示的向量加法,可描述为:向右移动1个单位 -> 向上移动2个单位 -> 再向右移动3个单位 -> 在向上移动4个单位。
向量的大小也称为向量的长度(Length)。它的值是非负的。
表示方式:\(||向量||\)。如,\(\vec a\)的长度表示为:\(||\vec a||\)。
计算方式:向量各个份量的平方和的平方根。如,\(\vec v = [3,4]\)的长度计算方式为:
对于许多向量,咱们只关注其方向而不是大小(如:法线(Normal)),在这些状况下,使用单位向量一般会很方便。
单位向量是大小为1的向量。单位向量也被称为归一化向量(Normalized Vector)。
任何非零向量的单位向量的计算方式:向量除以向量的长度,以下所示:
例如,向量\([3,4]\)的单位向量为:
距离为两点之间的线段长度。因为向量是有向线段,所以几何上有意义的是,两点之间的距离将等于从一点到另外一点的向量的长度。
求\(\vec a\)到\(\vec b\)间距离的计算方式:
例如,\(\vec a = [x,y]\),\(\vec b = [m,n]\)。求\(\vec a\)到\(\vec b\)的距离:
设,\(\vec d\)为\(\vec a\)到\(\vec b\)的向量;则,\(\vec d = \vec b - \vec a\)
计算出:\(\vec d = [m-x,n-y]\)
因此距离为:\(||\vec d|| = \sqrt{(m-x)^2 + (n-y)^2}\)
其实,计算两个向量的距离就是计算两个向量的差所得向量的长度。
点积也称为内积(Inner Product),点积的名称来自向量乘积表示法中使用的点符号,且不能省略点符号。
向量\(\vec a\)与向量\(\vec b\)的点积表示为:\(\vec a \cdot \vec b\)
计算方式:相应份量的乘积之和,获得的是一个标量。以下所示:
点积知足交换律,也就是说:\(\vec a \cdot \vec b = \vec b \cdot \vec a\)
这里有一个与之比较贴近现实的例子:
假设你有3吨小麦、4吨糖、2吨大米,则能够表示为:\([3,4,2]\)。
其中,1吨小麦162元,1吨糖558元,1吨大米495元,则能够表示为:\([162,558,495]\)。
那么,你的总收入为:\(3 \times 162 + 4 \times 558 + 2 \times 495 = 3798\)元。
来源:https://www.quora.com/Why-is-the-definition-of-the-dot-product-the-way-it-is
如何上图所示,\(\vec a\)与\(\vec b\)的夹角为\(\theta\),\(\vec c = \vec a - \vec b\),\(\vec a\)、\(\vec b\)、\(\vec c\)构成一个三角形。
由三角形余弦定理可知:
假设:
由上方的 向量的大小 描述可知:
又:
因此:
化简得:
因此咱们能够推导出向量点积的另外一种计算方式:\(||\vec a||||\vec b||cos\theta\),也就是说:
\(||\vec b||cos\theta\)的另外一层含义是什么?
由上图和三角函数可知:\(m = ||\vec b||cos\theta\),因此:\(\vec a \cdot \vec b = ||\vec a||m\)
那么,\(m\)是什么?\(m\)是\(\vec b\)在\(\vec a\)上投影的长度。以下图所示:
图源:https://www.shuxuele.com/algebra/vectors-dot-product.html
因此两个向量点积的几何意义为:一个向量在另外一个向量上投影的长度与另外一个向量长度的乘积。
\(\vec a \cdot \vec b\) | \(\theta\) | 角度为 | \(\vec a\)和\(\vec b\)是 |
---|---|---|---|
>0 | \(0^\circ \leq \theta < 90^\circ\) | 锐角 | 主要指向同一方向 |
0 | \(\theta = 90^\circ\) | 直角 | 垂直 |
<0 | \(90^\circ < \theta \leq 180^\circ\) | 钝角 | 主要指向反方向 |
几何上证实:
由上图所示:\(\vec d = \vec b + \vec c\),\(\vec b\)在\(\vec a\)向量上的投影长度为\(x\),\(\vec c\)在\(\vec a\)向量上的投影长度为\(y\),\(\vec d\)在\(\vec a\)向量上的投影长度为\(z\),\(z = x+y\)。
可知:
又,\(z = x+y\),因此:
证实:
关于向量点积的一些参考连接:
https://www.shuxuele.com/algebra/vectors-dot-product.html
https://www.quora.com/Why-is-the-definition-of-the-dot-product-the-way-it-is
另,3Blue1Brown关于点积的笔记
叉积又叫外积或向量积(Vector Product),只能在三维中应用。结果是一个向量
向量\(\vec a\)与向量\(\vec b\)的叉积表示为:\(\vec a \times \vec b\)
计算方式:
向量的叉积不知足交换律:\(\vec a \times \vec b \neq \vec b \times \vec a = -(\vec b \times \vec a)\)
向量的叉积不知足结合律:\((\vec a \times \vec b) \times \vec c \neq \vec a \times (\vec b \times \vec c)\)
假设\(\vec a\)和\(\vec b\)的叉积为:\(\vec m\),也就是说:
那么计算向量\(\vec m\)的长度的平方,\(||\vec m||^2\)为:
展开后,可得:
等价于:
等价于:
等价于:
等价于:
因此:
那么,\(||\vec b||sin\theta\)的另外一层含义是什么?
由上图可知,\(||\vec b||sin\theta = h\),而\(h\)垂直于\(\vec a\),那么:
这能够看做是:\(\vec a\)和\(\vec b\)构成的平行四边形的面积(底乘以高)。
也就是说,\(\vec a \times \vec b\)的长度为\(\vec a\)和\(\vec b\)构成的平行四边形的面积。
叉积是个向量呀,如今知道了大小,那方向了?
首先,咱们知道:\(\vec m = \vec a \times\ \vec b\)
那么咱们先来计算:\(\vec m \cdot \vec a\)
展开:
获得:\(\vec m \cdot \vec a = 0\),这意味着:\(\vec m\)垂直于\(\vec a\) !!!
以一样的方式计算\(\vec m \cdot \vec b\),依然会获得相同的结果,也就是说:\(\vec m\)垂直于\(\vec b\) !!!
更进一步说:\(\vec m\)垂直于\(\vec a\)和\(\vec b\)构成的平面。
但是,垂直于平面的向量可能有两个方向啊,如何肯定是哪一个方向了?
例如:\(\vec a \times\ \vec b\)
一、对于右手坐标系
右手握拳,竖起大拇指。若是从你的视点\(\vec a\)到\(\vec b\)是逆时针旋转,那么大拇指的指向也就是叉积的方向指向你;顺时针,则指向远离你的方向。
二、对于坐手坐标系
左手握拳,竖起大拇指。若是从你的视点\(\vec a\)到\(\vec b\)是顺时针旋转,那么大拇指的指向也就是叉积的方向指向你;逆时针,则指向远离你的方向。
关于向量叉积的一些参考连接:
https://www.shuxuele.com/algebra/vectors-cross-product.html
另,3Blue1Brown关于叉积的笔记