Læreplankoblet

Flower Power

Problem

Tenk deg at du er tekstildesigner og får dette oppdraget:

Lag et mønsterdesign til et stoff, basert på et blomstermotiv. Motivet bør inneholde rotasjonssymmetriHvis en figur er rotasjonssymmetrisk, kan vi snu (rotere) den og få samme figur på nytt, uten å ha rotert den 360 grader. og det bør gjentas over hele designet på en spennende måte som også viser symmetri.

Mønster av fargerike blomster.

Dette mønsteret er laget i Python og fargelagt i et bildebehandlingsprogram.

Begynn med å skissere et design. Du kan kanskje bruke en ekte blomst for inspirasjon, eller ta utgangspunkt i noe mer abstrakt, så sant det kan minne om en blomst.

Når du er fornøyd med designet ditt, skal du bruke Scratch, Logo, Python Turtle eller et annet programmeringsspråk som gjør det mulig å tegne grafikk for å lage en utskrift av designet.

Noe å tenke over:

  • Mange blomster har et antall kronblad som er et fibonaccitall.
  • Hvilken beregning må du gjøre for å finne vinkelen mellom kronblad, dersom blomsten skal vise rotasjonssymmetri?

Starthjelp

Nedenfor ser du Python-koden som ble skrevet for å lage mønsteret på bildet i oppgaven. Du kan kopiere og modifisere den, eller hente inspirasjon derifra. Legg merke til hvordan problemet er delt opp i flere deler (her funksjoner) som løser mindre delproblemer.

Koden setter opp et ganske stort grafikkvindu, så om du jobber på en mindre skjerm, kan det hende du må vente litt før du ser noe aktivitet. Etter hvert kan du kanskje modifisere koden slik at den passer bedre til skjermen din. De to nederste linjene i koden lager en vektorfil (SVG - Scalable Vector Graphics) av det som tegnes i garfikkvinduet. Denne kan du skalere så stor eller liten du vil, og skrive ut eller trykke på f.eks. tekstiler. Om du ikke vil lagre en slik fil, sletter du de to siste linjene i koden.

Pythonkode

import turtle

sc = turtle.Screen()
sc.setup(2000, 1500, startx = 2000)

t=turtle.Turtle()
t.left(90)
t.speed(0)
def kronblad():
    t.left(40)
    for i in range(16):
        t.fd(4)
        t.right(5)
    t.right(100)
    for j in range(16):
        t.fd(4)
        t.right(5)
    t.right(140)
    
def blomster():
    for i in range(5):
        kronblad()
        t.right(72)
        
def stripe():
    for i in range(10):
        blomster()
        t.penup()
        t.fd(128)
        t.pendown()

def tekstil():
    t.penup()
    t.left(90)
    t.fd(900)
    t.right(90)
    t.back(600)
    t.pendown()
    for i in range(10):
        if i%2==0:
            a=1216
        else:
            a=1344
        stripe()
        t.penup()
        t.right(90)
        t.fd(120)
        t.left(90)
        t.back(a)
        t.pendown()
        
tekstil()

ts = turtle.getscreen()
ts.getcanvas().postscript(file="FlowerPower2.svg")

Hva gjør hver funksjon og kommando? Lengden på 4 piksel framover ble valgt for å lage en fin størrelse på kronbladene. Hva skjer om du endrer den? På samme måte ble det et fint resultat med en rotasjon på 5 grader. Hva skjer om du endrer den? Hva vil skje om du endrer andre vinkler og antall repetisjoner?

Generalisere programmet

  • Du kan generalisere størrelsen på kronbladene og dermed størrelsen på det ferdige designet ved å bruke en variabel i stedet for 4.
  • Kan du også bruke variabler, både avhengige og uavhengige, for andre verdier?

Ressursen er utviklet av NRICH

8,9,10