Generering av L-system fraktaler med Processing.js

Relevanta dokument
Procedurell renderingsmotor i Javascript och HTML5

Rune Tennesmed. Oskar Norling 1DV430. Individuellt Mjukvaruutvecklingsprojekt 1DV430 Webbprogrammerare H12 Oskar Norling

SLUTRAPPORT RUNE TENNESMED WEBBSHOP

SLUTRAPPORT WEBBPROJEKT 1

Tepz klon. - Projektrapport. Linnéuniversitetet, Individuellt mjukvaruutvecklingsprojekt Janina Bergström, WP12 Distans

Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson

Erik Holmström Projektrapport- KalmarKendo Erik Holmström UD12 Individuellt mjukvaruutvecklingsprojekt

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

PROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap

Slutrapport YUNSIT.se Portfolio/blogg

Laboration 1 XML, XPath, XSLT och JSON

Nyheter i. Solen ORBIT 6.7

Magnus Nielsen, IDA, Linköpings universitet

Procedurell modellering i visualiseringsprocessen. Sandra Stendahl

Tommy Färnqvist, IDA, Linköpings universitet

Procedurell stad. Projekt i kursen TNM022 Procedurella metoder för bilder. Tobias Heldring, tobhe

Robotarm och algebra

Erik Lundgren GarageLoppisen.se. Projekt i kursen Individuellt Mjukvaruutvecklingsprojekt, 1dv430

Inlämningsuppgift 2. DA156A - Introduktion till webbutveckling Teknik och samhälle, Malmö högskola Oktober 2012

Twisted Scissors. Ett projekt i kursen tnm /2007. Björn Gustafsson bjogu419@student.liu.se. Mats Wedell matwe812@student.liu.

Matematikdidaktik för bättre matematikkunskaper Jonas Bergman Ärlebäck

Beskrivning av Gesällprov. Fia Med Knuff. Mikael Rydmark.

ALGORITMER, OPTIMERING OCH LABYRINTER

Från Smart TV till Smartare upplevelse Av: Kim Huber och Connie Huanca

HAND TRACKING MED DJUPKAMERA

Slutrapport för Internetfonden

Slutrapport Get it going contracts

Föreläsning 4 Datastrukturer (DAT037)

GeneTrader. Ett helautomatiserat tradingsystem

Kom igång med Web Editor

XtraMatLagning. August Ek och Oscar Johnson. TNM065 Dokumentstrukturer

Rapport Epaper. 1DV411, Webbprojekt I. Författare och termin: Joar Leth Frida Källberg Johan Sundén Mikael Östman VT13

sida 1 Grupp 6 co-browsing 1DV411 - Webbprojekt I Markus Axelsson Stavros Gemitzoglou Axel Hernborg Joakim Jonsson Rickard Karlsson Peter Magnusson

MINI STARTER. Lärarhandledning Elevuppdrag Utvärdering

Strömsholmen. Mårten Svensson, Peter Zhu, Andreas Wetteborn,

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

TDDD78 projekt: Tower Defence

Konvexa höljet Laboration 6 GruDat, DD1344

Föreläsning 4 Datastrukturer (DAT037)

Network drafting - en kort introduktion

Aktivitetsbank. Matematikundervisning med digitala verktyg II, åk 1-3. Maria Johansson, Ulrica Dahlberg

BEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Tynker gratisapp på AppStore

Extramaterial till Matematik X

VILTH ÄR EN DIGITAL HELHETSLÖSNING FÖR JAKT OCH VILTVÅRD

Uppgift 1 ( Betyg 3 uppgift )

Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM

Elevuppgift: Bågvinkelns storlek i en halvcirkel

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215/TIG091

Produktbeskrivning. Wired

Hi-Fi Prototyping + laborationsgenomgång & verktyg

Välkomna! Datalogiskt tänkande och programmering 15 augusti WiFI Nätverk: Conventumwifi Lösenord: conventum2018

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

1DV411 Webbprojekt I Slutrapport

Slutrapport för projektet Programmeringsundervisning i skolor med webbaserad konstprogrammering Annika Silvervarg, Linköping universitet

Kursplan. Grafisk design video webb 2017/18

Produktbeskrivning. Wireless

Produktbeskrivning. Wireless

Symboler och abstrakta system

HexaFlip. Kravspecifikation

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

PREMIUM COMAI WEBBKALENDER

RoomDesigner Manual... 1

Extramaterial till Matematik Y

e t t p r o g r a m f ö r e f f e k t i va r e h a n t e r i n g av kyrk o g å r d skar tor

Träd. Rot. Förgrening. Löv

Procedurell Terräng med LOD i OpenGL 4

Logistiksystem Päron AB Bakgrund Problembakgrund Krav på lösning Lösningen

Tove Andersson IT-Pedagoglinjen 09/10. hängande mot golvet, stå så några sekunder för att sträcka ut hela ryggen. Rulla sakta upp kota för kota.

Installationsmanual för Toroidal 90 Multi-beam satellitantenn

FÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION

Polygoner. Trianglar på tre sätt

Byggnet 3D-viewer LATHUND

Optimering av en Yatzytur genom utvärdering av alla inom turen nåbara tillstånd

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Förpackningen innehåler

Slutrapport. Super Mario klon. Tomas Wallin tw222bv WP

Ögonstyrning tillsammans med The Grid 2

LectureMopp - Projekt i Nätverksprogrammering

ENKEL Programmering 3

En Single-Page Application för små barn, barnens föräldrar samt en och annan mormor

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

