簡體   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