随机速度矢量公式

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。