Learn JavaScript

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

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

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

Синтаксис

Math.sin(x)

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

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

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

console.log(Math.sin(0));           // 0
console.log(Math.sin(Math.PI / 2)); // 1
console.log(Math.sin(-Math.PI / 2)); // -1

Это значит:

  • Math.sin(0) равно 0
  • Math.sin(Math.PI / 2) равно 1
  • Math.sin(-Math.PI / 2) равно -1

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

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

const result = Math.sin(Math.PI / 6);

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

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

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

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

console.log(Math.sin(Math.PI / 2)); // 1

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

console.log(Math.sin(90)); // 0.8939966636005579

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

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

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

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

Пример:

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

console.log(Math.sin(radians)); // 0.49999999999999994

Ещё пример:

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

console.log(Math.sin(radians)); // 1

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

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

console.log(Math.sin(0));           // 0
console.log(Math.sin(Math.PI / 6)); // 0.49999999999999994
console.log(Math.sin(Math.PI / 4)); // 0.7071067811865475
console.log(Math.sin(Math.PI / 2)); // 1

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

  • sin(0) = 0
  • sin(30°) = 0.5
  • sin(45°) = 0.707...
  • sin(90°) = 1

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

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

console.log(Math.sin(Math.PI / 2));  // 1
console.log(Math.sin(-Math.PI / 2)); // -1

Это нормальное поведение.

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

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

console.log(Math.sin(Math.PI)); // 1.2246467991473532e-16

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

Точно так же:

console.log(Math.sin(2 * Math.PI)); // -2.4492935982947064e-16

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

Math.sin() и Math.cos()

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

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

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

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

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

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

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

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

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

console.log(Math.sin("1"));      // 0.8414709848078965
console.log(Math.sin(null));     // 0
console.log(Math.sin(true));     // 0.8414709848078965
console.log(Math.sin(undefined)); // NaN

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

NaN и Infinity

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

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

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

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

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

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

const angle = Math.PI / 2;
const result = Math.sin(angle);

console.log(angle);  // 1.5707963267948966
console.log(result); // 1

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

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

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

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

const angle = 45 * Math.PI / 180;
const radius = 100;
const y = radius * Math.sin(angle);

console.log(y); // 70.71067811865474

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

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

console.log(Math.sin(90)); // 0.8939966636005579

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

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

console.log(Math.sin(90 * Math.PI / 180)); // 1

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

console.log(Math.sin(Math.PI)); // 1.2246467991473532e-16

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

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

console.log(Math.sin(1)); // 0.8414709848078965

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

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

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

Коротко

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