Læreplankoblet

Flower Power

Problem

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

Lag eit mønsterdesign til eit stoff, basert på eit blomstermotiv. Motivet bør innehalde rotasjonssymmetriHvis ein figur er rotasjonssymmetrisk, kan vi snu (rotere) den og få same figur på nytt, uten å ha rotert den 360 grader. og det bør gjentakast over heile designet på ein spennande måte som også viser symmetri.

Mønster av fargerike blomster.

Dette mønsteret er laga i Python og fargelagt i eit biletbehandlingsprogram.

Begynn med å skissere eit design. Du kan kanskje bruke ein ekte blomster for inspirasjon, eller du kan ta utgangspunkt i noko meir abstrakt, så sant det kan minne om ein blomster.

Når du er fornøgd med designet ditt, skal du bruke Scratch, Logo, Python Turtle eller eit anna programmeringsspråk som gjer det mogleg å teikne grafikk for å lage ei utskrift av designet.

Noko å tenkje over:

  • Mange blomstrar har eit antal kronblad som er eit fibonaccital.
  • Kva må du rekne ut for å finne vinkelen mellom kronblada, dersom blomsteren skal vise rotasjonssymmetri?

Starthjelp

Nedanfor ser du Python-koden som vart skriven for å lage mønsteret på biletet i oppgåva. Du kan kopiere og modifisere han, eller hente inspirasjon derifrå. Legg merke til korleis problemet er delt opp i fleire delar (her funksjonar) som løyser mindre delproblem.

Koden set opp eit nokså stort grafikkvindauge, så om du arbeider på ein mindre skjerm, kan det hende du må vente litt før du ser noko aktivitet. Etter kvart kan du kanskje modifisere koden slik at han passar betre til skjermen din.

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")

Kva gjer kvar funksjon og kommando? Lengda på 4 piksel framover vart vald for å lage ein fin storleik på kronblada. Kva skjer om du endrar lengda? På same måten vart det eit fint resultat med ein rotasjon på 5 gradar. Kva skjer om du endrar rotasjonen? Kva vil skje om du endrar andre vinklar og antalet repetisjonar?

Generalisere programmet

  • Du kan generalisere storleiken på kronblada og dermed storleiken på det ferdige designet ved å bruke ein variabel i staden for 4.
  • Kan du også bruke variablar, både avhengige og uavhengige, for andre verdiar?

Ressursen er utviklet av NRICH

8,9,10