Skalarprodukt

Nochmal die Gedächtnisstütze zum anguggen:

http://www.rither.de/a/mathematik/lineare-algebra-und-analytische-geometrie/winkel/winkel-zwischen-vektor-und-vektor/

Der Kopf der Funktion sieht folgendermaßen aus:

function sprodukt($a,$b,$text="")

Das zweite Argument wird hierbei vorbelegt, dadurch wird es optional und wir müssen es beim Aufruf der Funktion nicht angeben (können aber natürlich, wenn wir wollen!) Für die Fallunterscheidung verwenden wir wieder eine if-Abfrage. Um den Winkel zwischen den Vektoren zu berechnen gehen wir folgendermaßen vor:

  1. Wir berechnen das Skalarprodukt der Vektoren.
  2. Dann jeweils deren Länge. abs() gibt den Betrag zurück, sqrt() berechnet die Wurzel.
  3. acos() ist der normale cos^(-1), wird allerdings im Bogenmaß ausgerechnet.
  4. Um den Winkel im Gradmaß zu erhalten benutzen wir die Funktion rad2deg().
function sprodukt($a,$b,$text=""){
    if ($text == "winkel") {
        $skal = $a[0]*$b[0]+$a[1]*$b[1]+$a[2]*$b[2];
        $laenge_a = abs(sqrt($a[0]*$a[0]+$a[1]*$a[1]+$a[2]*$a[2]));
        $laenge_b = abs(sqrt($b[0]*$b[0]+$b[1]*$b[1]+$b[2]*$b[2]));
        $winkel = acos($skal / ($laenge_a * $laenge_b));
        $winkel = rad2deg($winkel);
        return $winkel;
    }
    else {
        $ergebnis = $a[0]*$b[0]+$a[1]*$b[1]+$a[2]*$b[2];
        return $ergebnis;
    }
}

Wie immer hier das fertige Programm: skalarprodukt.php