向量是一个基础且重要的数学工具,从几何意义上来说主要用来描述事物间的位移以及指示方向,如下:
上图 XY 坐标系中 A 点坐标为 (x1,y1),B 点坐标系为 (x2,y2),从B点移动到 A 点时,位置的变化即为向量 BA。
简单来说向量是既有大小又有方向的线段,从B点移动到 A 点的方向也就是图中箭头所示的方向即为向量 BA 的方向,线段 BA 的长度即为向量 BA 的大小。
从数学表现形式上来看向量就是一个数字列表,列表中的每个数表示在不同维度上的有向位移,还是以向量 BA 为例:
从B点移动到 A 点,在X轴上位置的变化为x1-x2,在Y轴上位置的变化为y1-y2,把这两个维度上的位置的变化组合在一起最终形成了二维向量 BA;图中 BA 上方的箭头表示向量的方向是从 B 点移动到 A,有些时候不标记出来则默认前面是起始点后边是终止点。
向量数字列表有两种组织方式,水平组织的为行向量,垂直组织的为列向量;行向量和列向量的区别体现在和矩阵的乘法中,因为涉及到矩阵,这里就不过多展开了;向量运算和矩阵相关知识将会在第二小节进行详细讲解。
回到示例图,当从 O 点移动到 B 点时,可以用向量 OB 来表示;因为 O 点为坐标系原点,其坐标值为 (0,0),分别计算向量 OB 在X轴和 Y 轴的有向位移,写成行向量的形式如下:
向量 OB 恰好和 B 点坐标是一致的,因此可以理解向量和点在概念上完全不同,但是在数学形式上却是等价的;这也就是为什么 ThreeJS 框架中Vector3类型既可以用来表示三维向量又可以用来表示三维坐标系中的点,其实际含义和具体的使用场景有关。
三维、四维向量和二维向量的定义、性质基本类似,区别仅在于维度不一样。
向量的大小
向量的大小也就是向量的长度,也被称为向量的模。
以上图中 BA 向量为例,其长度也就是模,通常记为||BA||,根据直角三角形求斜边长公式可得:
对于任意向量,模的大小等于其每个维度数值的平方和然后开根号;这也就是 ThreeJS 框架中各向量类型计算长度的length函数的实现,以二维向量 Vector2 为例(其中 x 和y表示二维向量在 X 轴和 Y 轴的有向位移):
你可能有点疑惑了,本文标题写的是3D,但是文中例子却都基于 2D 坐