Sin: примеры (PHP)
sin(float num): floatФункция 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 существует набор связанных тригонометрических функций:
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
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 8.0.0, функция sin() выбрасывает исключение TypeError, если ей передается нечисловой аргумент. Ранее выдавалась ошибка уровня E_WARNING, а функция возвращала NULL.
// Поведение до PHP 8.0
// $result = sin('abc'); // Warning и возврат NULL
// Поведение в PHP 8+
// $result = sin('abc'); // TypeErrorЭто изменение повышает строгость типизации и помогает быстрее обнаруживать ошибки в коде.
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
$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
// Известны гипотенуза и противолежащий катет
$hypotenuse = 10;
$opposite = 5;
$angleRad = asin($opposite / $hypotenuse);
echo 'Угол в радианах: ' . round($angleRad, 2) . "\n";
echo 'Угол в градусах: ' . round(rad2deg($angleRad), 2);Угол в радианах: 0.52 Угол в градусах: 30
$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";
}Пример вывода волнообразной линии из звездочек