Math.acos() вычисляет арккосинус числа.
Проще всего запомнить так: Math.acos(x) отвечает на вопрос, какой угол имеет косинус x.
Главный нюанс: аргумент должен быть в диапазоне от -1 до 1, а результат метод возвращает в радианах.
Синтаксис
Math.acos(x)
x - число, для которого нужно найти арккосинус.
Что делает Math.acos()
Метод возвращает угол, косинус которого равен переданному числу.
console.log(Math.acos(1)); // 0
console.log(Math.acos(0)); // 1.5707963267948966
console.log(Math.acos(-1)); // 3.141592653589793
Это значит:
Math.acos(1)равно0Math.acos(0)равноπ / 2Math.acos(-1)равноπ
Что возвращает Math.acos()
Math.acos() возвращает число типа number.
const result = Math.acos(0.5);
console.log(result); // 1.0471975511965979
console.log(typeof result); // "number"
Результат всегда находится в диапазоне от 0 до Math.PI.
Аргумент должен быть от -1 до 1
Это самое важное ограничение у Math.acos().
console.log(Math.acos(1)); // 0
console.log(Math.acos(0.5)); // 1.0471975511965979
console.log(Math.acos(-0.5)); // 2.0943951023931957
Если значение выходит за пределы диапазона -1...1, результатом будет NaN.
console.log(Math.acos(2)); // NaN
console.log(Math.acos(-2)); // NaN
Это логично, потому что косинус обычного угла не может быть больше 1 или меньше -1.
Результат возвращается в радианах
Это второй важный момент при работе с Math.acos().
console.log(Math.acos(0.5)); // 1.0471975511965979
Это не 1.04 градуса и не 60 градусов, а угол в радианах.
Если нужно перевести результат в градусы, используйте формулу:
градусы = радианы * 180 / Math.PI
Пример:
const radians = Math.acos(0.5);
const degrees = radians * 180 / Math.PI;
console.log(degrees); // 60.00000000000001
Ещё пример:
console.log(Math.acos(0) * 180 / Math.PI); // 90
console.log(Math.acos(-1) * 180 / Math.PI); // 180
Популярные значения
Несколько значений удобно знать наизусть.
console.log(Math.acos(1)); // 0
console.log(Math.acos(0.5)); // 1.0471975511965979
console.log(Math.acos(0)); // 1.5707963267948966
console.log(Math.acos(-1)); // 3.141592653589793
Это примерно соответствует:
acos(1)=0°acos(0.5)=60°acos(0)=90°acos(-1)=180°
Диапазон результата
Даже если одинаковый косинус можно получить у разных углов, Math.acos() возвращает только один основной результат.
Он всегда находится в диапазоне:
0 ... Math.PI
То есть примерно от 0° до 180°.
Math.acos() и Math.cos()
Эти методы связаны как обратные операции, но не для любого угла.
console.log(Math.acos(Math.cos(0))); // 0
console.log(Math.acos(Math.cos(Math.PI / 3))); // 1.0471975511965976
console.log(Math.acos(Math.cos(Math.PI))); // 3.141592653589793
В этих примерах всё выглядит как полное обратное преобразование.
Но не всегда:
console.log(Math.acos(Math.cos(2 * Math.PI))); // 0
Здесь результат равен 0, а не 2 * Math.PI.
Так происходит потому, что Math.acos() всегда возвращает угол только из диапазона от 0 до π.
Math.acos() и Math.asin()
Оба метода относятся к обратным тригонометрическим функциям, но возвращают разные углы.
console.log(Math.acos(0.5)); // 1.0471975511965979
console.log(Math.asin(0.5)); // 0.5235987755982989
Math.acos(x)ищет угол по косинусуMath.asin(x)ищет угол по синусу
Из-за этого диапазон результата у них тоже разный.
Без аргумента
Если вызвать Math.acos() без аргумента, результатом будет NaN.
console.log(Math.acos()); // NaN
Так происходит потому, что метод попытается обработать undefined как число.
Неявное приведение типов
Math.acos() сначала пытается привести аргумент к числу.
console.log(Math.acos("0.5")); // 1.0471975511965979
console.log(Math.acos(null)); // 1.5707963267948966
console.log(Math.acos(true)); // 0
console.log(Math.acos(undefined)); // NaN
На практике лучше передавать в метод уже готовое число.
NaN и Infinity
Для специальных значений результат будет таким:
console.log(Math.acos(NaN)); // NaN
console.log(Math.acos(Infinity)); // NaN
console.log(Math.acos(-Infinity)); // NaN
Это полезно помнить:
NaNдаётNaNInfinityдаётNaN-InfinityдаётNaN
Число не меняется
Math.acos() не изменяет исходное значение. Он только возвращает новый результат.
const value = 0.5;
const result = Math.acos(value);
console.log(value); // 0.5
console.log(result); // 1.0471975511965979
Когда это полезно
Math.acos() часто используют, когда:
- нужно восстановить угол по известному косинусу
- вы работаете с тригонометрией и геометрией
- нужно найти угол между направлениями
- вы строите графику, анимации или вычисления координат
Пример:
const cosValue = 0.5;
const angle = Math.acos(cosValue);
console.log(angle); // 1.0471975511965979
Если нужны градусы:
console.log(angle * 180 / Math.PI); // 60.00000000000001
Частые ошибки
Передавать в Math.acos() угол, а не значение косинуса
console.log(Math.acos(60)); // NaN
Math.acos() принимает не градусы и не радианы, а число от -1 до 1.
Ожидать результат в градусах
console.log(Math.acos(0.5)); // 1.0471975511965979
Это радианы. Если нужны градусы, переводите отдельно.
Думать, что Math.acos(Math.cos(x)) всегда равно x
console.log(Math.acos(Math.cos(2 * Math.PI))); // 0
Math.acos() возвращает только основной угол из диапазона 0 ... π.
Быстрая памятка
Math.acos(x)вычисляет арккосинус числа- аргумент должен быть в диапазоне от
-1до1 - метод возвращает
number - результат всегда находится в диапазоне от
0доMath.PI - результат возвращается в радианах
Math.acos(1)равно0Math.acos(0)равноMath.PI / 2Math.acos(-1)равноMath.PI- если передать число больше
1или меньше-1, получитсяNaN
Коротко
Math.acos() - это стандартный способ вычислить арккосинус числа в JavaScript. Главное, что нужно запомнить: метод принимает значение косинуса от -1 до 1, а возвращает угол в радианах из диапазона 0 ... π.