Generering af mønstre på en computer kan ske på forskellige måder. Følgende 3 billeder er mønstre, selvom de er meget forskellige:
Polka dots | Sierpinski triangle (fraktal) | Heart beat |
---|---|---|
Billede kilde: maryjanebags.com | Billede kilde: zeuscat.com | billede kilde: bmj.com |
Alle 3 har gentagelse til fælles, men det er forskellig slags gentagelse:
- Polka dots gentager kopier af sig selv.
- Sierpinski triangle, gentager mindre fragmenterede udgaver af sig selv, inde i sig selv.
- Heart beat er gentagelser der ligner hinanden, men ikke nødvendigvis er fuldstændig ens.
Det følgende afsnit vil gennemgå tre måder at genere mønstre på med eksempler på programmeringssproget Python.
Opsætning af python
Windows:
- Python 2.7 (32bit) kan hentes her: http://python.org
- PIL kan hentes her: http://www.pythonware.com/products/pil/
Mac:
- Python 2.5 kan hentes her: http://pythonmac.org/packages/py25-fat/dmg/python-2.5-macosx.dmg
- PIL kan hentes her: http://pythonmac.org/packages/py25-fat/dmg/PIL-1.1.6-py2.5-macosx10.4-2007-05-18.dmg
- Den sidste linje skal have hele adressen til billedet:
- webbrowser.open("file://..(hele adressen skal indtastes)../simple_geometry.jpg")
Ubuntu:
- Brug software center til at installere python 2.6!
- PIL følger automatisk med python i Ubuntu :)
- Start Python IDLE (Python GUI)
- Lav et nyt vindue
- Vælg Save as og gem som minPython.py. Det er meget vigtigt med .py ellers vil der ikke være farver i jeres programkode:
Filnavn: minPython | Filnavn: minPython.py |
---|---|
- Skriv program koden, som på billedet, altså print "Hello World"
- Klik på F5 for at køre programmet.
Tegning fra iterativ algoritme
- Iterativ betyder gentagelse, dvs. 5 iterationer betyder 5 gentagelser.
- Algoritme betyder en opskrift til at udføre en specifik opgave.
- Iterativ algoritme er en opskrift til at udføre en specifik opgave i flere lag. Dvs. at en iterativ algoritme med 3 iterationer har
- en grund algoritme til at udføre en specifik opgave.
- en 1.niveau algoritme til at gentage grund algoritmen og forandre den for hver gentagelse.
- en 2.niveau algoritme til at gentage 1.niveau algoritmen og forandre den for hver gentagelse.
- en 3.niveau algoritme til at gentage 2.niveau algoritmen og forandre den for hver gentagelse.
Tegn prikker
Skriv et program der kan tegne følgende billede
Hint: ellipse((x1,y1,x2,y2),fill=gråtone) ellipse((200,200,210,210),fill=128)
Ekstra: Lav et andet iterative mønster fra: http://mathworld.wolfram.com/Tessellation.html
Tegning fra rekursiv algoritme
- rekursiv betyder at det referere(henviser) til sig selv.
- rekursiv algoritme referere til sig selv og gentager dermed samme algoritme indtil opgaven er løst.
- Hvis mængden af data, der skal behandles, bliver mindre for hver rekursion, vil den rekursive algoritme selv standse, når den er løbet tør for data.
- Hvis mængden af data, der skal behandles, er den samme eller større, vil den rekursive algoritme være køre uendeligt. Dermed er det vigtigt at indsætte en grænse for mængden af data der skal findes. Eksempel: Sierpinskis trekant (se øverst på siden). Denne trekant gentager sig 3 gange inde i sig selv og dermed stiger mængden af data, der skal behandles og dermed skal der indsættes en grænse for at algoritmen kan ende.
Trekanter i trekanter i trekanter i…
Skriv et program der kan tegne trekanter i trekanter.
Hint: For at beregne mellempunkter - se følgende billede:
Pixel for pixel rendering af matematisk formel
Pixel for pixel rendering betyder at computeren udregner noget for hver pixel i et vindue. Har vinduet opløsningen 300 x 200, skal der udføres 60000 beregninger.
Matematisk formel menes der f.eks. ligning for en ret linie. Sinuskurver f.eks. gentager sig selv og er dermed anvendelige til mønstre.
Matematiske mønstre
Find selv frem til en matematisk formel, som kan give flotte mønstre, animer den (mindst 20 billeder) og upload dit program og billeder til dit studieweb.
Hint: Du kan automatisk ændre navnet på billedfilen: im.save("simple_geometry"+str(billede_nr)+".jpg"), hvor str(billede_nr) er en variabel, i dette tilfælde et helt tal.
Cellular automaton
Cellular automaton betyder automatiserede enkeltdele, dvs. at i stedet for at have et et stort system, der generer detaljerne, så automatiseres de enkelte detaljer, så de generer det store system. I følgende video vises et eksempel på et system der hedder: <i>"The game of life"</i>:
Byggeklodser
- Byg en ny Celluar der har følgende regler:
- Sæt hele billedets baggrundsfarve til hvid
- Sæt number_of_dots til 5 og som skal være sorte i stedet for hvide!!!
- Det nye mønster burde ligne et mønster fra en tidligere opgave, hvilket?
Hvad har jeg lært?
At 3 typer mønstre (Polka dots (kopiering), Sierpinski triangle (fraktal) og Heart beat (unikke gentagelser, der ligner hinanden) kan genereres på 4 forskellige måder:
- ved iterative algoritmer
- ved rekursive algoritmer
- ved matematiske formler (som derefter kan renderes)
- ved cellular automaton
Dvs. at næste gang du ser et mønster, vil du være i stand til at redegøre for mønster typen, samt give et bud på, hvordan dette mønster kunne laves på en computer.