HSG |
|
In der Regel wird man auf Papier eine Ablaufskizze der Figur anfertigen. An dieser Skizze kann man dann das Programm ablesen.
# -*- coding: iso-8859-1 -*- # mk, 6.9.08 # aktualisiert von Birk Dietrich 18.02.2021 from turtle import * from math import sqrt def hdn(a): lt(90) fd(a) rt(90) fd(a) lt(135) fd(a/sqrt(2)) lt(90) fd(a/sqrt(2)) lt(90) fd(sqrt(2)*a) lt(135) fd(a) lt(135) fd(sqrt(2)*a) lt(135) fd(a)
circle(radius, extent=None, steps=None) Zeichne einen Kreis(bogen) mit gegebenem Radius Der Kreismittelpunkt ist radius Einheiten links von der Turtle; extent - ein Winkel - gibt an, welcher Teil des Kreises gezeichnet wird. Wenn extent fehlt, wird ein voller Kreis gezeichnet. - Wenn extent kein voller Kreis ist, dann ist ein Endpunkt des Bogens die aktuelle Turtle-Position. Wenn der Radius positiv ist, wird der Bogen im Gegenuhrzeigersinn gezeichnet. Für negative Radien wird der wird der Bogen im Uhrzeigersinn gezeichnet. Nachdem Zeichnen des Bogens ist die Orientierung der Turtle um extent geändert. - Da der Kreis durch ein eingeschriebenes reguläres Polygon angenähert wird, bestimmt steps die Anzahl der Schritte, die dafür verwendet wird. Wenn steps nicht angegeben wird, wird automatisch ein (hoffentlich passender) Wert ermittelt. --- Arguments: Zahl, Optionale Argumente: Zahl, integer Aufruf: circle(<zahl>) # voller Kreis --oder: circle(<zahl>, <zahl>) # Bogen --oder: circle(<zahl>, <zahl>, <integer>) Beispiel (für ein Turtle-Objekt namens turtle): >>> turtle.circle(50) >>> turtle.circle(120, 180) # semicircle
Kleine Versuche mit dem Befehl 'circle' in der Shell dienen dem Verständnis!
# -*- coding: iso-8859-1 -*- # mk, 6.9.08 from turtle import * def yinyang(a): # a = Durchmesser der Figur # rechte Teilfigur, schwarz gefüllt fillcolor(0,0,0) fill(True) circle(-a/2.0,180) circle(-a/4.0,180) circle(a/4.0,180) fill(False) # Begrenzung linke Teilfigur circle(a/2.0,180) # Radius der kleinen Kreise r = a*0.08 # Weg zu weißem Kreis pu() lt(90) fd(a/4.0+r) lt(90) pd() # weißer Kreis fillcolor(1,1,1) fill(True) circle(r,360) fill(False) # Weg zu schwarzem Kreis pu() rt(90) fd(a/2.0) lt(90) pd() # schwarzer Kreis fillcolor(0,0,0) fill(True) circle(r) fill(False) # Weg zum Anfang pu() rt(90) fd(a/4.0-r) rt(90) pd()
# -*- coding: iso-8859-1 -*- # Autor: mk Datum: 7.8.08 # Vorbereitungen from turtle import * def n_eck(n,a): w = 360.0/n for i in range(n): fd(a) lt(w) def nm_eck(n,a): w = 360.0/n for i in range(n): n_eck(n,a) lt(w) # Hauptprogramm reset() tracer(False) bgcolor(0,0,0) pensize(2) pencolor(1,0,0) nm_eck(36,20) tracer(True) mainloop()