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)равно0Math.asin(1)равноπ / 2Math.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)=0asin(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даётNaNInfinityдаёт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)равно0Math.asin(1)равноMath.PI / 2- если передать число больше
1или меньше-1, получитсяNaN
Коротко
Math.asin() - это стандартный способ вычислить арксинус числа в JavaScript. Главное, что нужно запомнить: метод принимает значение синуса от -1 до 1, а возвращает угол в радианах из диапазона -π / 2 ... π / 2.