W3docs

atan2()

Функция atan2() в PHP вычисляет арктангенс двух чисел и возвращает угол в радианах между положительной осью X и точкой ($x, $y).

Функция atan2() в PHP вычисляет арктангенс двух чисел, $y и $x. Она возвращает угол (в радианах) между положительной осью X и точкой ($x, $y) — это именно то, что нужно, когда требуется преобразовать пару координат обратно в направление.

На этой странице описаны синтаксис функции, возвращаемое значение, ключевое отличие atan2() от atan(), а также приведены запускаемые примеры.

Что такое функция atan2()?

atan2() — это встроенная математическая функция, которая возвращает арктангенс частного $y / $x, но — что принципиально важно — она использует знаки обоих аргументов, чтобы поместить результат в правильный квадрант. Результат выражается в радианах и находится в диапазоне от до π (примерно от -3.14159 до 3.14159).

Синтаксис

atan2(float $y, float $x): float

Параметры

ПараметрОписание
$yДелимое (координата y, или значение, тангенс которого задаётся как числитель).
$xДелитель (координата x, или знаменатель).

Возвращаемое значение

Значение типа float в диапазоне от до π, представляющее угол в радианах. Для преобразования в градусы используйте rad2deg().

atan2() vs atan()

Одноаргументная функция atan() видит $y / $x как одно число, поэтому она не может отличить, например, точку (1, 1) от (-1, -1) — обе дают отношение 1. Она всегда возвращает угол в диапазоне от -π/2 до π/2 и теряет информацию о квадранте. Также она может некорректно работать при $x = 0, поскольку это означает деление на ноль.

atan2($y, $x) сохраняет оба знака, поэтому охватывает полный круг (от до π) и корректно обрабатывает случай $x = 0. Используйте atan2() всегда, когда входные данные представляют реальные координаты, а не заранее вычисленное отношение.

Как использовать функцию atan2()

Передайте сначала значение y, затем значение x и при необходимости переведите результат из радиан в градусы:

php— editable, runs on the server

Результат вывода:

Radians: 1.1071487177941
Degrees: 63.434948822922

Мы задаём $y и $x, передаём их в atan2(), чтобы получить угол в радианах, а затем используем rad2deg() для преобразования результата в градусы.

Обработка квадрантов

Этот пример показывает, как atan2() возвращает различные углы для точек в разных квадрантах — даже когда отношение $y / $x одинаково:

<?php
// Same ratio (1), but different quadrants
echo rad2deg(atan2(1, 1)), "\n";   // upper-right quadrant
echo rad2deg(atan2(-1, -1)), "\n"; // lower-left quadrant

// $x is zero — no division-by-zero error
echo rad2deg(atan2(1, 0)), "\n";   // straight up
?>

Вывод:

45
-135
90

Поскольку atan2() проверяет оба знака, точки (1, 1) и (-1, -1) соответствуют углам 45° и -135° соответственно, а нулевое значение $x обрабатывается корректно.

Заключение

atan2() — основная функция для преобразования пары координат в угол в PHP. Она возвращает радианы в диапазоне от до π, корректно определяет все четыре квадранта и избегает проблемы деления на ноль, характерной для однопараметрической atan(). По смежным темам тригонометрии смотрите atan(), tan(), а также вспомогательные функции преобразования deg2rad() / rad2deg().

Практика

Практика
Что делает функция PHP atan2()?
Что делает функция PHP atan2()?
Was this page helpful?