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)равно0Math.sin(Math.PI / 2)равно1Math.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)=0sin(30°)=0.5sin(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даётNaNInfinityдаёт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)равно0Math.sin(Math.PI / 2)равно1Math.sin(Math.PI)может дать очень маленькое число вместо точного0- градусы нужно переводить в радианы через
angle * Math.PI / 180
Коротко
Math.sin() - это стандартный способ вычислить синус угла в JavaScript. Главное, что нужно запомнить: метод работает в радианах, а не в градусах, и из-за особенностей чисел с плавающей точкой некоторые значения вроде Math.sin(Math.PI) могут быть очень близки к нулю, но не равны ему ровно.