Learn JavaScript

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

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) равно 0
  • Math.atan(1) равно π / 4
  • Math.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) =
  • 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 даёт NaN
  • Infinity даёт 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) равно 0
  • Math.atan(1) равно Math.PI / 4
  • Math.atan(Infinity) равно Math.PI / 2
  • Math.atan(-Infinity) равно -Math.PI / 2

Коротко

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