std::atan2, std::atan2f, std::atan2l - cppreference.com
De cppreference.com
</tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody>
| Definido en el archivo de encabezado |
||
| (1) | ||
|
|
||
|
|
(desde C++11) | |
|
|
(2) | |
| (3) | ||
|
|
||
|
|
(desde C++11) | |
|
|
(4) | (desde C++11) |
1-3) Calcula el arco tangente de y/x usando los signos de los argumentos para determinar el cuadrante correcto.
4) Un conjunto de sobrecargas o una plantilla de función para todas las combinaciones de los argumentos de tipo aritmético no cubiertas por (1-3). Si algún argumento tiene tipo entero, se convierte a double. Si cualquier argumento es long double, entonces el tipo de retorno Promovido también es long double, de lo contrario el tipo de retorno siempre es double.
Parámetros
Valor de retorno
Si no se producen errores, se devuelve el arco tangente de y/x (
arctan()
) en el rango [-π , +π] radianes.
Si se produce un error de dominio, se devuelve un valor definido por la implementación (NaN donde se dé apoyo).
Si se produce un error debido a subdesbordamiento, se devuelve el resultado correcto (después del redondeo).
Manejo de errores
Los errores se informan como se especifica en math_errhandling.
Se puede producir un error de dominio si x e y son cero.
Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559):
- Si
xeyson cero, no se produce un error de dominio. - Si
xeyson cero, tampoco se produce un error de rango. - Si
yes cero, no se produce un error de polo. - Si
yes±0yxes negativo o-0, se devuelve±π. - Si
yes±0yxes positivo o+0, se devuelve±0. - Si
yes±∞yxes finito, se devuelve±π/2. - Si
yes±∞yxes-∞, se devuelve±3π/4. - Si
yes±∞yxes+∞, se devuelve±π/4. - Si
xes±0yyes negativo, se devuelve-π/2. - Si
xes±0yyes positive, se devuelve+π/2. - Si
xes-∞yyes finito y positivo, se devuelve+π. - Si
xes-∞yyes finito y negativo, se devuelve-π. - Si
xes+∞yyes finito y positivo, se devuelve+0. - Si
xes+∞yyes finito y negativo, se devuelve-0. - Si
xes NaN oyes NaN, se devuelve NaN.
Notas
std::atan2(y, x) es equivalente a std::arg(std::complex<double>(x,y)).
POSIX especifica que en caso de subdesbordamiento, se devuelva y/x, y si no se admite, se devuelva un valor definido por la implementación no mayor que DBL_MIN, FLT_MIN y LDBL_MIN.
Ejemplo
#include <iostream> #include <cmath> int main() { // uso normal: los signos de los dos argumentos determinan el cuadrante std::cout << "(x:+1,y:+1) cartesiano es (r:" << hypot(1,1) << ",phi:" << atan2(1,1) << ") polar\n" // atan2(1,1) = +pi/4, Cuad I << "(x:-1,y:+1) cartesiano es (r:" << hypot(1,-1) << ",phi:" << atan2(1,-1) << ") polar\n" // atan2(1, -1) = +3pi/4, Cuad II << "(x:-1,y:-1) cartesiano es (r:" << hypot(-1,-1) << ",phi:" << atan2(-1,-1) << ") polar\n" // atan2(-1,-1) = -3pi/4, Cuad III << "(x:+1,y:-1) cartesiano es (r:" << hypot(-1,1) << ",phi:" << atan2(-1,1) << ") polar\n"; // atan2(-1, 1) = -pi/4, Cuad IV // valores especiales std::cout << "atan2(0, 0) = " << atan2(0,0) << " atan2(0,-0) = " << atan2(0,-0.0) << '\n' << "atan2(7, 0) = " << atan2(7,0) << " atan2(7,-0) = " << atan2(7,-0.0) << '\n'; }
Salida:
(x:+1,y:+1) cartesiano es (r:1.41421,phi:0.785398) polar (x:-1,y:+1) cartesiano es (r:1.41421,phi:2.35619) polar (x:-1,y:-1) cartesiano es (r:1.41421,phi:-2.35619) polar (x:+1,y:-1) cartesiano es (r:1.41421,phi:-0.785398) polar atan2(0, 0) = 0 atan2(0,-0) = 3.14159 atan2(7, 0) = 1.5708 atan2(7,-0) = 1.5708
Véase también
(C++11)(C++11) |
Calcula el arco seno (arcsen(x)) (función) [editar] |
(C++11)(C++11) |
Calcula el arco coseno (arccos(x)) (función) [editar] |
(C++11)(C++11) |
Calcula el arco tangente (arctan(x)) (función) [editar] |
| Devuelve el ángulo de fase. (plantilla de función) [editar] | |
se aplica la función std::atan2 a un valarray y un valor Original: applies the function std::atan2 to a valarray and a value The text has been machine-translated via Google Translate. (plantilla de función) [editar] | |
Documentación de C para atan2 | |