我一直在尝试用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
我不是很擅长这个物理问题,但我会试试
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asin
Math.asin(-10/1)
也许速度有它可以覆盖的最大距离。无论角度如何,1m / s都不会达到500m距离希望它有所帮助
请注意您链接d_max = v*v/g
的相同维基百科页面。根据您的输入,此评估为1.因此,距离10是不可能的。
注意到这一点的另一种方法是罪的范围是(-1,1)。因此,在此范围之外的任何数字都是未定义的。 (g*d)/(v*v)
是10,所以Math.asin
回归NaN