hypot()
Heute besprechen wir die Funktion hypot() in PHP, die zur Berechnung der Hypotenuse eines rechtwinkligen Dreiecks verwendet wird.
Die Funktion hypot() in PHP gibt die Länge der Hypotenuse eines rechtwinkligen Dreiecks zurück — gleichbedeutend mit dem geraden (euklidischen) Abstand vom Ursprung (0, 0) zum Punkt (x, y). Diese Seite behandelt die Syntax, warum Sie sie anstelle einer manuellen Formel verwenden sollten, und die dabei zu beachtenden Fallstricke.
Syntax
hypot(float $x, float $y): float$x— Länge einer Seite (oder die x-Koordinate eines Punktes).$y— Länge der anderen Seite (oder die y-Koordinate eines Punktes).- Rückgabewert — ein
float:sqrt($x * $x + $y * $y).
Beide Argumente sind erforderlich, und die Funktion gibt immer einen float zurück, auch wenn das Ergebnis eine ganze Zahl ist (hypot(3, 4) gibt 5.0 zurück, was echo als 5 ausgibt).
Was hypot() berechnet
Nach dem Satz des Pythagoras ist die Hypotenuse eines rechtwinkligen Dreiecks die Quadratwurzel der Summe der Quadrate der beiden anderen Seiten:
Hypotenuse = √(Seite1² + Seite2²)
hypot() wertet genau diesen Ausdruck aus. Das klassische 3-4-5-Dreieck gibt 5 zurück:
Hier speichern wir die beiden Seitenlängen in Variablen, übergeben sie an hypot() und geben das Ergebnis aus. Die Funktion gibt den Gleitkommazahlwert 5 zurück.
Warum nicht einfach sqrt() verwenden?
Sie könnten sqrt($x * $x + $y * $y) manuell schreiben — warum also hypot() verwenden? Zwei Gründe:
- Lesbarkeit — die Absicht ("Hypotenuse / Abstand berechnen") ist auf den ersten Blick klar.
- Numerische Sicherheit —
hypot()ist so implementiert, dass Überlauf und Unterlauf vermieden werden, die bei einer naiven Verwendung vonsqrt()mit quadrierten Werten auftreten können, wenn$xoder$ysehr groß oder sehr klein ist. Das Quadrieren einer großen Zahl kann den float-Bereich überschreiten undINFerzeugen, währendhypot()so gebaut ist, dass es im Bereich bleibt.
Bei gewöhnlichen Berechnungen stimmen beide Ansätze überein; bei extremen Größenordnungen ist hypot() die sicherere Wahl. Siehe sqrt() und pow() für die grundlegenderen Bausteine.
Abstand zwischen zwei Punkten
Da hypot() den Abstand von (0, 0) zu (x, y) zurückgibt, können Sie den Abstand zwischen zwei beliebigen Punkten berechnen, indem Sie zunächst deren Koordinaten subtrahieren:
Die Differenzen sind 3 und 4, also beträgt der Abstand 5. Dies ist die häufigste praktische Anwendung: das Messen von Abständen im 2D-Raum (UI-Layouts, Spielphysik, geografische Berechnungen auf einer flachen Ebene).
Hinweise und Fallstricke
- Negative Eingaben sind kein Problem. Nur die Beträge zählen, daher ist
hypot(-3, -4)ebenfalls5— die Quadrate heben die Vorzeichen auf. - Das Ergebnis ist ein float.
hypot(1, 1)gibt1.4142135623731zurück (PHP gibt es mit der Standard-Genauigkeit von 14 signifikanten Stellen aus). Vergleichen Sie einhypot()-Ergebnis nicht mit===mit einer ganzen Zahl. - Beide Argumente sind Pflicht.
hypot()nimmt genau zwei Zahlen entgegen; für 3D-Abstände können Sie die Funktion verschachteln:hypot(hypot($x, $y), $z).
Fazit
hypot() bietet Ihnen eine kompakte, überlaufsichere Möglichkeit, eine Hypotenuse oder einen euklidischen 2D-Abstand zu berechnen, ohne die pythagoreische Formel manuell einzutippen. Greifen Sie darauf zurück, wenn Sie den Abstand vom Ursprung zu einem Punkt benötigen oder — durch Subtraktion der Koordinaten — den Abstand zwischen zwei beliebigen Punkten. Für verwandte mathematische Hilfsfunktionen erkunden Sie die vollständige PHP Math Functions Referenz, abs() und atan2().