deg2rad()
Функция deg2rad() в PHP переводит угол из градусов в радианы. Узнайте синтаксис, примеры и подводные камни.
Функция PHP deg2rad() преобразует угол, измеренный в градусах, в эквивалентный угол в радианах. На этой странице объясняется, что она возвращает, почему важно выполнять такое преобразование, как она сочетается с тригонометрическими функциями PHP и на какие особенности нужно обратить внимание.
Зачем переводить градусы в радианы?
Люди обычно мыслят углами в градусах (полный круг — 360°), однако тригонометрические функции PHP — sin(), cos(), tan() и другие — ожидают аргумент в радианах, где полный круг равен 2π (около 6,28). Если передать градусы напрямую в sin(), результат окажется неверным. deg2rad() служит мостом: сначала выполните преобразование, затем вызывайте тригонометрическую функцию.
Математика строится на простой пропорции:
radians = degrees × (π / 180)Таким образом, deg2rad(180) возвращает π (≈ 3,14159265…), а deg2rad(90) возвращает π/2 (≈ 1,5707963…).
Синтаксис
deg2rad(float $num): float$num— угол в градусах. Принимается любое значение типа float или integer, включая отрицательные числа и числа больше 360.- Возвращаемое значение — тот же угол, выраженный в радианах, в виде
float.
deg2rad() является обратной функцией rad2deg(), которая выполняет преобразование в обратном направлении.
Базовый пример
Вывод:
0.78539816339745Это значение равно π/4 — ровно четверти π, что логично, так как 45° составляет четверть от 180°.
Использование deg2rad() с тригонометрическими функциями
Наиболее распространённая причина обращаться к deg2rad() — передача значения в градусах в sin(), cos() или tan():
<?php
// sin() expects radians, so convert the 30° angle first
echo sin(deg2rad(30)); // 0.5
echo "\n";
// Without the conversion the result is meaningless:
echo sin(30); // -0.98803162409286
?>Первая строка корректно возвращает 0.5 (синус 30°). Вторая интерпретирует 30 как 30 радиан — примерно 4,7 полных оборота вокруг круга — поэтому результат не имеет ничего общего с 30 градусами. Это наиболее частая ошибка при работе с углами в PHP.
Работа с другими углами
deg2rad() принимает любое числовое значение, не только «удобные»:
<?php
echo deg2rad(180); // 3.1415926535898 (π)
echo "\n";
echo deg2rad(360); // 6.2831853071796 (2π)
echo "\n";
echo deg2rad(-90); // -1.5707963267949 (negative angle)
?>Для точных значений PHP также предоставляет pi() и константу M_PI, поэтому deg2rad(180) и M_PI возвращают одно и то же число.
Подводные камни
- Тригонометрические функции работают с радианами.
deg2rad()только преобразует число; она не меняет поведениеsin()/cos()/tan(). Всегда выполняйте преобразование перед вызовом тригонометрической функции. - Точность чисел с плавающей запятой. Результаты являются числами типа float, поэтому сравнения вида
deg2rad(180) == M_PIмогут давать ненадёжный результат из-за погрешностей округления. Используйте сравнение с допустимым отклонением вместо==. echoусекает отображение. По умолчаниюechoпоказывает около 14 значимых цифр; само значение float содержит больше. Используйтеprintf('%.20f', deg2rad(45)), если нужно увидеть полную точность.
Заключение
deg2rad() переводит угол из градусов в радианы по формуле degrees × π / 180 и почти всегда используется непосредственно перед вызовом тригонометрической функции — sin(), cos() или tan(). Помните, что тригонометрические функции PHP работают с радианами: используйте deg2rad() для перевода в радианы, а rad2deg() — для перевода обратно.