繁体   English   中英

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

[英]Calculate direction and velocity based horizontal and vertical velocity

我目前正在使用Java开发游戏,我想根据所有游戏对象随附的水平和垂直速度计算方向和方向速度。 我想有一个像波纹管这样的方法来计算对象朝其移动的方向/角度(基于对象的水平和垂直速度);

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

当然,我需要一种类似的方法来根据对象的水平和垂直速度来计算其方向速度。

注意:当我问这个问题时,由于我在2年级或3年级,所以我对几何/三角学一无所知。

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);
}

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

我认为

angle = Math.toDegrees(Math.atan2(verticalSpeed,HorizontalSpeed) )

应该管用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM