W3docs

atan2()

Erfahren Sie mehr über die PHP-Funktion atan2(), die den Arkustangens zweier Zahlen berechnet und den Winkel im Bogenmaß zurückgibt.

Die Funktion atan2() in PHP berechnet den Arkustangens zweier Zahlen, $y und $x. Sie gibt den Winkel (im Bogenmaß) zwischen der positiven x-Achse und dem Punkt ($x, $y) zurück – genau das, was man braucht, wenn man ein Koordinatenpaar wieder in eine Richtung umwandeln möchte.

Diese Seite behandelt die Syntax der Funktion, ihre Rückgabewerte, den wesentlichen Unterschied zwischen atan2() und atan() sowie ausführbare Beispiele.

Was ist die Funktion atan2()?

atan2() ist eine eingebaute mathematische Funktion, die den Arkustangens des Quotienten $y / $x zurückgibt, jedoch – entscheidend – die Vorzeichen beider Argumente verwendet, um das Ergebnis in den richtigen Quadranten zu setzen. Das Ergebnis wird im Bogenmaß ausgedrückt und liegt zwischen und π (etwa -3.14159 bis 3.14159).

Syntax

atan2(float $y, float $x): float

Parameter

ParameterBeschreibung
$yDer Dividend (die y-Koordinate bzw. der Wert, dessen Tangens als Zähler übergeben wird).
$xDer Divisor (die x-Koordinate bzw. der Nenner).

Rückgabewert

Ein float im Bereich bis π, der den Winkel im Bogenmaß darstellt. Mit rad2deg() lässt er sich in Grad umrechnen, wenn ein lesbarer Winkel benötigt wird.

atan2() vs. atan()

Die einargumentige Funktion atan() sieht $y / $x nur als eine einzige Zahl, weshalb sie nicht zwischen beispielsweise (1, 1) und (-1, -1) unterscheiden kann – beide ergeben das Verhältnis 1. Sie gibt stets einen Winkel zwischen -π/2 und π/2 zurück und verliert dabei die Quadranteninformation. Zudem kann es zu Problemen kommen, wenn $x gleich 0 ist, da dies einer Division durch null entspräche.

atan2($y, $x) berücksichtigt beide Vorzeichen und deckt damit den vollen Kreis ( bis π) ab, während $x = 0 sicher behandelt wird. Verwende atan2(), wann immer die Eingaben echte Koordinaten sind und kein vorberechnetes Verhältnis.

Verwendung der Funktion atan2()

Übergib zuerst den y-Wert, dann den x-Wert, und rechne das Ergebnis im Bogenmaß bei Bedarf in Grad um:

php— editable, runs on the server

Die Ausgabe lautet:

Radians: 1.1071487177941
Degrees: 63.434948822922

Wir definieren $y und $x, übergeben sie an atan2(), um den Winkel im Bogenmaß zu erhalten, und verwenden dann rad2deg(), um das Ergebnis in Grad umzurechnen.

Quadrantenbehandlung

Dieses Beispiel zeigt, wie atan2() für Punkte in verschiedenen Quadranten unterschiedliche Winkel zurückgibt – selbst wenn das Verhältnis $y / $x gleich ist:

<?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
?>

Ausgabe:

45
-135
90

Da atan2() beide Vorzeichen prüft, werden die Punkte (1, 1) und (-1, -1) auf 45° bzw. -135° abgebildet, und ein $x von null wird problemlos verarbeitet.

Fazit

atan2() ist die bevorzugte Funktion in PHP, um ein Koordinatenpaar in einen Winkel umzuwandeln. Sie gibt das Bogenmaß im Bereich bis π zurück, löst alle vier Quadranten korrekt auf und vermeidet Probleme mit der Division durch null, die bei der einargumentigen atan() auftreten können. Für verwandte Trigonometrie-Funktionen, siehe atan(), tan() sowie die Hilfsfunktionen deg2rad() und rad2deg().

Übungen

Übung
Was macht die PHP-Funktion atan2()?
Was macht die PHP-Funktion atan2()?
Was this page helpful?