Röna fingrar e gött o ha:) SLUTRAPPORT BUDGETSYSTEM LNU

Bilaga 5: Nytt språk svenska. Wikispeech. en användargenererad talsyntes på Wikipedia

Integrering av formgivningsprocessen i en produktutvecklingsprocess

Innehåll. 1. Lektionsupplägg av omvändningen av randvinkelsatsen. 2. Instruktion till eleverna.

Förslag till ny nationell lydnadsklass Startklass. Moment koefficienter. Totalt 20. 1:a pris 160 poäng - Uppflyttad 2:a pris 120 Godkänt

ekorren e-tjänst Teknisk målbild

Lösning till tentamen i Medicinska Bilder, TSBB31, DEL 1: Grundläggande 2D signalbehandling

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Tele2 Växel. mobil. Så här enkelt är det! Vill du också ha en lösning som passar ditt företag? Gå in på tele2.se/foretag eller ring

Automatateori (2) Idag: Sammanhangsfria språk. Dessa kan uttryckas med Grammatik PDA

Programmeringsuppgift Game of Life

After Effects Lathund

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

Du har ett ENKElT bildspråk och man förstår ditt arbetes budskap. Du har använt teknikerna, verktygen och materialen på ett olika och BrA sätt

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Transkript:

Generering av L-system fraktaler med Processing.js TNM084 Procedurella Metoder för bilder Carl Claesson, carcl268@student.liu.se Hemsida: http://carlclaesson.se/tnm084

Sammanfattning Denna rapport beskriver hur ett L-system(Lindenmayersystem) för att generera växtliknande fraktaler implementeras i JavaScript och html5 med hjälp av javascriptsbiblioteket Processing.js. Bakgrund Det finns många olika metoder för att skapa visualiseringar och några av de mest växande just nu är de webbaserade metoderna. Det här projektet är därför impementerat med hjälp av två av de senaste tillskottet inom webbutveckling, nämnligen html5 och canvas. Anledningen till att projektet är implementerat med just dessa metoder är för att öka tillgängligheten. Mål Målet med implementationen är att kunna generera växtliknande fraktaler utifrån en viss regel. Regeln som avgör hur fraktalen ska utvecklas ska vara utbytbar genom ett gränssnitt som är någorlunda lätt att förstå. Även andra faktorer ska kunna justeras så som till exempel antal iterationer, storlek och mängden brus.

Genomförande En fraktal är ett form av rekursivt mönster som efterliknar sig själv i mindre och mindre skala ju fler gånger som mönstret upprepas. L-systemet är ett system skapat för att kunna skapa växtliknande fraktaler genom att använda sig av en form av ersättningsmetod. För att skapa en fraktal med L-systemet utgår man från en regel, till exempel F[-L][+L]. Regeln används sedan genom att hantera varje symbol i den på olika sätt endligt: F Betyder rita ett streck framåt [ och ] Skapa en ny förgrening som sparar position och vinkel + och - Betyder sväng höger eller vänster enligt en given vinkel L Betyder rita ett löv, alternativt ersätt med regeln Antalet iterationer bestämmer sedan hur den slutgiltiga strukturen för fraktalen kommer att se ut. För varje iteration man genomför ersätter man alltså L med den ursprungliga regeln. Om man väljer antalet iterationer till ett, får man tillbaka regeln igen. Väljer man däremot antalet iterationer till fyra får man en utveckling enligt nedan: Iteration 1: F[-L][+L] Iteration 2: F[-F[-L][+L]][+F[-L][+L]] Iteration 3: F[-F[-F[-L][+L] ][+F[-L][+L] ]][+F[-F[-L][+L] ][+F[-L][+L] ]] Iteration 4: F[-F[-F[-F[-L][+L] ][+F[-L][+L] ] ][+F[-F[-L][+L] ][+F[-L][+L] ] ]][+F[-F[- F[-L][+L] ][+F[-L][+L] ] ][+F[-F[-L][+L] ][+F[-L][+L] ] ]] Efter att fraktalens struktur sedan är genererad går man igenom den och utför givet kommando för varje symbol. För att kunna variera utseendet på fraktalerna som genereras appliceras även brus på postitioner och vinklar. Detta för att skapa ett mer tilltalande resultat.

Resultat Implementationen har testats med diverse olika inställningar och jag är nöjd med resultatet. Med lite pill kan man få till allt från buskar till träd eller gräs. Nedan följer ett antal skärmdumpar med olika inställningar. Regel: F[-L][F+L], med ökande antal iterationer Regel: F[-L][F+L], med och utan brus Regel: [-F[-L][+L]][+F[L]], med ökande antal iterationer

Regel: F[+L][-L], med ökande antal iterationer Diskussion Det största problemet som har uppståt under projektet har helt klart vart beräkningoch renderingstider. Att generera fraktaler med allt för stort antal iterationer i javascript är inte optimalt. Eftersom fraktalens struktur växer väldigt fort beroende på vilken regel du väljer så kan webbläsaren hänga sig vid relativt lågt antal iterationer. Till en början sparades varje trädfraktal för att ritas ut i varje renderingsloop. Detta blev snabb ohållbart då möjligheten att interagera med applikationen försvann när renderingstiderna sköt i höjden. Så om projektet skulle impemeteras med hjälp av några andra verktyg som klarar av att arbeta snabbare så skulle det vara roligt att bygga ut det så att varje träd sparas. För att sedan kunna modifiera strukturen eller alternativt animera träden.