在给定速度和距离的情况下计算弹丸的到达角

时间:2018-11-09 18:35:55

标签: javascript calculus

我一直试图在Javascript中实现弹丸运动,但是我一直想弄清楚角度(从中得出x和y速度)

var v = 1;
var d = 10;
var g = -1;
var angle = 0.5 * Math.asin((g*d)/(v*v));

我希望这样的方法能起作用,因为它来自Here
我似乎得到的值是NaN或很小的数字。

提供更多背景信息;弹丸必须从A点到B点(我的代码中的距离为d),其中A和B处于同一高度。稍后,我想对距离和角度进行一些随机化,但是我认为,一旦解决了这个角度问题,这将不再是一个问题。

编辑:
作为一个更好的例子:

var v = 100;
var d = 100;
var g = 1;  // I've made this positive now
var angle = 0.5 * Math.asin((g*d)/(v*v));

这表示角度现在为0.005

2 个答案:

答案 0 :(得分:0)

我不是很擅长这个物理问题,但我会尝试

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asin

  • Math.asin()的arg应该在-1和1之间。否则返回NaN
  • 从您的示例中运行Math.asin(-10/1),也许速度具有可以覆盖的最大距离。无论角度如何,例如1m / s都不会达到500m距离
  • 您的链接中有一个公式可以计算给定速度和角度下的最大距离。使用它来确认您的变量是否相关。
  • 角度以cos,sin,tan的-1到1之间的值表示。 NaN(或超出范围的值)意味着没有角度可以覆盖距离

希望这会有所帮助

答案 1 :(得分:0)

来自您链接d_max = v*v/g的同一维基百科页面上的注释。根据您的输入,该值等于1。因此,距离10是不可能的。

另一种注意到这一点的方法是罪的范围是(-1,1)。因此,超出此范围的任何数字均不确定。 (g*d)/(v*v)是10,所以Math.asin返回NaN