atan2 ist definiert in der math
, die in C über math.h
, bzw. in C++ über cmath
eingebunden wird.
atan2() berechnet den Arcus Tangens des übergebenen Parameters. Der Arcus Tangens ist die Umkehrfunktion des Tangens. Als Parameter werden hier hier Punktkoordinaten übergeben. Die Gradzahl errechnet sich an beginnend oben an der y-Achse (12 Uhr) und steigt dann im Uhrzeigersinn (3 Uhr: 90 Grad, 6 Uhr: 180 Grad, 9 Uhr: -90 Grad)
#include <math.h> double atan2( double y, double x ); float atan2( float y, float x ); // nur C++ long double atan2( long double x, long double x ); // nur C++
x: x Koordinate des Punktes y: y Koordinate des Punktes
Return value: Winkel im Bereich von -π/2 bis +π/2(Kreiszahl Pi)
Eine beliebte Fehlerquelle ist zu übersehen, dass der Computer Winkel im Bogenmaß berechnet, also von 0 bis π (Kreiszahl Pi). Winkel von 0 bis 180 Grad müssen umgerechnet werden.
Sind beide Ordinaten 0, so wird errno auf EDOM gesetzt.
#include <stdlib.h> // für EXIT_SUCCESS #include <math.h> // für atan2 #include <stdio.h> // für printf() #define PI 3.141592654 int main( void ) { double value, degree; double xPos = 5, yPos = -5; // rechts, unten value = atan2( xPos, yPos ); degree = value * 180 / PI; printf( "atan2(%f,%f) sind %f bzw. %f Grad\n", xPos, yPos, value, degree ); return EXIT_SUCCESS; }
Ausgabe:
atan2(5.000000,-5.000000) sind 2.356194 bzw. 135.000000 Grad
In C++ wird diese Funktion mit einem ValueArray-Template überschrieben.