At My Fingertips

Windrad

Analyse

Schritte

Wir erstellen zuerst ein stilles Windrad, dann erst animieren wir es:

  1. einen Zacken / eine Windradspeiche erstellen,
  2. Zacken und Nadel zu einem Kopf vereinen und
  3. alles vereinen
    1. als windstilles Windrad oder
    2. als sich drehendes Windrad

Stilles Windrad

Um ein stilles Windrad zu erstellen, brauchen wir nur drei Funktionen:

No.FunktionGrafik
1def zacken(radius: float, farbton: int) -> Graphic:zacken2
2def kopf(radius: float) -> Graphic:kopf
3def windrad_still(radius: float) -> Graphic:windrad_still

Zacken

grün

türkis

violett

Erstellen Sie eine Funktion, die Zacken verschiedener Grössen und Farbtöne erstellen kann:

  1. der Parameter radius stell die Länge der Hypothenuse des grossen Dreiecks dar und
  2. radius / 2 ist die Seite des Quadrats im Hintergrund.

Für die Farben verwenden wir die Funktion hsv_color mit folgenden Argumenten:

  1. Farbtöne/ hue: 0-360, je nach Funktionsaufruf
  2. Sättigung/ saturation: 0.5 oder 1 für die hellen (Quadrat im Hintergrund) und dunklen Seiten (Dreiecke)
  3. Helligkeitswert/ value: 1

Die Pin-Position soll unten links sein.

Loading...
Musterlösung
def zacken(radius: float, farbton: int) -> Graphic:
    quadrat = rectangle(radius / 2, radius / 2, hsv_color(farbton, 0.5, 1))
    dr_klein = triangle(radius / 2, radius / 2, 90, hsv_color(farbton, 1, 1))
    dreieck = beside(rotate(90, dr_klein), dr_klein)
    return compose(pin(bottom_left, dreieck), pin(bottom_left, quadrat))

Kopf

Kombinieren Sie vier Zacken zu einem Windradkopf. Fügen Sie einen Knopf in der Mitte hinzu.

kopf

Loading...
Musterlösung
def kopf(radius: float) -> Graphic:
    start_farbton = START_FARBTON
    akk = circular_sector(radius * 0.07, 360, BRAUN)
    for farbton in range(start_farbton, 360, 90):
        akk = compose(
            rotate(90, akk), 
            zacken(radius, farbton)
        )
    
    return akk

Stilles Windrad

Kombinieren Sie nun den Kopf, leicht gedreht, mit einem Stab. Fügen Sie nach eigenem Belieben Hintergrund hinzu.

windrad_still

Loading...
Musterlösung
def windrad_still(radius: float) -> Graphic:
    stab_hoehe = radius * 2.5
    kopf_gedreht = rotate(15, kopf(radius)) # leicht gedreht
    stab = pin(top_center, rectangle(stab_hoehe * 0.03, stab_hoehe, BRAUN))
    return compose(kopf_gedreht, stab)

Toolbox

Nehmen Sie Ihre Funktion in Ihre Toolbox auf.

Windrad

Anstatt dass wir ein statisches Windrad erstellen, können wir es auch animieren. Ergänzen Sie dazu noch folgende Funktion:

Loading...
Musterlösung
kopf_rotiert = rotate(winkel, kopf(radius))

Toolbox

Nehmen Sie auch diese Funktion in Ihre Toolbox auf.

Was Sie geübt und gelernt haben

Lösungsstrategien

  • Sie können Figuren analysieren und daraus Funktionen ableiten.

Python

  • Sie können Funktionen erstellen und verwenden, um übersichtlichen Code zu verfassen.
  • Sie können for-Schleifen verwenden.

PyTamaro

  • Sie können Figuren mit pin und compose erstellen.
  • Sie können mit hsv_color Farbe erstellen.

This activity has been created by Gall and is licensed under CC BY-SA 4.0.

It is derived from this activity and this activity.

Windrad

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version c3a8286 (Mon, 14 Oct 2024 13:30:28 GMT)