创建一个非常简单的大炮模拟器.偶尔得到负x速度

Sle*_*rig 1 java math

xVel = velocity * Math.cos(angle);
yVel = velocity * Math.sin(angle);
Run Code Online (Sandbox Code Playgroud)

这是我用来将单个初始速度转换为x和y速度,使用用户输入的角度.偶尔xVel会是负面的.我想知道使用绝对值Math函数是否会好或者它会在数学上扭曲我的结果.

这就是我的想法:

xVel = velocity * Math.abs(Math.cos(angle));
Run Code Online (Sandbox Code Playgroud)

用Java BTW编程,尽管在这种情况下这并不重要.

编辑:由于缺乏一些重要信息,我将添加一些修订.

偶尔我会为正象限(即15°)中的角度输入一个值,但仍会得到负xVel.

此程序也假设角度以逆时针方式从x轴向上计数.

Sam*_*Sam 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);
Run Code Online (Sandbox Code Playgroud)