Использование Math.sin с градусами

Использование Math.sin с градусами

1. Вступление

В этом коротком руководстве мы рассмотрим, как вычислить значения синуса с помощью функции JavaMath.sin() и как преобразовать значения углов между градусами и радианами.

2. Радианы против степени

По умолчаниюJava Math library expects values to its trigonometric functions to be in radians.

Напоминаем, чтоradians are just another way to express the measure of an angle, а преобразование:

double inRadians = inDegrees * PI / 180;
inDegrees = inRadians * 180 / PI;

Java упрощает это с помощьюtoRadians andtoDegrees:

double inRadians = Math.toRadians(inDegrees);
double inDegrees = Math.toDegrees(inRadians);

Когда мы используем любую из тригонометрических функций Java,we should first think about what is the unit of our input.

3. ИспользуяMath.sin

Мы можем увидеть этот принцип в действии, взглянув на методMath.sin, один из многих, которые предоставляет Java:

public static double sin(double a)

Это эквивалент математической функции синуса иit expects its input to be in radians. Итак, допустим, у нас есть угол, который, как нам известно, выражается в градусах:

double inDegrees = 30;

Сначала нам нужно преобразовать его в радианы:

double inRadians = Math.toRadians(inDegrees);

И тогда мы можем рассчитать значение синуса:

double sine = Math.sin(inRadians);

Но,if we know it to already be in radians, then we don’t need to do the conversion:

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

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

4. Заключение

В этой быстрой статье мы рассмотрели радианы и градусы, а затем увидели пример того, как работать с ними, используяMath.sin..

Как всегда, проверьте исходный код этого примераover on GitHub.