Es kommt vor, dass man für eine analytische Berechnung die Steigung einer Geraden benötigt. Messtechnisch und grafisch leichter zu erfassen ist aber oft ein Winkel. Die Umrechnung erfolgt mithilfe des Tangens tan oder seinem Kehrwert, dem Kotangens cot. Hier hilft ein kleines grafisches Cheat-Sheet, um schnell ablesen zu können, welcher Winkel mit welcher Funktion zur Steigung umgerechnet werden kann.
Immer der entlang eines Pfeiles gemessene positive Wert des Winkels wird in die angegebene Funktion eingesetzt, um die Steigung der Geraden zu erhalten, auf die der Pfeil zeigt.
Umgekehrt erhält man in vielen Programmiersprachen mit einer speziellen Variante der Umkehrfunktion Arcus Tangens atan aus den Koordinaten des Steigungsdreiecks den zugehörigen Winkel. Die Funktion atan2 nimmt die x- und die y-Koordinate des Steigungsdreiecks und liefert den Winkel a gegenüber der positiven x-Achse.
Warum wird hier mit dem Steigungsdreieck gearbeitet und nicht einfach mit der Steigung? Eine Steigung setzt mathematisch eine Funktion voraus. Das bedeutet, zu jedem x-Wert darf es nur einen y-Wert geben. Damit ließe sich keine Senkrechte beschreiben. In der Funktion atan2 setzt man dafür einfach den x-Wert auf 0 und erhält als Lösung 90°. Im Regelfall wird man x auf 1 setzen und für y die Steigung eintragen.
Dazu lassen sich auf diese Weise alle Winkel in allen 4 Quadranten des Koordinatensystems beschreiben. Anders gesagt: Wir beschreiben keine Gerade, sondern einen gerichteten Pfeil respektive einen Vektor.
Hier ein einfaches Beispiel in Python mit der Winkelhalbierenden und damit x=1 und y=1
$ python Python 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110] on linux Type „help“, „copyright“, „credits“ or „license“ for more information. >>> import math >>> math.atan2(1,1)*180/math.pi 45.0
Umgekehrt gibt es in einigen Programmiersprachen eine spezielle Funktion sincos, die zu einem gegebenen Winkel die Koordinaten des Steigungsdreiecks liefert, was eben genau die Funktionswerte von Sinus und Kosinus sind. Hier ist zu beachten, dass sincos ein Wertepaar zurückliefert. Das bedeutet je nach Programmiersprache ist das eine Datenstruktur oder ein Aufruf by reference.
Sincos entfaltet seine Nützlichkeit nur dann, wenn beide Werte gebraucht und diese auf der Ebene des Prozessors mit einem Befehl erzeugt werden. Da das nicht immer der Fall ist, bieten nicht alle Programmiersprachen und Bibliotheken diese Funktion an. Aber sie ist natürlich leicht durch getrennte Aufrufe von sin und cos zu ersetzen.
$ python Python 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110] on linux Type „help“, "copyright", "credits" or "license" for more information. >>> import math >>> math.sin(45/180*math.pi) 0.7071067811865475 >>> math.cos(45/180*math.pi) 0.7071067811865476
Beachte, dass sin und cos sogenannte „normierte“ Werte zurückliefern, also solche, die in den Einheitskreis mit Radius 1 passen, so wie im Rechenkurs erklärt. Das bedeutet hier: Die Hypotenuse des Steigungsdreiecks hat die Länge 1. Andersherum gesagt: An einer Geraden ist die Größe des Steigungsdreiecks unerheblich, sodass wir bei Bedarf atan2 mit einem beliebig großen Steigungsdreieck nutzen können.
Hier noch ein Beispiel für sincos in C direkt mit einer x86-FPU:
Beachte, dass die FPU ihre Geschwindigkeit nur dann voll ausspielen kann, wenn alle Berechnungen einer Formel „am Stück“ innerhalb der FPU erledigt werden. Das Hin- und Herkopieren einzelner Teilergebnisse zwischen CPU und FPU ist wenig sinnvoll. In dem Zusammenhang ist gut zu wissen, dass auch die GPU der Grafikkarte für Berechnungen genutzt werden kann. Dafür gibt es API wie CUDA.