Signatur
Beschreibung
hypot() berechnet die Länge der Hypotenuse eines rechtwinkligen Dreiecks mit den Katheten x und y. Mathematisch entspricht dies dem Ausdruck sqrt(x² + y²), also der Quadratwurzel aus der Summe der Quadrate beider Katheten (Satz des Pythagoras).
Im Gegensatz zur manuellen Berechnung mit sqrt($x * $x + $y * $y) ist hypot() numerisch stabiler und vermeidet Überläufe sowie Unterläufe bei sehr großen oder sehr kleinen Gleitkommazahlen, da intern eine skalierte Berechnung verwendet wird.
Die Funktion ist nicht nur für geometrische Berechnungen sinnvoll, sondern überall dort, wo der euklidische Abstand zweier Punkte im zweidimensionalen Raum benötigt wird – etwa in der Spieleentwicklung, der Bildverarbeitung oder bei physikalischen Simulationen.
Negative Eingabewerte sind erlaubt, da die Quadrierung das Vorzeichen aufhebt. Das Ergebnis ist stets eine nicht-negative Gleitkommazahl.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $x Pflicht | float | Länge der ersten Kathete (horizontale Komponente). Negative Werte sind erlaubt. | |
| $y Pflicht | float | Länge der zweiten Kathete (vertikale Komponente). Negative Werte sind erlaubt. |
Rückgabewert
sqrt(x² + y²).Beispiele
Klassisches 3-4-5-Dreieck
<?php
// Bekanntes rechtwinkliges Dreieck mit Katheten 3 und 4 → Hypotenuse = 5
$hypotenuse = hypot(3, 4);
echo $hypotenuse; // 5
Euklidischen Abstand zweier Punkte berechnen
<?php
// Abstand zwischen Punkt A (2, 3) und Punkt B (7, 10) im 2D-Raum
$ax = 2; $ay = 3;
$bx = 7; $by = 10;
$abstand = hypot($bx - $ax, $by - $ay);
echo round($abstand, 4); // sqrt(25 + 49) = sqrt(74)
Vergleich mit manueller Berechnung bei großen Werten
<?php
// Bei sehr großen Zahlen kann die manuelle Variante zu Overflow führen,
// hypot() bleibt numerisch stabil
$x = 1.0e200;
$y = 1.0e200;
// Manuelle Variante würde INF liefern
$manuell = sqrt($x * $x + $y * $y);
echo "Manuell: $manuell\n"; // INF
// hypot() berechnet intern skaliert und liefert korrektes Ergebnis
$korrekt = hypot($x, $y);
echo "hypot: $korrekt\n"; // 1.4142135623731E+200
// Wichtig · Fallstricke
Numerische Stabilität: Statt sqrt($x * $x + $y * $y) sollte immer hypot() bevorzugt werden, wenn Eingabewerte sehr groß oder sehr klein sein können. Die interne Implementierung skaliert die Werte vor der Berechnung, um Gleitkommaüberläufe (INF) und -unterläufe (0) zu vermeiden.
Für den dreidimensionalen euklidischen Abstand kann hypot() verschachtelt werden: hypot(hypot($x, $y), $z) – dies bleibt ebenfalls numerisch stabil.