Рассчитать направление и скорость на основе горизонтальной и вертикальной скорости - PullRequest
0 голосов
/ 18 марта 2012

В настоящее время я работаю над игрой на Java и хочу вычислить направление и скорость направления по горизонтальной и вертикальной скорости, которая предоставляется всем игровым объектам. Я хотел бы иметь метод, подобный приведенному ниже, для расчета направления / угла, к которому движется объект (на основе его горизонтальной и вертикальной скорости);

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

Конечно, мне понадобится аналогичный метод для расчета направленной скорости объекта на основе его горизонтальной и вертикальной скорости.

Примечание: в то время, когда я задавал этот вопрос, я ничего не узнал о геометрии / тригонометрии, потому что я был во 2-м или 3-м классе.

Ответы [ 2 ]

5 голосов
/ 20 марта 2012

Решение Тима Визи :


Это решение я нашел после тестирования некоторых вещей.Я сделал три функции, первые две можно было использовать для вычисления угла и скорости по вертикальной и горизонтальной скорости.Третья функция может использоваться для вычисления горизонтальной и вертикальной скорости по углу и скорости.

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

Обратите внимание, что третья функция выводит результаты в консоль, поскольку возвращает два значения.

5 голосов
/ 18 марта 2012

Я думаю

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

должно работать

Получение скорости из угла невозможно.Потому что может быть несколько значений вертикальной и горизонтальной скорости, которые могут давать один и тот же угол.

...