Funktionsgraphen programmieren
Viele denken bei Koordinaten natürlich auch gleich wieder an den Matheunterricht. Oder an Physik. Klar – wenn man ein Koordinatensystem hat, kann man darauf Werte eintragen. Zum Beispiel die Auswertung einer Temperaturliste über die Zeit – oder den Graphen einer mathematischen Funktion. Und das kann Python natürlich ganz wunderbar automatisch machen.
Sehr cool sieht zum Beispiel immer eine Sinuskurve aus, und die ist recht einfach in Python zu erzeugen – selbst wenn man nicht mehr genau weiß, was der Sinuswert eigentlich ist.
Dazu zeichnen wir, wie eben schon probiert, zuerst einmal die x- und y-Achse in schwarzen Linien.
Nun wandern wir einmal durch die gesamte x-Achse, von links nach rechts. Das heißt von –400 bis +400. Jede dieser Zahlen ergibt einen Sinuswert in Form einer Kommazahl zwischen –1 und 1. Diesen müssen wir noch mit der gewünschten Höhe multiplizieren, damit die Kurve überhaupt richtig sichtbar wird. Um die Breite der Kurve zu verändern, teilen wir den x-Wert. Die Sinusformel für die Grafik sieht dann ungefähr so aus:
breite = 50
hoehe = 200
for x in range(-400,401):
moveTo(x,sin(x/breite)*hoehe)
Und weil Sinus ja eine Funktion aus dem Mathe-Modul ist, muss der Befehl sin aus dem Modul math zuerst importiert werden. Insgesamt haben wir am Ende folgendes Programm:
from gturtle import *
from math import sin
makeTurtle()
hideTurtle()
setPenColor("black")
setPos(-400,0)
moveTo(400,0)
setPos(0,-300)
moveTo(0,300)
showTurtle()
setPenColor("blue")
setLineWidth(2)
speed(1000)
breite = 50
hoehe = 200
setPos(-400,sin(-400/breite)*hoehe)
for x in range(-400,401):
moveTo(x,sin(x/breite)*hoehe)
Abbildung 12.11 Das Ergebnis: Eine wunderschöne Sinuskurve, die natürlich immer genau durch den Ursprung (0,0) geht, denn sin(0) ist 0.
Du kannst gerne mit den Werten für hoehe und breite experimentieren und sehen, wie die Kurve sich verändert. Wenn du nicht immer abwarten willst, bis die ganze Kurve langsam gezeichnet wird, entfernst du einfach den Befehl showTurtle() und speed(1000), dann geht es immer blitzschnell.