Math.atan() вычисляет арктангенс числа.
Проще всего запомнить так: Math.atan(x) отвечает на вопрос, какой угол имеет тангенс x.
Главный нюанс: аргумент здесь может быть любым числом, а результат метод возвращает в радианах.
Синтаксис
Math.atan(x)
x - число, для которого нужно найти арктангенс.
Что делает Math.atan()
Метод возвращает угол, тангенс которого равен переданному числу.
console.log(Math.atan(0)); // 0
console.log(Math.atan(1)); // 0.7853981633974483
console.log(Math.atan(-1)); // -0.7853981633974483
Это значит:
Math.atan(0)равно0Math.atan(1)равноπ / 4Math.atan(-1)равно-π / 4
Что возвращает Math.atan()
Math.atan() возвращает число типа number.
const result = Math.atan(0.5);
console.log(result); // 0.4636476090008061
console.log(typeof result); // "number"
Результат всегда находится в диапазоне от -Math.PI / 2 до Math.PI / 2.
Аргумент может быть любым числом
Это важное отличие Math.atan() от Math.asin() и Math.acos().
console.log(Math.atan(0.5)); // 0.4636476090008061
console.log(Math.atan(10)); // 1.4711276743037347
console.log(Math.atan(-10)); // -1.4711276743037347
Здесь нет ограничения -1...1.
То есть метод может принимать:
- отрицательные числа
- положительные числа
0- очень большие значения
Результат возвращается в радианах
Это самый важный момент при работе с Math.atan().
console.log(Math.atan(1)); // 0.7853981633974483
Это не 0.78 градуса и не 45 градусов, а угол в радианах.
Если нужен результат в градусах, используйте формулу:
градусы = радианы * 180 / Math.PI
Пример:
const radians = Math.atan(1);
const degrees = radians * 180 / Math.PI;
console.log(degrees); // 45
Ещё пример:
console.log(Math.atan(-1) * 180 / Math.PI); // -45
console.log(Math.atan(10) * 180 / Math.PI); // 84.28940686250037
Популярные значения
Несколько значений удобно знать наизусть.
console.log(Math.atan(0)); // 0
console.log(Math.atan(1)); // 0.7853981633974483
console.log(Math.atan(-1)); // -0.7853981633974483
Это примерно соответствует:
atan(0)=0°atan(1)=45°atan(-1)=-45°
Диапазон результата
Даже если одинаковый тангенс можно получить у разных углов, Math.atan() возвращает только один основной результат.
Он всегда находится в диапазоне:
-Math.PI / 2 ... Math.PI / 2
То есть примерно от -90° до 90°.
Что происходит на очень больших значениях
Чем больше аргумент по модулю, тем ближе результат к π / 2 или -π / 2.
console.log(Math.atan(10)); // 1.4711276743037347
console.log(Math.atan(Infinity)); // 1.5707963267948966
console.log(Math.atan(-Infinity)); // -1.5707963267948966
Это полезно помнить:
- большие положительные числа стремятся к
π / 2 - большие отрицательные числа стремятся к
-π / 2
Math.atan() и Math.tan()
Эти методы связаны как обратные операции, но не для любого угла.
console.log(Math.atan(Math.tan(0))); // 0
console.log(Math.atan(Math.tan(Math.PI / 4))); // 0.7853981633974483
В этих примерах всё выглядит как полное обратное преобразование.
Но не всегда:
console.log(Math.atan(Math.tan(Math.PI))); // -1.2246467991473532e-16
Здесь результат близок к 0, а не к Math.PI.
Так происходит потому, что Math.atan() всегда возвращает угол только из диапазона от -π / 2 до π / 2.
Math.atan() и Math.atan2()
Math.atan() и Math.atan2() похожи по названию, но применяются по-разному.
console.log(Math.atan(1)); // 0.7853981633974483
Math.atan(x)работает с одним числомMath.atan2(y, x)работает с двумя координатами и умеет точнее определять четверть угла
Если нужно вычислить угол по отношению y / x, в простой ситуации подходит Math.atan(). Но для координат точки на плоскости часто удобнее Math.atan2().
Без аргумента
Если вызвать Math.atan() без аргумента, результатом будет NaN.
console.log(Math.atan()); // NaN
Так происходит потому, что метод попытается обработать undefined как число.
Неявное приведение типов
Math.atan() сначала пытается привести аргумент к числу.
console.log(Math.atan("1")); // 0.7853981633974483
console.log(Math.atan(null)); // 0
console.log(Math.atan(true)); // 0.7853981633974483
console.log(Math.atan(undefined)); // NaN
На практике лучше передавать в метод уже готовое число.
NaN и Infinity
Для специальных значений результат будет таким:
console.log(Math.atan(NaN)); // NaN
console.log(Math.atan(Infinity)); // 1.5707963267948966
console.log(Math.atan(-Infinity)); // -1.5707963267948966
Это полезно помнить:
NaNдаётNaNInfinityдаётMath.PI / 2-Infinityдаёт-Math.PI / 2
Число не меняется
Math.atan() не изменяет исходное значение. Он только возвращает новый результат.
const value = 1;
const result = Math.atan(value);
console.log(value); // 1
console.log(result); // 0.7853981633974483
Когда это полезно
Math.atan() часто используют, когда:
- нужно восстановить угол по известному тангенсу
- вы работаете с наклоном линии
- нужно получить угол по отношению высоты к ширине
- вы строите графику, анимации или геометрические вычисления
Пример:
const slope = 1;
const angle = Math.atan(slope);
console.log(angle); // 0.7853981633974483
Если нужны градусы:
console.log(angle * 180 / Math.PI); // 45
Частые ошибки
Ожидать результат в градусах
console.log(Math.atan(1)); // 0.7853981633974483
Это радианы. Если нужны градусы, переводите отдельно.
Думать, что Math.atan() принимает угол
console.log(Math.atan(45)); // 1.5485777614681775
Math.atan() принимает не градусы и не радианы, а число, которое является значением тангенса.
Думать, что Math.atan(Math.tan(x)) всегда равно x
console.log(Math.atan(Math.tan(Math.PI))); // -1.2246467991473532e-16
Math.atan() возвращает только основной угол из диапазона -π / 2 ... π / 2.
Быстрая памятка
Math.atan(x)вычисляет арктангенс числа- аргумент может быть любым числом
- метод возвращает
number - результат всегда находится в диапазоне от
-Math.PI / 2доMath.PI / 2 - результат возвращается в радианах
Math.atan(0)равно0Math.atan(1)равноMath.PI / 4Math.atan(Infinity)равноMath.PI / 2Math.atan(-Infinity)равно-Math.PI / 2
Коротко
Math.atan() - это стандартный способ вычислить арктангенс числа в JavaScript. Главное, что нужно запомнить: метод принимает любое число, а возвращает угол в радианах из диапазона -π / 2 ... π / 2.