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轴向上计数.
你得到一个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)