2017-06-20 56 views
0

我正在创建一个游戏,在开始时,球需要在html画布上随机选择,但所有方法的速度都相同。这不是我所需要的:随机速度矢量公式

vx = Math.floor(Math.random() * 20) 
vy = Math.floor(Math.random() * 20) 

因为它不会给出恒定的速度。 你能想出一个公式吗? 谢谢。

回答

2

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

phi = 2*Math.PI*Math.random(); 
vx = speed * Math.cos(phi); 
vy = speed * Math.sin(phi); 
+0

出于某种原因,对我而言,它不会始终保持恒定速度 – kcode

+0

您将不得不记录下速度矢量旁边会发生什么。 (并且可能如何测量标量速度。) – LutzL

0

我假设你在Java中工作并想要一个幅度为20的随机向量?

首先,你的矢量并不是真正的随机开始。 Math.random()会生成一个介于0和1之间的正数,因此您的矢量始终指向坐标系统的同一象限(两个坐标均为正数)。我想你想要的是类似的Math.random()* 2 - 1到-1和1

二之间建立坐标系,你需要你的正常化载体:http://mathworld.wolfram.com/NormalizedVector.html

最后,乘两个向量坐标按照你想要的矢量的大小,在你的情况下20,可能。

+0

您能否提供一个示例代码,如上面的答案中所示? – kcode

+0

btw即时通讯工作在JavaScript,而不是Java – kcode