根据水平和垂直速度计算方向和速度

Tim*_*sée 0 java point angle direction

我目前正在研究Java游戏,我想从所有游戏对象提供的水平和垂直速度计算方向和方向速度.我希望有一个类似下面的方法来计算物体朝向的方向/角度(基于它的水平和垂直速度);

public double getAngle() {
    // Calculate angle/direction from the horizontal and vertical speed here
    return angle;
}
Run Code Online (Sandbox Code Playgroud)

当然,我需要一种类似的方法来根据物体的水平和垂直速度计算物体的方向速度.

注意:当我问这个问题时,我没有学到任何关于几何/三角学的知识,因为我在第二或第三课.

cas*_*One 6

Tim Visee的解决方案:


这是我在测试一些东西后发现的解决方案.我做了三个功能,前两个可以用来计算//垂直和水平速度的角度和速度.第三个函数可用于根据角度和速度计算水平和垂直速度.

public static double getAngle(double vx, double vy) {
    return Math.toDegrees(Math.atan2(vy, vx));
}

public static double getVelocityWithAngle(double vx, double vy) {
    return Math.sqrt(Math.pow(vx, 2) + Math.pow(vy, 2));
}

public static void angleVelocityToXYVelocity(double angle, double velocity) {
    double vx = Math.cos(Math.toRadians(angle)) * velocity;
    double vy = Math.sqrt(Math.pow(velocity, 2) - Math.pow(vx, 2));

    System.out.println("vx: " + vx + " vy: " + vy);
}
Run Code Online (Sandbox Code Playgroud)

请注意,第三个函数将结果打印到控制台,因为它返回两个值.


Mov*_*ast 5

我认为

angle = Math.toDegrees(Math.atan2(verticalSpeed,HorizontalSpeed) )
Run Code Online (Sandbox Code Playgroud)

应该管用

无法从角度获取速度。因为可以有多个可以给出相同角度的垂直和水平速度值。