Использование 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.