Как рассчитать синус и косинус двойного в Java?
Я пытаюсь преобразовать синус угла из радианов в градусы, и я продолжаю получать неточные числа. Мой код выглядит так:
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 ответа
Math.sin()
принимает только радианы в качестве входных данных. Похоже, вы пытаетесь найти грех launchAngle
, что в градусах.
Math.toDegrees(Math.sin(Math.toRadians(launchAngle)));
Кажется, что самый простой способ найти точное измерение - просто умножить начальное измерение степени на Math.PI/180 и использовать это число для расчетов.
Оттуда Math.sin(launchAngle) даст чистые, работоспособные результаты.
Функция синуса возвращает координату y точки на единичной окружности. За Math.sin
Вы вводите угол в радианах, и он возвращает соответствующую Y-координату. Тем не менее, то, что вы делаете здесь, использует результат Math.sin
(координата Y, а не угол) в качестве аргумента для Math.toDegrees
, который должен конвертировать радианы в градусы. Я предполагаю, что целью было найти грех launchAngle
, Если это так, включите
Math.toDegrees(Math.sin(launchAngle))
в
Math.sin(Math.toRadians(launchAngle))