W3docs

deg2rad()

Функция deg2rad() в PHP переводит угол из градусов в радианы. Узнайте синтаксис, примеры и подводные камни.

Функция PHP deg2rad() преобразует угол, измеренный в градусах, в эквивалентный угол в радианах. На этой странице объясняется, что она возвращает, почему важно выполнять такое преобразование, как она сочетается с тригонометрическими функциями PHP и на какие особенности нужно обратить внимание.

Зачем переводить градусы в радианы?

Люди обычно мыслят углами в градусах (полный круг — 360°), однако тригонометрические функции PHP — sin(), cos(), tan() и другие — ожидают аргумент в радианах, где полный круг равен (около 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(), которая выполняет преобразование в обратном направлении.

Базовый пример

php— editable, runs on the server

Вывод:

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() — для перевода обратно.

Практика

Практика
Какова цель функции deg2rad() в PHP?
Какова цель функции deg2rad() в PHP?
Was this page helpful?