Learn JavaScript

Math.asin() - метод для вычисления арксинуса числа в JavaScript

Math.asin() вычисляет арксинус числа.

Проще всего запомнить так: Math.asin(x) отвечает на вопрос, какой угол имеет синус x.

Главный нюанс: аргумент должен быть в диапазоне от -1 до 1, а результат метод возвращает в радианах.

Синтаксис

Math.asin(x)

x - число, для которого нужно найти арксинус.

Что делает Math.asin()

Метод возвращает угол, синус которого равен переданному числу.

console.log(Math.asin(0));   // 0
console.log(Math.asin(1));   // 1.5707963267948966
console.log(Math.asin(-1));  // -1.5707963267948966

Это значит:

  • Math.asin(0) равно 0
  • Math.asin(1) равно π / 2
  • Math.asin(-1) равно -π / 2

Что возвращает Math.asin()

Math.asin() возвращает число типа number.

const result = Math.asin(0.5);

console.log(result);        // 0.5235987755982989
console.log(typeof result); // "number"

Результат всегда находится в диапазоне от -Math.PI / 2 до Math.PI / 2.

Аргумент должен быть от -1 до 1

Это самое важное ограничение у Math.asin().

console.log(Math.asin(1));    // 1.5707963267948966
console.log(Math.asin(0.5));  // 0.5235987755982989
console.log(Math.asin(-0.5)); // -0.5235987755982989

Если значение выходит за пределы диапазона -1...1, результатом будет NaN.

console.log(Math.asin(2));  // NaN
console.log(Math.asin(-2)); // NaN

Это логично, потому что синус обычного угла не может быть больше 1 или меньше -1.

Результат возвращается в радианах

Это второй важный момент при работе с Math.asin().

console.log(Math.asin(0.5)); // 0.5235987755982989

Это не 0.5 градуса и не 30 градусов, а угол в радианах.

Если нужно перевести результат в градусы, используйте формулу:

градусы = радианы * 180 / Math.PI

Пример:

const radians = Math.asin(0.5);
const degrees = radians * 180 / Math.PI;

console.log(degrees); // 30.000000000000004

Ещё пример:

console.log(Math.asin(1) * 180 / Math.PI);   // 90
console.log(Math.asin(-1) * 180 / Math.PI);  // -90

Популярные значения

Несколько значений удобно знать наизусть.

console.log(Math.asin(0));   // 0
console.log(Math.asin(0.5)); // 0.5235987755982989
console.log(Math.asin(1));   // 1.5707963267948966

Это примерно соответствует:

  • asin(0) = 0
  • asin(0.5) = 30°
  • asin(1) = 90°

Диапазон результата

Даже если синус одного и того же значения можно получить у разных углов, Math.asin() возвращает только один основной результат.

Он всегда находится в диапазоне:

-Math.PI / 2 ... Math.PI / 2

То есть примерно от -90° до 90°.

Math.asin() и Math.sin()

Эти методы связаны как обратные операции, но не для любого угла.

console.log(Math.asin(Math.sin(Math.PI / 6))); // 0.5235987755982988
console.log(Math.asin(Math.sin(Math.PI / 2))); // 1.5707963267948966

В этих примерах всё выглядит как полное обратное преобразование.

Но не всегда:

console.log(Math.asin(Math.sin(Math.PI))); // 1.2246467991473532e-16

Здесь результат близок к 0, а не к Math.PI.

Так происходит потому, что Math.asin() всегда возвращает угол только из диапазона от -π / 2 до π / 2.

Без аргумента

Если вызвать Math.asin() без аргумента, результатом будет NaN.

console.log(Math.asin()); // NaN

Так происходит потому, что метод попытается обработать undefined как число.

Неявное приведение типов

Math.asin() сначала пытается привести аргумент к числу.

console.log(Math.asin("0.5"));     // 0.5235987755982989
console.log(Math.asin(null));      // 0
console.log(Math.asin(true));      // 1.5707963267948966
console.log(Math.asin(undefined)); // NaN

На практике лучше передавать в метод уже готовое число.

NaN и Infinity

Для специальных значений результат будет таким:

console.log(Math.asin(NaN));       // NaN
console.log(Math.asin(Infinity));  // NaN
console.log(Math.asin(-Infinity)); // NaN

Это полезно помнить:

  • NaN даёт NaN
  • Infinity даёт NaN
  • -Infinity даёт NaN

Число не меняется

Math.asin() не изменяет исходное значение. Он только возвращает новый результат.

const value = 0.5;
const result = Math.asin(value);

console.log(value);  // 0.5
console.log(result); // 0.5235987755982989

Когда это полезно

Math.asin() часто используют, когда:

  • нужно восстановить угол по известному синусу
  • вы работаете с тригонометрией и геометрией
  • нужно получить угол наклона или поворота
  • вы строите графику, анимации или расчёты координат

Пример:

const sinValue = 0.5;
const angle = Math.asin(sinValue);

console.log(angle); // 0.5235987755982989

Если нужны градусы:

console.log(angle * 180 / Math.PI); // 30.000000000000004

Частые ошибки

Передавать в Math.asin() угол, а не значение синуса

console.log(Math.asin(30)); // NaN

Math.asin() принимает не градусы и не радианы, а число от -1 до 1.

Ожидать результат в градусах

console.log(Math.asin(0.5)); // 0.5235987755982989

Это радианы. Если нужны градусы, переводите отдельно.

Думать, что Math.asin(Math.sin(x)) всегда равно x

console.log(Math.asin(Math.sin(Math.PI))); // 1.2246467991473532e-16

Math.asin() возвращает только основной угол из диапазона -π / 2 ... π / 2.

Быстрая памятка

  • Math.asin(x) вычисляет арксинус числа
  • аргумент должен быть в диапазоне от -1 до 1
  • метод возвращает number
  • результат всегда находится в диапазоне от -Math.PI / 2 до Math.PI / 2
  • результат возвращается в радианах
  • Math.asin(0) равно 0
  • Math.asin(1) равно Math.PI / 2
  • если передать число больше 1 или меньше -1, получится NaN

Коротко

Math.asin() - это стандартный способ вычислить арксинус числа в JavaScript. Главное, что нужно запомнить: метод принимает значение синуса от -1 до 1, а возвращает угол в радианах из диапазона -π / 2 ... π / 2.