35 Stimmen

Warum sind die Argumente für atan2 Y,X und nicht X,Y?

In C hat die Funktion atan2 die folgende Signatur:

double atan2( double y, double x );

Andere Sprachen tun dies auch. Dies ist die einzige Funktion, die ich kenne, die ihre Argumente in der Reihenfolge Y,X und nicht X,Y aufnimmt, und das bringt mich regelmäßig durcheinander, denn wenn ich an Koordinaten denke, denke ich (X,Y).

Weiß jemand, warum atan2's Argument Reihenfolge Konvention ist so?

0 Stimmen

Warum ist dies als sprachenunabhängig gekennzeichnet?

0 Stimmen

@mgroves Das passiert in vielen Sprachen

0 Stimmen

Denn dasselbe Format gibt es in einer Vielzahl von Sprachen. Aus dem atan2-Wiki-Eintrag: "Es reicht mindestens bis zur Programmiersprache FORTRAN zurück und ist derzeit in der Standardbibliothek math.h der Programmiersprache C, in der Java-Math-Bibliothek, in der statischen Math-Klasse von C# und anderswo zu finden. Viele Skriptsprachen, wie z. B. Perl, enthalten die atan2-Funktion im Stil von C.[1]"

0voto

cayhorstmann Punkte 3034

Es wäre bequemer, wenn die Argumente von atan2 umgekehrt wären. Dann bräuchte man sich bei der Berechnung von Polarwinkeln keine Gedanken über das Umdrehen der Argumente zu machen. Das Mathematica-Äquivalent tut genau das: https://reference.wolfram.com/language/ref/ArcTan.html

In den Anfängen von FORTRAN gab es eine ATAN2-Funktion mit der weniger praktischen Argumentenfolge, die in dieses Referenzhandbuch wird (etwas ungenau) als arctan(arg1 / arg2) beschrieben.

Es ist plausibel, dass der ursprüngliche Schöpfer darauf fixiert war, dass atan2(arg1, arg2) (mehr oder weniger) arctan(arg1 / arg2) ist, und dass diese Entscheidung blindlings von FORTRAN über C zu C++ und Python und Java und JavaScript kopiert wurde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X