atan2()
Aprende a usar la función atan2() en PHP para obtener el arco tangente de dos números y convertir coordenadas en ángulos correctamente.
La función atan2() en PHP calcula el arco tangente de dos números, $y y $x. Devuelve el ángulo (en radianes) entre el eje x positivo y el punto ($x, $y), lo cual es exactamente lo que necesitas cuando quieres convertir un par de coordenadas en una dirección.
Esta página cubre la sintaxis de la función, qué devuelve, la diferencia clave entre atan2() y atan(), y ejemplos ejecutables.
¿Qué es la función atan2()?
atan2() es una función matemática integrada que devuelve el arco tangente del cociente $y / $x, pero — lo más importante — usa los signos de ambos argumentos para ubicar el resultado en el cuadrante correcto. El resultado se expresa en radianes y va de -π a π (aproximadamente de -3.14159 a 3.14159).
Sintaxis
atan2(float $y, float $x): floatParámetros
| Parámetro | Descripción |
|---|---|
$y | El dividendo (la coordenada y, o el valor cuya tangente se suministra como numerador). |
$x | El divisor (la coordenada x, o el denominador). |
Valor de retorno
Un float en el rango de -π a π que representa el ángulo en radianes. Conviértelo a grados con rad2deg() cuando necesites un ángulo legible para humanos.
atan2() vs atan()
La función de un solo argumento atan() solo ve $y / $x como un único número, por lo que no puede distinguir entre, por ejemplo, (1, 1) y (-1, -1) — ambos se reducen a una razón de 1. Siempre devuelve un ángulo en el rango -π/2 a π/2 y descarta el cuadrante. También puede presentar problemas cuando $x es 0 porque eso implicaría una división por cero.
atan2($y, $x) conserva ambos signos, por lo que cubre el círculo completo (-π a π) y maneja de forma segura el caso $x = 0. Usa atan2() siempre que tus entradas sean coordenadas reales en lugar de una razón precalculada.
Cómo usar la función atan2()
Pasa el valor y primero, luego el valor x, y convierte el resultado en radianes a grados si lo necesitas:
Esto imprime:
Radians: 1.1071487177941
Degrees: 63.434948822922Definimos $y y $x, los pasamos a atan2() para obtener el ángulo en radianes, y luego usamos rad2deg() para convertir ese resultado a grados.
Manejo de cuadrantes
Este ejemplo muestra cómo atan2() devuelve un ángulo distinto para puntos en diferentes cuadrantes, incluso cuando la razón $y / $x es la misma:
<?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
?>Salida:
45
-135
90Como atan2() examina ambos signos, los puntos (1, 1) y (-1, -1) se asignan a 45° y -135° respectivamente, y un $x igual a cero se maneja sin problemas.
Conclusión
atan2() es la función de referencia para convertir un par de coordenadas en un ángulo en PHP. Devuelve radianes en el rango -π a π, resuelve correctamente los cuatro cuadrantes y evita los problemas de división por cero que afectan a la función atan() de un solo argumento. Para trigonometría relacionada, consulta atan(), tan() y los ayudantes de conversión deg2rad() / rad2deg().