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

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

Функция deg2rad() конвертирует значение угла из градусов в радианы. Это необходимо, поскольку большинство тригонометрических функций в PHP, такие как sin(), cos(), tan(), принимают аргументы именно в радианах.

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

Синтаксис и аргументы
float deg2rad(float $num)
  • $num (float) – единственный обязательный аргумент. Числовое значение, представляющее угол в градусах, который требуется преобразовать.
  • Возвращаемое значение: число типа float, представляющее угол в радианах. Формула преобразования: радианы = градусы * (pi() / 180).
Простые примеры использования
Базовое преобразование
echo deg2rad(45);
0.78539816339745
Использование с тригонометрической функцией
$angleInDegrees = 30;
$sinValue = sin(deg2rad($angleInDegrees));
echo $sinValue;
0.5
Преобразование отрицательного угла
echo deg2rad(-90);
-1.5707963267949
Работа с большими углами
echo deg2rad(720); // Два полных оборота
12.566370614359
Похожие функции в PHP
  • rad2deg() – выполняет обратную операцию, конвертируя радианы в градусы. Используется, когда результат вычислений в радианах нужно представить в градусах.
  • pi() – возвращает число π. Может использоваться для ручного преобразования по формуле $rad = $deg * pi() / 180, но deg2rad() является более удобной и читаемой альтернативой.
Аналоги в других языках

Deg2rad в Python

В модуле math есть функция radians().

import math
print(math.radians(180))
3.141592653589793

Deg2rad в Javascript

Специальной функции нет, используется ручное вычисление.

function deg2rad(deg) { return deg * (Math.PI / 180); }
console.log(deg2rad(90));
1.5707963267948966

Deg2rad в MySQL

Функция RADIANS().

SELECT RADIANS(57.295779513082);
1.0
Типичные ошибки
Передача нечислового аргумента

До PHP 8 это вызывало предупреждение и возвращало false. В PHP 8 выбрасывается исключение TypeError.

// PHP 7.4 и ниже
echo deg2rad('90 градусов');
Warning: deg2rad() expects parameter 1 to be float, string given
bool(false)
// PHP 8+
try {
    deg2rad('текст');
} catch (TypeError $e) {
    echo $e->getMessage();
}
deg2rad(): Argument #1 ($num) must be of type float, string given
Путаница с порядком функций

Использование deg2rad() там, где нужна rad2deg(), приводит к неверным результатам.

$angle = 3.14;
// Неправильно, если $angle уже в радианах
echo sin(deg2rad($angle));
Изменения в PHP 8

Основное изменение касается обработки нечисловых аргументов.

  • В PHP 8 функция deg2rad() объявлена строго типизированной. При передаче значения, несовместимого с типом float, выбрасывается исключение TypeError.
  • В более ранних версиях PHP (7.x) нечисловой аргумент приводился к float, если это было возможно (например, строка '45'), а в остальных случаях возвращалось false с генерацией предупреждения.
Расширенные примеры
Расчет расстояния между точками на сфере (формула гаверсинусов)
function distanceGeo($lat1, $lon1, $lat2, $lon2, $radius = 6371) {
    $lat1 = deg2rad($lat1);
    $lon1 = deg2rad($lon1);
    $lat2 = deg2rad($lat2);
    $lon2 = deg2rad($lon2);

    $deltaLat = $lat2 - $lat1;
    $deltaLon = $lon2 - $lon1;

    $a = sin($deltaLat/2) * sin($deltaLat/2) +
         cos($lat1) * cos($lat2) *
         sin($deltaLon/2) * sin($deltaLon/2);
    $c = 2 * atan2(sqrt($a), sqrt(1-$a));

    return $radius * $c;
}

// Расстояние между Москвой и Санкт-Петербургом
echo distanceGeo(55.7558, 37.6173, 59.9343, 30.3351) . ' км';
633.913... км
Генерация координат окружности
$centerX = 100;
$centerY = 100;
$radius = 50;
$points = [];

for ($angle = 0; $angle < 360; $angle += 15) {
    $rad = deg2rad($angle);
    $points[] = [
        'x' => $centerX + $radius * cos($rad),
        'y' => $centerY + $radius * sin($rad)
    ];
}
print_r($points);
Анимация и вращение объекта
// Упрощенный пример расчета новой позиции точки после поворота
$point = ['x' => 10, 'y' => 0];
$rotationAngleDegrees = 45;
$rotationAngleRad = deg2rad($rotationAngleDegrees);

$newX = $point['x'] * cos($rotationAngleRad) - $point['y'] * sin($rotationAngleRad);
$newY = $point['x'] * sin($rotationAngleRad) + $point['y'] * cos($rotationAngleRad);

echo "Новые координаты: ($newX, $newY)";
Новые координаты: (7.0710678118655, 7.0710678118655)
Преобразование углов для библиотек
// Часто углы из базы данных или API приходят в градусах
$userInputDegrees = [0, 30, 45, 90, 180];
$radiansArray = array_map('deg2rad', $userInputDegrees);
print_r($radiansArray);

PHP deg2rad function comments

En
Deg2rad Converts the number in degrees to the radian equivalent