计算弹丸给定速度和距离的到达角度

问题描述 投票:-1回答:2

我一直在尝试用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

javascript calculus
2个回答
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(或范围之外的值)意味着没有角度可以覆盖距离

希望它有所帮助


0
投票

请注意您链接d_max = v*v/g的相同维基百科页面。根据您的输入,此评估为1.因此,距离10是不可能的。

注意到这一点的另一种方法是罪的范围是(-1,1)。因此,在此范围之外的任何数字都是未定义的。 (g*d)/(v*v)是10,所以Math.asin回归NaN

© www.soinside.com 2019 - 2024. All rights reserved.