Wie kann ich einen Kreissektor in Python (Turtle) erstellen?
Ich versuche gerade das Radioaktivzeichen in Turtle zu zeichnen... Alles bis auf die Kreissektoren habe ich bereits.
Aufgabenstellung:
Schreibe ein Programm radioaktiv.py, das das Radioaktivitätssymbol zeichnet:(Nur am Computer)
- großes gelbes Quadrat mit schwarzen Rand im Quadrat 3 schwarze Kreissektoren
- sodass zwischen diesen jeweils Platz für einen unsichtbaren Kreissektor bleibt.
- in der Mitte einen kleinen schwarzen Kreis.
Danke im Vorraus.
1 Antwort
Hier das sollte funktionieren. Ich habe zwar nicht so viel ahnung von turtle sodass es durchaus sein kann, dass es eine einfachere Methode gibt aber mit hilfe von mathe ging es es eben auch.
Man zeichnet zuerst einen Halbkreis und geht dann zum anderen über und rechnet quasi dann einfach nur rückwärts.
import turtle import math as m
def paintSection(degree, radiusOuter, radiusInner, offset): phi = 0.0 alpha = 1 # um den sektor dann zu schließen müssen wir die erste berechnete # koordinate speichern firstCord = None # der offset legt den start winkel fests sectionDegree = 0 + offset # bevor wir starten müssen wir turtle erstmal das malen verbieten turtle.up()
while sectionDegree <= degree + offset: # wir rechnen sectionDegree in radiants um phi = sectionDegree * (m.pi/180.0) # berechnung der einzelnen koordinaten x = radiusOuter * m.cos(phi) y = radiusOuter * m.sin(phi) # move turtle zur richtigen position turtle.setpos(x, y) if not turtle.isdown(): firstCord = (x, y) turtle.begin_fill() turtle.down()
# erhöhe den winkel sectionDegree += alpha
while sectionDegree >= offset: # wir rechnen sectionDegree in radiants um phi = sectionDegree * (m.pi/180.0) # berechnung der einzelnen koordinaten x = radiusInner * m.cos(phi) y = radiusInner * m.sin(phi) # move turtle zur richtigen position turtle.setpos(x, y) # verringere den winkel sectionDegree -= alpha
# nun können wir den sektor schließen turtle.setpos(*firstCord) # turtle.end_fill()
offset = 0 # der offset muss nicht unbedingt sein section = 360/6 for n in range(3): paintSection(section, 50, 15, offset) offset+=section*2 # da wir eine section überspringen wollen, nehmen wir sie *2
Kann man vllt noch kürzen, sollte aber schon mal ein Anfang sein.
Möchtest du das Symbol nicht in der Mitte haben, musst du noch den Mittelpunkt zu den jeweiligen Koordinaten dazu rechnen.
Regards,
Life
