Sin: примеры (PHP)

Функция sin() в PHP: вычисление синуса угла
Раздел: Математические функции
sin(float num): float
Основы функции sin()

Функция sin() в PHP возвращает синус числа. Она является частью математического расширения и доступна по умолчанию.

Использование функции актуально в задачах, связанных с геометрией, тригонометрией, генерацией волновых сигналов, анимацией и обработкой периодических данных.

Синтаксис: float sin(float $arg)

Аргумент $arg — это числовое значение, представляющее угол в радианах. Функция ожидает параметр типа float или int, который будет преобразован в float. Возвращаемое значение — синус угла $arg в виде числа с плавающей точкой в диапазоне от -1 до 1.

Базовые примеры
Простое вычисление синуса
$result = sin(0);
echo $result;
0
Синус угла в радианах
$angle = M_PI / 6; // 30 градусов
$sinValue = sin($angle);
echo round($sinValue, 2);
0.5
Синус отрицательного угла
echo sin(-M_PI / 2);
-1
Похожие функции в PHP

В PHP существует набор связанных тригонометрических функций:

cos() — вычисляет косинус угла. Используется, когда нужен косинус вместо синуса.

tan() — возвращает тангенс угла.

asin() — арксинус, обратная функция к sin(), возвращает угол по значению синуса.

deg2rad() — конвертирует градусы в радианы. Часто применяется перед вызовом sin(), если исходные данные в градусах.

sinh() — гиперболический синус.

Выбор функции зависит от конкретной математической задачи. sin() и cos() чаще всего используются вместе при работе с координатами и поворотами.

Аналоги в других языках

Sin в Python

Используется функция math.sin(x). Угол также передается в радианах.

import math
print(math.sin(math.pi / 2))
1.0

Sin в Javascript

Глобальный метод Math.sin(x). Работает идентично.

console.log(Math.sin(Math.PI));
1.2246467991473532e-16 (практически 0)

Sin в MySQL

Функция SIN(x) в SQL-запросах.

SELECT SIN(PI()/6);
0.5

Основное отличие PHP от некоторых других языков — отсутствие необходимости импортировать специальный модуль для базовых математических операций.

Типичные ошибки
Передача аргумента в градусах без конвертации
// Неправильно: ожидается радианная мера
$sin30 = sin(30);
echo $sin30;
-0.98803162409286
// Правильно: конвертация градусов в радианы
$sin30 = sin(deg2rad(30));
echo round($sin30, 2);
0.5
Передача нечислового аргумента (в PHP 8+)
echo sin('текст');
TypeError: sin(): Argument #1 ($num) must be of type float, string given
Ожидание абсолютной точности при сравнении результатов
// Из-за природы чисел с плавающей точкой
var_dump(sin(M_PI) == 0);
bool(false)
// Сравнение с допустимой погрешностью
var_dump(abs(sin(M_PI)) < 0.000001);
bool(true)
Изменения в последних версиях PHP

Начиная с PHP 8.0.0, функция sin() выбрасывает исключение TypeError, если ей передается нечисловой аргумент. Ранее выдавалась ошибка уровня E_WARNING, а функция возвращала NULL.

// Поведение до PHP 8.0
// $result = sin('abc'); // Warning и возврат NULL

// Поведение в PHP 8+
// $result = sin('abc'); // TypeError

Это изменение повышает строгость типизации и помогает быстрее обнаруживать ошибки в коде.

Расширенные примеры
Генерация простой синусоиды для данных
Пример php
for ($x = 0; $x < 2 * M_PI; $x += M_PI / 4) {
    $y = sin($x);
    echo 'x: ' . round($x, 2) . ' => sin(x): ' . round($y, 2) . "\n";
}
x: 0 => sin(x): 0
x: 0.79 => sin(x): 0.71
x: 1.57 => sin(x): 1
x: 2.36 => sin(x): 0.71
x: 3.14 => sin(x): 0
x: 3.93 => sin(x): -0.71
x: 4.71 => sin(x): -1
x: 5.5 => sin(x): -0.71
Использование в анимации или колебаниях
Пример php
$time = 0;
$amplitude = 50;
$frequency = 2;
for ($i = 0; $i < 5; $i++) {
    $position = $amplitude * sin($frequency * $time);
    echo 'Время ' . $time . ': позиция ' . round($position, 1) . "\n";
    $time += 0.1;
}
Время 0: позиция 0
Время 0.1: позиция 9.9
Время 0.2: позиция 19.8
Время 0.3: позиция 29.2
Время 0.4: позиция 38.9
Комбинация с другими функциями для расчета угла треугольника
Пример php
// Известны гипотенуза и противолежащий катет
$hypotenuse = 10;
$opposite = 5;
$angleRad = asin($opposite / $hypotenuse);
echo 'Угол в радианах: ' . round($angleRad, 2) . "\n";
echo 'Угол в градусах: ' . round(rad2deg($angleRad), 2);
Угол в радианах: 0.52
Угол в градусах: 30
Создание простого текстового графика синусоиды
Пример php
$steps = 20;
$width = 50;
for ($i = 0; $i <= $steps; $i++) {
    $x = 2 * M_PI * $i / $steps;
    $y = sin($x);
    $pos = round(($y + 1) / 2 * $width);
    echo str_repeat(' ', $pos) . "*\n";
}
Пример вывода волнообразной линии из звездочек

PHP sin function comments

En
Sin Returns the sine of an angle