Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03428.jsonl.gz/1113

In diesem Blog lernst Du, wie man mit der Schildkröte (dem Cursor) Kreise und Teilkreise zeichnen kann.
Inhaltsverzeichnis
Dieser Blog wird vom IAIP gratis zur Verfügung gestellt. Der Blog ist ein Bestandteil des Kurses K103 «Programmieren mit Turtle Graphics » und gehört zur Lektion 2, Themenblock 2 (L2T2).
Der Kurs führt dich durch die einzelnen Blogs, enthält Zusatzmaterialien, Videos, viele Aufgaben mit Lösungen und Quizze zur Lernkontrolle. Der Kurs hat eine Kursgebühr von CHF 50.- Mit dem Einschreiben zum Kurs hilfst du mit, dass solche Blogs auch zukünftig noch gratis zur Verfügung gestellt werden können.Im Blog hat es ergänzende Hinweise für Kursteilnehmer, jeweils in roter Farbe:
Einordnung
Im letzten Themenblock bzw. Blogbeitrag (siehe Blog K103: Schildkröte bewegen) haben wir Geraden (gerade Linien) gezeichnet. Über die Anweisungen right() oder left() wurde die Schildkröte ausgerichtet, um anschliessend mit den Anweisungen forward() und back() einen Strich in die richtige Richtung zu ziehen. In diesem Themenblock lernen wir nun, mit der Schildkröte Kreise und Teilkreise zu zeichnen.
Kreise zeichnen mit circle()
Betrachten wir als erstes wiederum ein kleines Beispielprogramm:
# Vorbereitung (Bibliothek importieren) from turtle import * # ein Kreis mit Radius 100 circle(100) # und Abschluss exitonclick()
Das Programm führt zu folgender Ausgabe:
Kreise zeichnen ist in Turtle Graphics ganz einfach. In Zeile 5 steht die Anweisung circle(100), welche einen Kreis mit einem Radius von 100 (Durchmesser von 200) zeichnet. Je grösser der Radius, je grösser der Kreis.
Die Anweisung circle() (von engl. «circle»: «Kreis») zeichnet mit unserer Schildkröte also einen Kreis. Der Cursor bewegt sich dabei immer im Gegenuhrzeigersinn. Soll heissen, der Kreis wird links von der Schildkröte gezeichnet. Die Anweisung hat die folgende Syntax:
turtle.circle(radius, extent=None, steps=None)
Verlangt werden ein zwingender Parameter (radius) sowie optional zwei weitere Wertangaben (extent, steps). An dieser Stelle interessiert uns nur der erste Wert, also der Parameter radius. Wie unschwer zu erraten ist, definiert dieser den Radius des zu zeichnenden Kreises. Wenn wir also die Anweisung circle(…) mit nur einem Wert – was Python auch im Minimum verlangt – schreiben, dann wird ein Kreis gezeichnet. circle(60) zeichnet einen Kreis mit Radius 60 bzw. Durchmesser 120.
Angegeben können übrigens, wie auch bei forward() und back(), wiederum positive und negative, Ganz- und auch Kommazahlen.
Ergänzender Hinweis: Kreise im Uhrzeigersinn
Wie erwähnt zeichnet die Turtle den Kreis links von ihr. Um einen Kreis im Uhrzeigersinn zu zeichnen, übergibt man als Wert einfachen einen negativen Radius. circle(-100) zeichnet einen Kreis mit Radius 100 im Uhrzeigersinn. Auch wenn es eigentlich keine Kreise mit negativen Radien gibt, ist die Angabe einer negativen Zahl hier trotzdem erlaubt. Die Schildkröte bewegt sich vorwärts und im Uhrzeigersinn. (Das hat mit der Berechnung der Kreispunkte zu tun)
Teilkreise
Wir haben bereits erwähnt, dass man bei der circle() Anweisung noch weitere Werte angeben kann. Als zweites können wir nun einen Winkel definieren. Der Winkel gibt an, wie weit der Kreis (Teilkreis) gezeichnet werden soll. Dieser zweite Wert wird durch ein Komma von der Radiusangabe getrennt.
Hierzu wiederum ein kleines Beispiel:
# Vorbereitung (Bibliothek importieren) from turtle import * # Kreise circle(100, 180) # und Abschluss exitonclick()
Das Programm zeichnet einen Halbkreis mit einem Radius von 100 und führt zu folgender Ausgabe:
Übrigens: möchte man den Teilkreis nach rechts haben, dann gilt natürlich dasselbe, wie schon beim Kreis. Um den Teilkreis rechts von der Schildkröte zu zeichnen, setzt man beim Radius (erste Zahl in der Klammer) einfach eine negative Zahl ein.
Ergänzender Hinweis für Fortgeschrittene:
Was für den Radius gilt, ist grundsätzlich beim Winkel nicht anders. Das heisst, man kann auch einen negativen Winkel erfassen. Die Schildkröte bewegt sich dann in der Konsequenz einfach rückwärts. Das bedeutet:
|Anweisung||Bewegung Turtle||Kreis entsteht||Kreis wird|
gezeichnet im
|circle(100,90)||vorwärts||links von Turtle||GUZ|
|circle(-100, 90)||vorwärts||rechts von Turtle||UZ|
|circle(100,-90)||rückwärts||links von Turtle||UZ (!)|
|circle(-100, -90)||rückwärts||rechts von Turtle||GUZ (!)|
GUZ: Gegenuhrzeigersinn UZ: Uhrzeigersinn
Wir haben im letzten Themenblock (siehe Blog 103: Schildkröte bewegen) erwähnt, dass man Winkelangaben auch im Bogenmass machen kann. Dies ist natürlich auch bei Teilkreisen möglich. Man muss hierzu vorab einfach das Winkelmass von Grad degrees() auf Radiant radians() umstellen.
Regelmässiges Vieleck (Polygon)
Mit dem letzten Parameter steps kann man schliesslich aus dem Kreis oder Teilkreis ein regelmässiges Vieleck machen.
Ein regelmässiges k-Eck hat k Ecken und k gleich lange Seiten. Ein regelmässiges Dreieck hat folglich 3 Ecken und 3 gleich lange Seiten, ein Quadrat hat 4 Ecken und 4 gleichlange Seiten, etc. Möchte man ein regelmässiges k-Eck selber konstruieren, so musst muss man k Linien zeichnen und nach jeder Linie die Turtle drehen. Und zwar jedes Mal 360 : Anzahl Ecken, denn am Ende sollte man wieder an der Startposition stehen und in dieselbe Richtung schauen.
Das folgende Programm zeichnet zur Veranschaulichung ein regelmässiges Dreieck:
from turtle import * circle(100,360,3) exitonclick()
In diesem Fall drehen wir 3x 120 Grad, da 3×120 = 360. Am Ende hat sich die Schildkröte einmal linksherum um die eigene Achse gedreht. Unser Programm ist deutlich kompakter geworden. Anstelle von 6 Anweisungen (3x forward() und 3x left()) haben wir nur eine einzeige Codezeile benötigt.
forward(173) left(120) forward(173) left(120) forward(173) left(120)
Beachte, dass sich das Dreieck aus dem Kreisradius ergibt (die Ecken des Vielecks liegen auf dem Kreis). Wir haben nirgends die Seitenlänge unseres Vielecks angegeben. Um ein Dreieck zu erhalten, welches in einen Kreis mit Radius 100 passt, müssen wir jeweils rund 173 Punkte gerade aus (mathematisch: √3 mal den Radius).
Ergänzender Hinweis für Fortgeschrittene:
Grundsätzlich kann man auch nur einen Teil eines regelmässigen Vielecks zeichnen. Setzt man den zweiten Parameter extent beispielsweise auf 180, so wird nur die Hälfte der Figur gezeichnet.
Python geht davon aus, dass man in der Regel ein ganzes Polygon zeichnen möchte. Man kann deshalb auch den zweiten Wert weglassen (der sog. default Value ist 360). Allerdings muss man dann beim letzten Wert den Namen des Parameters mit angeben. Ansonsten kann Python nicht wissen, ob sich die Zahl nun auf den zweiten oder dritten Parameter bezieht.
from turtle import * circle(100,360) # Kreis mit Radius 100 circle(100) # identisch. 360 ist als default Value hinterlegt # und wird automatisch ergänzt circle(100, 10) # Teilkreis mit Radius 100, Winkel 10 Grad circle(100, steps=10) # 10-Eck mit Radius 100 circle(100, 10, 10) # ersten 10 Grad des 10 Ecks
Exkurs Ellipsen
Es gibt in unserer turtle Bibliothek leider keine Anweisung, um eine Ellipse zu zeichnen. Wir werden im Verlauf dieses Kurses jedoch die eine oder andere Art vorstellen, wie du trotzdem relativ einfach eine Ellipse bekommst. Dazu gehören:
Übungsaufgaben
Nachfolgend findest Du ein paar Übungsaufgaben. Beachte insbesondere auch die Bonusaufgaben 10 und 11.
Lösungen zu den Aufgaben findest du im Kurs K103 «Programmieren mit Turtle Graphics «:
Lektion 2, Themenblock 2 (L2T2).
Aufgabe 1: eine erste Übung
Versuche die rechts abgebildete Figur nachzuzeichnen. Zeichne hierzu drei Kreise mit den Radien von 150, 100 und 50 Punkten.
Bonusaufgabe für den Unterricht: Zeichen 20 Kreise. Beginne bei einem Radius von 30 und erhöhe den Radius jeweils um 2 (alternativ 4) Punkte. Nutze CTRL+C und CTRL+V.
Bonusaufgabe II für den Unterricht: Zeichne ein Quadrat um den grössten Kreis (mit Radius 150) herum.
Aufgabe 2: drei Kreise nach rechts
Versuche die rechts abgebildete Figur nachzuzeichnen. Zeichne hierzu wiederum unsere drei Kreise mit den Radien von 150, 100 und 50 Punkten. Jetzt sollen die Kreise aber rechts von unserer Schildkröte gezeichnet werden.
Aufgabe 3: zwei Halbkreise (Spirale)
Versuche die rechts abgebildete Figur nachzuzeichnen. Zeichne hierzu zwei Halbkreise, wobei der Radius des zweiten Teilkreises nur noch halb so gross ist, wie jener des ersten Halbkreises.
Bonusaufgabe für den Unterricht: Füge weitere Teilkreise an, wobei der Radius jedes mal etwas kleiner wird.
Aufgabe 4: Viereck mit abgerundeten Ecken
Versuche das rechts abgebildete Quadrat mit abgerundeten Ecken nachzuzeichnen.
Bonusaufgabe für den Unterricht: Versuche ein Dreieck mit abgerundeten Ecken zu zeichnen.
Aufgabe 5: Rechtskurve
Zeichne nun einen Viertelkreis nach rechts. Der Kreisdurchmesser beträgt 200 Punkte.
Aufgabe 6: S
Zeichne ein S durch aneinanderreihen zweier Halbkreise.
Bonusaufgabe für den Unterricht: Baue das S aus. Beginne mit einer kleinen Schlaufe, dann den geraden Boden, gefolgt von den zwei Halbkreisen und einer weiteren geraden Linie zum Abschluss.
Aufgabe 7: Viertelkreis - und zurück
Versuche einen Viertelkreis zu zeichnen. Anschliessend soll die Schildkröte wieder bis an den Anfang zurückfahren.
Bonusaufgabe für den Unterricht: Fahre mit der Turtle nur bis zur Hälfte zurück.
Aufgabe 8: Viereck einfach gemacht
Zeichne mit der circle() Anweisung ein Quadrat (regelmässiges 4-Eck)
Aufgabe 9: Viele Vielecke
Zeichne das rechts abgebildete Bild. Es entsteht, wenn du ein regelmässiges Dreieck, Viereck, Fünfeck, Sechseck, Siebeneck und ein regelmässiges Achteck übereinander zeichnest.
Bonusaufgaben für den Unterricht: Erhöhe die Zahl noch weiter. Je mehr Ecken, desto näher ist man bei der Kreisform.
Aufgabe 10: Haus mit Baum
Zeichne das rechts abgebildete Haus mit Baum.
Bonusaufgaben für den Unterricht: Ergänze ein Kamin, eine Türe, verschiedene Stufen im Gras etc. Runde dabei gewisse Ecken ab (Teilkreise).
Aufgabe 11: Yin Yang Teil 1
Zeichne das rechts abgebildete Zeichen nachzumalen. Die Schildkröte soll am Ende wieder in die Ausgangsposition zurückgebracht werden.
Bonusaufgaben für den Unterricht: Drehe das im Kreis enthaltene S um, so wie im «richtigen» Yin Yang Symbol.