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.141592653589793Deg2rad в Javascript
Специальной функции нет, используется ручное вычисление.
function deg2rad(deg) { return deg * (Math.PI / 180); }
console.log(deg2rad(90));1.5707963267948966Deg2rad в 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