La función atan2() se define en el archivo de encabezado valarray. Esta función calcula la tangente inversa del valor (y/x) de cada elemento en valarray y devuelve un valarray que contiene la tangente inversa de todos los elementos. donde y es la proporción de la coordenada y yx es la proporción de la coordenada x.
Sintaxis:
std::valarray res = atan2 (y-coords, x-coords)
Parámetros: La función acepta dos parámetros obligatorios que son X-coords y Y-coords.
Nota: si ambos parámetros son objetos valarray y sus tamaños no coinciden, entonces se comportan como indefinidos.
Devoluciones: Esta función devuelve un valarray que contiene la tangente inversa de todos los elementos.
Los siguientes programas ilustran la función anterior:
Ejemplo 1:-
CPP
// atan2 valarray example // programs illustrate the atan2() function: #include <iostream> #include <valarray> using namespace std; int main() { // initialize both the array X and Y coords double y[] = { 0.0, 3.0, -2.0 }; double x[] = { -3.0, 3.0, -1.0 }; // initialize both the valarray X and Y coords valarray<double> ycoords(y, 3); valarray<double> xcoords(x, 3); // store results in valarray res valarray<double> res = atan2(ycoords, xcoords); // print results of atan2() function cout << "results:"; for (size_t i = 0; i < res.size(); ++i) cout << ' ' << res[i]; cout << '\n'; return 0; }
Producción:
results: results: 3.14159 0.785398 -2.03444
Ejemplo 2:-
CPP
// atan2 valarray example // programs illustrate the atan2() function: #include <iostream> #include <valarray> using namespace std; int main() { // initialize both the array X and Y coords double y[] = { 4.0, 5.6, -2.8, 7.3 }; double x[] = { 5.0, -1.5, 7.0, -0.8 }; // initialize both the valarray X and Y coords valarray<double> ycoords(y, 4); valarray<double> xcoords(x, 4); // store results in valarray res valarray<double> res = atan2(ycoords, xcoords); // print results of atan2() function cout << "results:"; for (size_t i = 0; i < res.size(); ++i) cout << ' ' << res[i]; cout << '\n'; return 0; }
Producción:
results: 0.674741 1.83251 -0.380506 1.67995
Ejemplo 3:- Errores y excepciones:
La función no devuelve ninguna función coincidente para la llamada al error cuando se pasan como argumento objetos valarray de diferentes tamaños.
CPP
// atan2 valarray example // programs illustrate the atan2() function: #include <iostream> #include <valarray> using namespace std; int main() { // initialize both the array X and Y coords double y[] = { -2.8, 7.3 }; float x[] = { 5.0, -0.8, 3.2, 5, 1 }; // initialize both the valarray X and Y coords valarray<double> ycoords(y, 2); valarray<float> xcoords(x, 4); // store results in valarray res valarray<double> res = atan2(ycoords, xcoords); // print results of atan2() function cout << "results:"; for (size_t i = 0; i < res.size(); ++i) cout << ' ' << res[i]; cout << '\n'; return 0; }
Producción:
prog.cpp: In function 'int main()': prog.cpp:14:48: error: no matching function for call to 'atan2(std::valarray&, std::valarray&)' valarray res = atan2 (ycoords, xcoords); ^