Как рассчитать синус и косинус двойного в Java? - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь преобразовать синус угла из радианов в градусы, и я продолжаю получать неточные числа. Мой код выглядит так:

public class PhysicsSolverAttempt2 {
    public static void main(String[] args) {
        double[] numbers = {60, 30, 0};
        double launchAngle = Double.parseDouble(numbers[0]);
        double iV = Double.parseDouble(numbers[1]);
        System.out.println(launchAngle);
        double iVV = iV * Math.toDegrees(Math.sin(launchAngle));
        System.out.println(Math.toDegrees(Math.sin(launchAngle)));
    }
}

Когда я использую Math.sin (launchAngle), он дает мне идеальный вывод в радианах. Однако, когда я конвертирую радианы в градусы с помощью функции Math.toDegrees () в конце, это дает мне -17.464362139918286, хотя выполнение того же вычисления с помощью калькулятора дает число 0.86602540378. Я неправильно использую Math.toDegrees () или мне нужно выполнить дополнительные действия, чтобы получить точный результат?

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Функция синуса возвращает координату y точки на единичной окружности. Для Math.sin вы вводите угол в радианах, и он возвращает соответствующую y-координату. Однако здесь вы используете результат Math.sin (координата y, а не угол) в качестве аргумента для Math.toDegrees, который должен преобразовывать радианы в градусы. Я предполагаю, что целью было найти грех launchAngle. Если это так, включите

Math.toDegrees(Math.sin(launchAngle))

в

Math.sin(Math.toRadians(launchAngle))
0 голосов
/ 03 ноября 2018

Кажется, что самый простой способ найти точное измерение - просто умножить начальное измерение степени на Math.PI / 180 и использовать это число для расчетов.

Оттуда Math.sin (launchAngle) даст чистые, работоспособные результаты.

0 голосов
/ 01 ноября 2018

Math.sin() принимает только радианы в качестве входных данных. Похоже, вы пытаетесь найти грех launchAngle, который выражен в градусах.

Math.toDegrees(Math.sin(Math.toRadians(launchAngle)));

...