1. Введение
В этом кратком руководстве мы рассмотрим, как вычислять значения синуса с помощью функции Java Math.sin()
и как преобразовывать значения углов между градусами и радианами.
2. Радианы и градусы
По умолчанию библиотека Java Math
ожидает, что значения ее тригонометрических функций будут в радианах .
Напоминаем, что радианы
— это просто еще один способ выразить меру угла , а преобразование:
double inRadians = inDegrees * PI / 180;
inDegrees = inRadians * 180 / PI;
Java упрощает это с помощью toRadians
и toDegrees
:
double inRadians = Math.toRadians(inDegrees);
double inDegrees = Math.toDegrees(inRadians);
Всякий раз, когда мы используем любую из тригонометрических функций Java, мы должны сначала подумать о том, что является единицей нашего ввода .
3. Использование Math.sin
Мы можем увидеть этот принцип в действии, взглянув на метод Math.s
in
, один из многих, которые предоставляет Java:
public static double sin(double a)
Это эквивалентно математической функции синуса, и он ожидает, что его ввод будет в радианах . Итак, предположим, что у нас есть угол, который, как мы знаем, выражается в градусах:
double inDegrees = 30;
Сначала нам нужно преобразовать его в радианы:
double inRadians = Math.toRadians(inDegrees);
И тогда мы можем вычислить значение синуса:
double sine = Math.sin(inRadians);
Но если мы знаем, что это уже в радианах, то нам не нужно делать преобразование :
@Test
public void givenAnAngleInDegrees_whenUsingToRadians_thenResultIsInRadians() {
double angleInDegrees = 30;
double sinForDegrees = Math.sin(Math.toRadians(angleInDegrees)); // 0.5
double thirtyDegreesInRadians = 1/6 * Math.PI;
double sinForRadians = Math.sin(thirtyDegreesInRadians); // 0.5
assertTrue(sinForDegrees == sinForRadians);
}
Поскольку значение тридцатьDegreesInRadians
уже было в радианах, нам не нужно было сначала преобразовывать его, чтобы получить тот же результат.
4. Вывод
В этой быстрой статье мы рассмотрели радианы и градусы, а затем увидели пример того, как работать с ними с помощью Math.sin.
Как всегда, ознакомьтесь с исходным кодом этого примера на GitHub .