此处只讲平面向量
在教程开始之前我们来谈一下数学上对向量的定义
定义:
向量由长度和方向组成,总是用来描述从一个点到另一个的移动。
和我们平常所说的数量不同的是,向量则是有了方向这一概念
那么我们利用图来理解一下向量
图 1-1 在 图 1-1 当中我们定义两个点一个是点A一个是点B,那么我们以A为起点,B为终点作一条有向线段,得到下图
图 1-2 在 图1-2 当中我们作了一条有向线段,而这条有向线段我们称之为向量AB,那么这就是向量的一个基本定义
向量的坐标表示: 假设A = (1, 3), B = (2, 4),则向量AB = (2 - 1, 4 - 3),即终点减起点 (在BukkitAPI中,向量以坐标来表示所以突出这一段)
我们再来谈谈关于向量的一些相关概念 - 向量的模: 若我们有一个向量AB,那么它的模可以使用 |AB| 来进行表示,表示的则是AB之间的距离,即向量AB的长度
- 单位向量: 我们把一个模等于1个单位长度的向量叫做单位向量
- 相反向量: 与向量A长度相等,方向相反的向量,叫做向量A的相反向量
- 零向量:我们把模长等于0的向量叫做零向量
向量的基本运算 向量是有加和乘的,那么我们根据以下的一些图来了解一下它们的基本运算, 向量相加应满足平行四边形定则或三角形定则 若向量A = (1, 3), 向量B = (2, 4),则向量A+向量B = (3, 7)
在上方我们给一个向量乘以-1,得到了反方向的向量,这个我们称之为相反向量 若向量A = (1, 3),向量A * 2 = (2, 4) 若向量A = (1, 3),向量A * -1 = (-1, -3)
BukkitAPI上的向量 —— Vector 那么BukkitAPI上对向量的定义又是怎么样的呢?首先我们在 org.bukkit.util 包下找到一个叫 Vector的类 那么在BukkitAPI上,Vector类用于表示从一个Location到另一个Location的"趋势"。
若我们想获取从LocationA到LocationB的向量,我们可以使用以下的代码,即终点减起点
- /**
- * 取第一个坐标到第二个坐标的向量
- *
- * @param firstLocation 坐标1
- * @param secondLocation 坐标2
- * @return {@link Vector}
- */
- public static Vector getVector(Location firstLocation, Location secondLocation) {
- return secondLocation.subtract(firstLocation).toVector();
- }
复制代码请注意!这里的 secondLocation.subtract() 将会改变secondLocation的值 |