Learn JavaScript

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

Math.cos() вычисляет косинус угла.

Главное, что нужно запомнить сразу: метод принимает угол не в градусах, а в радианах.

Синтаксис

Math.cos(x)

x - угол в радианах.

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

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

console.log(Math.cos(0));          // 1
console.log(Math.cos(Math.PI));    // -1
console.log(Math.cos(Math.PI / 3)); // 0.5000000000000001

Это значит:

  • Math.cos(0) равно 1
  • Math.cos(Math.PI) равно -1
  • Math.cos(Math.PI / 3) примерно равно 0.5

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

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

const result = Math.cos(Math.PI / 4);

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

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

Метод работает в радианах

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

console.log(Math.cos(Math.PI)); // -1

Если передать в метод 60, JavaScript воспримет это как 60 радиан, а не 60 градусов.

console.log(Math.cos(60)); // -0.9524129804151563

Поэтому градусы нужно переводить в радианы.

Как перевести градусы в радианы

Формула такая:

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

Пример:

const angle = 60;
const radians = angle * Math.PI / 180;

console.log(Math.cos(radians)); // 0.5000000000000001

Ещё пример:

const angle = 180;
const radians = angle * Math.PI / 180;

console.log(Math.cos(radians)); // -1

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

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

console.log(Math.cos(0));           // 1
console.log(Math.cos(Math.PI / 6)); // 0.8660254037844387
console.log(Math.cos(Math.PI / 4)); // 0.7071067811865476
console.log(Math.cos(Math.PI / 3)); // 0.5000000000000001
console.log(Math.cos(Math.PI));     // -1

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

  • cos(0) = 1
  • cos(30°) = 0.866...
  • cos(45°) = 0.707...
  • cos(60°) = 0.5
  • cos(180°) = -1

Положительные и отрицательные углы

Math.cos() умеет работать и с отрицательными углами.

console.log(Math.cos(Math.PI / 3));  // 0.5000000000000001
console.log(Math.cos(-Math.PI / 3)); // 0.5000000000000001

Для косинуса это нормально: у положительного и отрицательного угла результат может совпадать.

Почему Math.cos(Math.PI / 2) не равно ровно 0

Иногда кажется, что здесь должен быть точный ноль, но в JavaScript используются числа с плавающей точкой.

console.log(Math.cos(Math.PI / 2)); // 6.123233995736766e-17

Это очень маленькое число, практически равное нулю.

Но математически идея остаётся той же: результат почти 0.

Math.cos() и Math.sin()

Math.cos() и Math.sin() часто используют вместе, но это разные функции.

console.log(Math.cos(Math.PI / 2)); // 6.123233995736766e-17
console.log(Math.sin(Math.PI / 2)); // 1
  • Math.cos() вычисляет косинус
  • Math.sin() вычисляет синус

Если вы работаете с углами, анимацией, геометрией или координатами, эти методы обычно идут вместе.

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

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

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

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

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

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

console.log(Math.cos("1"));       // 0.5403023058681398
console.log(Math.cos(null));      // 1
console.log(Math.cos(true));      // 0.5403023058681398
console.log(Math.cos(undefined)); // NaN

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

NaN и Infinity

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

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

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

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

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

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

const angle = Math.PI;
const result = Math.cos(angle);

console.log(angle);  // 3.141592653589793
console.log(result); // -1

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

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

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

Пример с координатой по оси x:

const angle = 60 * Math.PI / 180;
const radius = 100;
const x = radius * Math.cos(angle);

console.log(x); // 50.000000000000014

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

Передавать градусы вместо радиан

console.log(Math.cos(60)); // -0.9524129804151563

Такой результат получается потому, что 60 здесь считается радианами.

Правильно так:

console.log(Math.cos(60 * Math.PI / 180)); // 0.5000000000000001

Ожидать, что Math.cos(Math.PI / 2) даст ровно 0

console.log(Math.cos(Math.PI / 2)); // 6.123233995736766e-17

Это очень маленькая погрешность вычислений, а не проблема в коде.

Забывать, что результат всегда между -1 и 1

console.log(Math.cos(1)); // 0.5403023058681398

Косинус не может вернуть значение больше 1 или меньше -1.

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

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

Коротко

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