Start · Sprachen · PHP · Referenz · acos

acos

Funktion

Berechnet den Arkuskosinus eines Wertes und gibt das Ergebnis im Bogenmaß (Radiant) zurück.

seit PHP 4.0.0 Kategorie: math

Signatur

acos(float $num): float

Beschreibung

acos() ist die Umkehrfunktion des Kosinus. Sie nimmt einen Wert im Bereich [-1.0, 1.0] entgegen und gibt den zugehörigen Winkel im Bogenmaß (Radiant) zwischen 0 und π zurück. Damit gehört sie zu den trigonometrischen Standardfunktionen in PHP.

Typische Anwendungsgebiete sind geometrische Berechnungen, z. B. das Bestimmen eines Winkels aus zwei bekannten Vektoren oder Seitenlängen, sowie physikalische Simulationen und 3D-Grafik-Berechnungen.

Um das Ergebnis von Radiant in Grad umzurechnen, multipliziert man es mit 180 / M_PI. Umgekehrt wandelt man Grad in Radiant um, indem man mit M_PI / 180 multipliziert.

Liegt der übergebene Wert außerhalb des gültigen Bereichs [-1.0, 1.0], gibt die Funktion NAN (Not a Number) zurück.

Parameter

Name Typ Default Beschreibung
$num Pflicht float Der Kosinus-Wert, dessen Arkuskosinus berechnet werden soll. Muss im Bereich -1.0 bis 1.0 liegen.

Rückgabewert

Typ
float
Beschreibung
Den Arkuskosinus von num im Bogenmaß (Radiant) als float. Liegt num außerhalb von [-1.0, 1.0], wird NAN zurückgegeben.

Beispiele

Arkuskosinus berechnen und in Grad umrechnen

<?php
// Arkuskosinus von 0.5 (entspricht 60 Grad)
$radiant = acos(0.5);
$grad    = $radiant * (180 / M_PI);

echo 'Radiant: ' . $radiant . PHP_EOL;
echo 'Grad:    ' . $grad    . PHP_EOL;
Radiant: 1.0471975511966 Grad: 60

Winkel zwischen zwei Vektoren berechnen

<?php
// Winkel zwischen zwei 2D-Vektoren mit dem Skalarprodukt
function winkelZwischenVektoren(array $a, array $b): float
{
    $dot    = $a[0] * $b[0] + $a[1] * $b[1];
    $lenA   = sqrt($a[0] ** 2 + $a[1] ** 2);
    $lenB   = sqrt($b[0] ** 2 + $b[1] ** 2);

    // Kosinus des Winkels, auf [-1, 1] begrenzen um NAN zu vermeiden
    $cosWinkel = max(-1.0, min(1.0, $dot / ($lenA * $lenB)));

    return acos($cosWinkel) * (180 / M_PI);
}

$vektorA = [1, 0];
$vektorB = [0, 1];

echo 'Winkel: ' . winkelZwischenVektoren($vektorA, $vektorB) . ' Grad' . PHP_EOL;
Winkel: 90 Grad

Ungültiger Eingabewert führt zu NAN

<?php
$ergebnis = acos(1.5); // Wert außerhalb von [-1, 1]

if (is_nan($ergebnis)) {
    echo 'Ungültiger Eingabewert: Ergebnis ist NAN' . PHP_EOL;
} else {
    echo 'Ergebnis: ' . $ergebnis . PHP_EOL;
}
Ungültiger Eingabewert: Ergebnis ist NAN

// Wichtig · Fallstricke

NAN-Behandlung: Übergibst du einen Wert außerhalb von [-1.0, 1.0], gibt acos() NAN zurück, ohne eine Warnung oder Exception auszulösen. Prüfe das Ergebnis daher ggf. mit is_nan(), oder klemme den Eingabewert vorab mit max(-1.0, min(1.0, $wert)) auf den gültigen Bereich.

Bei sehr großen oder sehr kleinen Gleitkommazahlen können Rundungsfehler auftreten. Dies ist ein allgemeines Problem von float-Arithmetik in PHP (IEEE 754).