xVel = velocity * Math.cos(angle);
yVel = velocity * Math.sin(angle);
这是我用来将单个初始速度转换为x和y速度,使用用户输入的角度。偶尔xVel
将是否定的。我想知道使用绝对值Math
函数是否正常或者它会在数学上偏差我的结果。
这就是我的想法:
xVel = velocity * Math.abs(Math.cos(angle));
使用Java BTW进行编程,即使在这种情况下这并不重要。
编辑:由于缺乏一些重要信息,我将添加一些修改。答案 0 :(得分:5)
你得到一个15度角的负x速度,因为Math.cos和Math.sin接受弧度而不是度数的角度。
您必须首先将您的角度转换为以弧度为单位的角度,如下所示:
xVel = velocity * Math.cos(angle * Math.PI / 180.0);
yVel = velocity * Math.sin(angle * Math.PI / 180.0);
答案 1 :(得分:1)
我只是想知道如何定义坐标系并获得角度。如果您的角度在第二象限,则获得XVel的负值是非常合理的。
答案 2 :(得分:0)
速度是一个矢量,矢量具有方向和大小,由角度表示。
如果您不关心在相关轴[右侧或左侧/上侧或下侧]进行移动的方向,则可以使用绝对值。实际上[和/只]的符号[减号/加号]表示左/右和上/下
答案 3 :(得分:0)
也许您只需检查角度是否介于0和PI / 2之间。你对这两种速度都有正值。该角度如何由用户输入?
答案 4 :(得分:0)
如果他们以90 degrees < angle < 270 degrees
的角度发射大炮,那么你的x坐标将为负。事实上,如果是这种情况,它们会向后发射。
有几种方法可以限制这种情况,但我建议如果你想强制执行前进角度,可以防止它们旋转超过90度。
答案 5 :(得分:0)
检查这一点,希望你能想到它,它是ActionSctipt
http://www.emanueleferonato.com/2007/04/28/create-a-flash-artillery-game-step-1/
答案 6 :(得分:0)
同一角度的余弦和窦的符号在两个函数上并不总是正(或负)。只要您在科学背景下使用该功能(例如公式),您应该验证您是否未获得正确的结果?
在科学中,速度矢量的值可以小于零。