Javascript 随机速度矢量公式

Javascript 随机速度矢量公式,javascript,html,physics,Javascript,Html,Physics,我正在创建一个游戏,开始时,球需要在html画布上以随机方向移动,但所有方式都具有相同的速度。这不是我需要的: 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

我正在创建一个游戏,开始时,球需要在html画布上以随机方向移动,但所有方式都具有相同的速度。这不是我需要的:

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);

所以你想要一个有随机方向的恒定速度?然后使用

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之间的坐标

其次,您需要规范化向量:


最后,将两个向量坐标乘以你想要向量的大小,在你的例子中可能是20。

我假设你在Java中工作,想要一个大小为20的随机向量

首先,向量并不是真正随机的。Math.random()生成一个介于0和1之间的正数,因此向量始终指向坐标系的同一象限(两个坐标均为正数)。我想你想要的是Math.random()*2-1这样的东西来创建-1和1之间的坐标

其次,您需要规范化向量:


最后,将两个向量坐标乘以你想要向量的大小,在你的例子中,可能是20。

出于某种原因,对我来说,它不会总是保持恒定的速度。你必须记录下速度向量旁边发生的情况。(可能还有你是如何测量标量速度的。)由于某种原因,对我来说,它不会一直保持恒定的速度。你必须记录在速度向量旁边发生的事情。(以及你如何测量标量速度)你能提供一个示例代码,如上面的答案吗?你能提供一个示例代码,如上面的答案吗?