随机速度矢量公式
random velocity vector formula
我正在创建一个游戏,开始时,球需要在 html canvas 上随机移动,但所有方向的速度都相同。这不是我需要的:
vx = Math.floor(Math.random() * 20)
vy = Math.floor(Math.random() * 20)
因为它不会给出恒定的速度。
你能想出一个公式吗?
谢谢
所以你想要一个随机方向的恒定速度?然后使用
phi = 2*Math.PI*Math.random();
vx = speed * Math.cos(phi);
vy = speed * Math.sin(phi);
我假设你在 Java 工作并且想要一个大小为 20 的随机向量?
首先,您的矢量一开始并不是真正随机的。 Math.random() 产生一个介于 0 和 1 之间的正数,因此您的矢量始终指向坐标系的同一象限(两个坐标均为正)。我想你想要的是 Math.random()*2 - 1 来创建 -1 和 1 之间的坐标。
其次,您需要对向量进行归一化:http://mathworld.wolfram.com/NormalizedVector.html
最后,将两个矢量坐标乘以您希望矢量具有的大小,在您的情况下可能为 20。
我正在创建一个游戏,开始时,球需要在 html canvas 上随机移动,但所有方向的速度都相同。这不是我需要的:
vx = Math.floor(Math.random() * 20)
vy = Math.floor(Math.random() * 20)
因为它不会给出恒定的速度。 你能想出一个公式吗? 谢谢
所以你想要一个随机方向的恒定速度?然后使用
phi = 2*Math.PI*Math.random();
vx = speed * Math.cos(phi);
vy = speed * Math.sin(phi);
我假设你在 Java 工作并且想要一个大小为 20 的随机向量?
首先,您的矢量一开始并不是真正随机的。 Math.random() 产生一个介于 0 和 1 之间的正数,因此您的矢量始终指向坐标系的同一象限(两个坐标均为正)。我想你想要的是 Math.random()*2 - 1 来创建 -1 和 1 之间的坐标。
其次,您需要对向量进行归一化:http://mathworld.wolfram.com/NormalizedVector.html
最后,将两个矢量坐标乘以您希望矢量具有的大小,在您的情况下可能为 20。