Borttagning av skymda ytor Painter s Algorithm och Z-buffering. MICHAEL HJORTHOLT och ANDREAS PAULSSON

Storlek: px
Starta visningen från sidan:

Download "Borttagning av skymda ytor Painter s Algorithm och Z-buffering. MICHAEL HJORTHOLT och ANDREAS PAULSSON"

Transkript

1 Borttagning av skymda ytor Painter s Algorithm och Z-buffering MICHAEL HJORTHOLT och ANDREAS PAULSSON Examensarbete Stockholm, Sverige 2010

2 Borttagning av skymda ytor Painter s Algorithm och Z-buffering MICHAEL HJORTHOLT och ANDREAS PAULSSON Examensarbete i datalogi om 15 högskolepoäng vid Programmet för datateknik Kungliga Tekniska Högskolan år 2010 Handledare på CSC var Lars Kjelldahl Examinator var Lars Kjelldahl URL: hjortholt_michael_och_paulsson_andreas_k10030.pdf Kungliga tekniska högskolan Skolan för datavetenskap och kommunikation KTH CSC Stockholm URL:

3 Borttagning av skymda ytor Painter s Algorithm och Z-buffering Sammanfattning Rapporten behandlar två algoritmer som båda löser datorgrafikproblemet med skymda ytor. Först ges en kort introduktion till problemet samt till datorgrafik i allmänhet. Därefter presenteras de två algoritmerna, Painter s Algorithm och Z-buffering, och deras för- och nackdelar. Efter det jämförs algoritmerna och hur väl de fungerar i olika scenarion. Baserat på slutsatserna från jämförelsen, diskuteras hur en kombination av algoritmerna skulle kunna skapas, samt vilka för- och nackdelar den kombinerade algoritmen skulle ha. Slutsatser dras att en kombinerad algoritm inte behöver rita om pixlar flera gånger, däremot kommer många andra av de redan existerande nackdelarna kvarstå. Removal of hidden surfaces Painter s Algorithm and Z-buffering Abstract The report discusses two algorithms which both solves the computer graphics-problem; removal of hidden surfaces. You are first given a short introduction to the problem, as well as a short introduction to computer graphics in general. After that the two algorithms, Painter s Algorithm and Z-buffering is presented together with its advantages and disadvantages. Then a comparison is made between the two. Based on the conclusions of that comparison a possible combination of the two algorithms is discussed, along with the advantages and disadvantages that such a combination would have. The problem with the overdrawing of pixels desists, but the majority of the disadvantages still persist. ii

4 Förord Arbetsfördelning har varit så att avsnitten har delats upp mellan Michael Hjortholt och Andreas Pålsson. Därefter har båda läst igenom rapport och kommenterat och gjort ändringar. Michael Hjortholt har skrivit följande avsnitt: Sammanfattning, Abstract, Introduktion till datorgrafik och Painter s Algorithm Andreas Pålsson har skrivit följande avsnitt: Object Space and Image Space, Z-buffering, Jämförelse av algoritmerna och Algoritmerna kombinerade. Inledning är skriven av båda. iii

5 Innehållsförteckning Inledning... 1 Bakgrund... 1 Syfte... 1 Problemformulering... 1 Introduktion till datorgrafik... 2 Algoritmer... 3 Object Space and Image Space... 3 Painter s Algorithm... 4 Användningsområde... 5 Fördelar... 5 Nackdelar... 5 Z-buffering... 7 Användningsområden... 7 Fördelar... 8 Online... 8 Nackdelar... 8 Jämförelse av algoritmerna Enkel scen med låg upplösning Enkel scen med hög upplösning Komplex scen med låg upplösning Komplex scen med hög upplösning Slutsats Algoritmerna kombinerade Fördelar Nackdelar Litteraturlista iv

6

7 Inledning Inledning Bakgrund Dagens datorer blir allt snabbare och en av de grenar inom datalogin som pressar utvecklingen framåt är datorgrafiken och då speciellt 3D-grafiken. Datorgrafik har sitt ursprung i början av 1960-talet då William Fetter var den första att mynta ordet datorgrafik för att beskriva sitt arbete vid Boeing [4]. De som gjorde de största framstegen inom datorgrafik under 1960-talet var University of Utah som rekryterade många av pionjärerna inom datorgrafik. Det var även University of Utah som gjorde det första stora framsteget inom 3D-grafik genom att utveckla algoritmer för borttagning av skymda ytor [5]. Borttagning av skymda ytor är den mest elementära och viktigaste delen i 3D-grafik som man måste kunna behärska för att kunna skapa en korrekt bild. Skillnaden mellan 2D-grafik och 3D-grafik är djupet. Djupet medför att vissa objekt kan stå framför andra och därmed skymma delar i en bild. Om det inte skulle gå att avgöra vilka objekt som skall synas i en bild, skulle ordningen som objekten ritas ut i, helt bestämma bildens utseende. Det betyder att om man väntar med bakgrunden till sist och först ritar ut allt annat så skulle bara bakgrunden synas eftersom den kommer att rita över allt annat som redan har ritats. Det som algoritmer för borttagning av skymda ytor gör är att räkna ut vad det är som skall synas i den slutgiltiga bilden och vad som kommer att vara skymt av framförvarande objekt. Utan dessa algoritmer för att bestämma skymda ytor skulle den 3D-grafik som vi är vana vid i film och datorer idag inte finnas. Syfte Syftet med denna uppsats är att jämföra två grundläggande algoritmer för borttagning av skymda ytor och visa deras för och nackdelar, för att sedan avgöra om det går att kombinera de två algoritmerna till en ny algoritm. En algoritm som då förhoppningsvis kan dra fler fördelar än nackdelar från de båda andra algoritmerna Problemformulering Utforska två kända algoritmer för borttagning av skymda ytor, Painter s Algorithm och Z-buffering, för att sedan se vilka fördelar respektive nackdelar en kombination av dessa algoritmer för med sig. Hur fungerar algoritmerna var för sig? Hur används de? Är det möjligt att kombinera algoritmerna och i vilket område kan den kombinerade algoritmen vara till nytta? 1

8 Inledning Introduktion till datorgrafik Datorgrafik är ett extremt vagt uttryck eftersom det egentligen täcker in allt grafiskt som visas med hjälp av en dator. I den här rapporten som handlar om skymda ytor kommer 3D-grafik att tas upp. 3Dgrafik är hur man med hjälp av datorn skapar och ritar upp tredimensionella miljöer. Dessa används inom en rad områden, allt från spel och film till modelleringar inom industrin. Bilder i en dator kan lagras och ritas upp med hjälp av ett rutnät med små, små rutor med olika färger. Varje ruta i bilden kallas för en pixel. Ett enkelt sätt att lagra en bild är att spara en siffra för varje pixel, där siffran representerar den färg som pixeln har. Vanligtvis sparas färgerna enligt RGB-skalan, där tre siffror, mellan 0 och 255, representerar intensiteten för vardera röd, grön och blå. I en svartvit bild räcker det att spara en siffra för varje pixel, den siffran svarar då för intensiteten i en gråskala, där 0 är helt svart och 255 är helt vitt. En 3D-miljö skapas i en dator som matematiska beräkningar vilka beskriver de olika objekt som finns i miljön, samt deras egenskaper. För att representera objekt i 3D är den vanligaste metoden att skapa polygoner. Polygonernas hörn lagras då som deras koordinater i rummet. Enklast är att använda trianglar. Dessa trianglar sätter man ihop till avancerade figurer och former. Enklare former som t.ex. kuber och klot kan man lagra och rita ut efter deras matematiska formler. Detta betyder att för en sfär behövs endast koordinaterna för mittpunkten samt radien på sfären lagras för att den ska kunna ritas ut. För att kunna visa dessa matematiska modeller på t.ex. en bildskärm, där ytan är tvådimensionell måste de matematiska modellerna projiceras. Detta kallas för rendering. Man kan beskriva det som att man drar linjer från objektets hörnpunkter i rummet, till kameran (den punkt objektet betraktas från). Dessa linjer passerar genom ett plan, detta plan är bildskärmen. I de punkter där linjerna skär planet ritas hörnpunkter ut och då får man en projicering. Fyller man alla punkter mellan de utritade punkterna får objektet rätt form. Detta kallas för att rastrera. Om man ritar ut flera objekt kan de rastrerade ytorna överlappa varandra. Då måste det bestämmas vilken yta som skall synas och vilken som skall vara dold. Självklart skall den yta som i rummet är närmast kameran ritas ut. Detta avgörs på ett effektivt sätt med hjälp av olika algoritmer för att ta bort skymda ytor. 2

9 Algoritmer Algoritmer Object Space and Image Space Inom borttagning av skymda ytor finns två kategorier av algoritmer. Dessa är Object Space och Image Space [1]. Skillnaden mellan de två är hur man ser på bilden. I en Object Space-baserad algoritm, ser man till varje polygon (objekt) i en scen. En generisk Object Space-algoritm skulle till exempel kunna vara att jämföra alla polygoner parvis. Ex. Det finns en scen med k st. polygoner där två plockas ur, polygon A och polygon B. Sedan jämförs hur dessa två polygoner förhåller sig till varandra sett från kameran. Det finns då fyra möjligheter. 1. A skymmer hela B sett från kameran, bara A ska visas. 2. B skymmer hela A, bara B ska visas. 3. Både A och B är helt synliga, båda ska visas. 4. A och B täcker varandra till viss del, då måste man räkna ut de synliga delarna för varje polygon. Figur 1: De fyra möjliga polygon-förhållandena För enkelhetens skull räknar man med att det tar en enda operation att bestämma om en del av polygonen är synlig. Alla polygoner kommer att gås igenom iterativt. Man börjar med den första polygonen och jämför den parvis med de resterande k-1 polygonerna i scenen. Detta talar om vilka delar av polygonen som är synlig. Sedan görs samma operationer för de resterande k-1 polygonerna i scenen. Detta kommer att ge en tidskomplexitet på O(k 2 ). Genom detta kan man se att Object Spacebaserade algoritmer troligen fungerar bäst där antalet polygoner i en scen är lågt. Image Space-algoritmer i sin tur använder strålar för att avgöra vad som syns. Det går ut på att en stråle skickas för varje pixel. Strålen startar i kameran och går igenom hela scenen. Strålen kommer då att korsa varje plan som våra k polygoner skapar, bestämma i vilket plan strålen passerar en polygon, samt för de strålar som passerar en polygon bestämma vilken polygon som är närmast kameran. Sedan är det bara att färga den pixeln med den färg polygonen har där strålen korsar den. Den karakteristiska operationen är att hitta korsningen mellan polygonen och strålen. Om upplösningen är n*m pixlar kommer operationen att utföras n*m*k gånger, vilket ger tidskomplexiteten O(k). Men eftersom algoritmen använder en stråle per pixel är noggrannheten begränsad av antalet pixlar. För att sammanfatta kan man säga att Object Space-algoritmer ser till hur alla polygoner förhåller sig till alla andra polygoner i scenen och är till största del beroende av antalet polygoner i scenen. Medan Image Space-algoritmer skickar strålar för varje pixel på skärmen och ser var strålen träffar en polygon i scenen. Den är därför istället beroende av antalet pixlar. 3

10 Algoritmer Painter s Algorithm Painter s Algorithm är en av de enklaste och mest grundläggande algoritmerna för projicering av objekt i en 3D-miljö på en 2D-yta. Som namnet antyder fungerar algoritmen lite som en målare skulle måla en tavla. En oljemålare börjar med att måla det som är längst bort från ögat för att sedan måla saker som skall synas närmare, ovanpå det gamla. Precis likadant fungerar Painter s Algorithm. De objekten som är längst bort från kameran ritas ut först och sedan ritas de objekten ut som är närmare och närmare kameran. De närmsta objekten kommer till slut täcka de delar av de bortre objekten som inte skall synas. Eftersom algoritmen jämför de olika objekten, det vill säga polygonernas placering i scenen räknas den in som en Object Space-algoritm. Svårigheten med Painter s Algorithm är att bestämma i vilken ordning polygonerna skall ritas ut. Det finns både enkla och mer avancerade lösningar för att räkna ut detta. En enkel lösning är att välja en bestämd punkt på alla polygoner, t.ex. polygonens mittpunkt och därefter jämföra avstånden mellan mittpunkten och kameran. Därefter ritas polygonerna ut i ordning, startandes med den polygon som har längst avstånd mellan sin mittpunkt och kameran. Detta fungerar dock tyvärr inte alltid. I fallet i figur 2, skall den blå polygonen täcka den röda som i illustrationen till vänster (1). Men om uppställningen betraktas från sidan, ser man att den blå polygonens mittpunkt sitter längre bak än den röda polygonens (2). Vid utritning kommer då den röda polygonen ritas ut sist och därför felaktigt täcka den blå (3). Figur : 1. Den tänkta bilden. 2. Bilden sett från sidan, här syns att den blåa polygonens mittpunkt sitter längre bak än den rödas. 3. Resultatet av utritning med Painter s Algorithm. Ett annat exempel på hur polygoner kan vara placerade för att de inte skall kunna ritas ut på ett korrekt sätt ges i figur 3. Här täcker varje polygon en annan polygon i en cykel. För att kunna rita upp sådana polygonuppställningar krävs en annan teknik. Polygonerna behöver delas upp i mindre bitar innan de avståndsbedöms. Det är här som den annars så enkla Painter s Algorithm blir mer komplex. Figur 3: Exempel på en polygoncykel som inte kan ritas ut av en enkel Painter s Algorithm. Ett effektivt sätt att dela upp polygoner i mindre delar är med hjälp av ett BSP-träd (Binary Space Partitioning Tree). En BSP delar polygonerna i mindre bitar och organiserar subdelarna i ett träd. 4

11 Algoritmer Detta träd kan sedan gås igenom med hjälp av en djupet först sökning för att rita ut polygonerna i rätt ordning. Pseudokod för Painter s Algorithm kan skrivas som följer: public void painter() { sort objects by z; for all objects { for all pixels (x, y) { paint object.color; } } } Effektiviteten för Painter s Algorithm är starkt beroende på vilken split- och sorteringsalgoritm som används. Värsta fall med en enkel sorteringsalgoritm är O(n^2). Men har en snittid på O(n log n). [6] Om en BSP används tar det O(n log n) i snitt att göra uppdelningen och sorteringen och sen O(n) för att vandra igenom trädet som skapats. I värsta fall tar uppdelningen och sorteringen O(n^2) och O(n^2) i värsta fall. [6] Användningsområde Painter s Algorithm har använts till 3D-spel tidigare, men är idag inte lika vanlig förekommande. Främst beror det på att dagens spel är mycket mer detaljerade och består av fler objekt som behövs ritas ut. Eftersom algoritmen ritar ut samtliga objekt i bilden blir det många onödiga utritningar. I andra områden, med simplare grafik, som t.ex. Postscript och CSS används Painter s Algorithm för att rita ut objekt i rätt ordning. Dessa bilder brukar dock inte vara tredimensionella i samma mening som moderna datorspel är. Fördelar Den stora fördelen med algoritmen är att den är väldigt enkel att förstå. Det är bara att rita över gamla pixlar med nya. Det enkla konceptet gör även att den är tämligen enkel att implementera. En annan fördel med konceptet att rita alla pixlar i djupled och sen rita över dem, är att transparanta ytor och pixlar inte behöver särskilda beräkningar. Om en genomskinlig yta ligger framför en solid yta är pixeln redan rätt färgad. Nackdelar När man tar bort skymda ytor inom 3D grafiken gör man det av två anledningar. Den ena anledningen är att bilden som genereras ska bli vacker och se ut som det är tänkt när objekten i scenen skapades. Den andra anledningen är att slippa beräkna och rita ut det som ändå inte kommer att synas, och då spara på beräkningskraft. Painter s Algorithm är egentligen inte jättebra för något av fallen. Det är tämligen komplicerat att avgöra vilka objekt och polygoner som ska ligga framför de andra för att få en bra slutbild. Särskilt 5

12 Algoritmer svårt är det att skapa en snabb algoritm som delar upp polygoner som täcker varandra och som fungerar allmänt och inte bara för ett specifikt fall. BSP är bra på detta men det blir aldrig perfekt, dessutom tar det ganska lång tid att skapa trädet (O(n log n)) vilket gör det svårt att använda Painter s Algorithm i 3D spel och liknande som kräver många omritningar av scenen i realtid. En stor nackdel med algoritmen är även den överritning som görs hela tiden. Samma pixel kan ritas om flertalet gånger innan bilden är färdig. Den ständiga överritningen innebär att det kan ta mycket lång tid att rita ut en bild om det finns många lager med polygoner i en scen. 6

13 Algoritmer Z-buffering Z-buffering går ut på att när en polygon kommer till algoritmen så räknar man ut avståndet mellan varje pixel i polygonen och bildplanet. Om detta avstånd är mindre än tidigare polygons pixel med samma x- och y-värde betyder det att denna pixeln i polygonen är framför den förra och därmed ersätter man den gamla pixelns färg med den nya som är närmare. För att använda Z-buffering måste man ha två matriser en framebuffert som sparar färgvärdet för varje pixel som ska ritas ut på skärmen och en z-buffert som sparar djupet för pixlarna. Framebufferten initieras till bakgrundfärgen och z-bufferten till maxdjupet. Både z-bufferten och framebufferten måste vara lika stora som antalet pixlar som man ska rita ut. Så om man ska rita upp en scen som ska ha 1920x1080 pixlars upplösning måste både z-bufferten och framebufferten som man använder vara 1920x1080 för att kunna spara ett djupvärde och färgvärde för varje pixel När man skapar z-bufferten bestäms samtidigt precisionen eftersom antalet bitar som används för att spara djupet sätts. Detta betyder att om en 16-bitars z-buffert används, finns det värden som djupet kan anta. Används istället en 24-bitars z-buffert kommer bättre precision erhållas, eftersom det då finns olika värden. Bufferten kommer dock att ta mer plats i minnet. Eftersom z-bufferten har en begränsad precision sett till antal unika djupvärden som den kan använda är det inte bra att köra den på alltför stora ytor. Detta eftersom värdena blir mer utspridda och precisionen blir sämre. För att förhindra detta sätts två klipplan upp, mellan vilka man kör Z- bufferingen. En för det främre klipplanet och en för det bakre klipplanet. Alla polygoner som ligger utanför dessa två klipplan kommer z-buffertalgoritmen inte att ta hänsyn till. Genom att lägga dess gränser närmare eller längre ifrån varandra kan precisionen i z-bufferten varieras. Förhållandet mellan dessa två gränser påverkar även hur z-buffertens olika värden fördelas. Om förhållandet mellan de två gränserna är 100 kommer 90 procent av de olika värdena som z-bufferten kan innehålla, användas av de 10 första procenten av djupet. Om förhållandet istället är 1000, kommer 98 procent av värdena användas av de första 2 procenten av djupet [3]. Pseudokoden för z-buffering kan skrivas så här: For each polygon p{ For each pixel in p{ If p.pixeldepth(x,y) < zbuffer(x,y){ zbuffer(x,y) = p.pixeldepth(x,y) framebuffer(x,y) = p.pixelcolor(x,y) } } } För varje polygon som kommer in kontrolleras alla pixlar i den polygonen. Om en pixel har ett mindre djup än det djup som är lagrat i z-bufferten, det vill säga den här pixeln är framför den gamla pixeln, ersätts det gamla djupet i z-bufferten med det djupvärde som den nya pixeln har. Samtidigt ersätts det gamla färgvärdet i framebufferten med färgvärdet som den nya pixeln ska ha. Användningsområden Z-buffering har inbyggt stöd i nästan alla grafikkort i dagsläget [3] och används både inom Direct3D och OpenGL som är de två största grafikbiblioteken. Därmed används det i nästan alla spel med 3Dgrafik som kommer ut. 7

14 Algoritmer Fördelar Online En av de stora fördelarna med Z-buffering är att den är online. Det betyder att den inte behöver ha all data på en gång innan algoritmen körs. Istället kan algoritmen ta in data i portioner och köra ändå. I det här fallet betyder det att inte alla polygoner som ska visas på skärmen behövs från början när Z- buffering ska köras, utan den kan matas polygoner allt eftersom de kommer. Detta gör att Z-buffering blir effektivare eftersom den slipper stå och vänta på att få alla polygoner. Istället kan den köra igång direkt på de polygoner som den har fått och sedan fortsätta tills den är klar med alla polygoner i scenen. Lätt att göra i hårdvara Eftersom Z-buffering är en relativt enkel algoritm som bara kräver extra minnesutrymme för att implementeras är det lätt att bygga in Z-buffering i hårdvara och i dagsläget stödjer nästan alla grafikkort Z-buffering [3]. Det som däremot skiljer sig mellan olika hårdvaruimplementationer är hur många bitars precision de har i sin z-buffert vissa 16-bitar och vissa 24-bitar. Det finns även de som har 32-bitar. Nackdelar Minne En av nackdelarna med Z-buffering är att den kräver mer minne. För att kunna rita ut saker på skärmen måste man först och främst ha en bildmatris eller framebuffer. Den behöver vara lika stor som upplösningen på skärmen. Det vill säga om skärmupplösningen är 1920x1080 så kommer matrisen vara 1920x1080 stor och varje element kommer att innehålla från 32-bitar ner till 16-bitar beroende på inställningar. Detta betyder att framebufferten kommer att ta ca 8MB minne om den innehåller 32- bitar. För att kunna använda Z-buffering måste även en z-buffert finnas, för att lagra djupvärden för varje pixel. Den kommer också vara lika stor som skärmupplösningen. Eftersom det är olika stora tal som väljs att z-buffern kan innehålla, varierar det hur mycket minne som krävs. Om en 16-bitars z- buffer väljs, som då kan innehålla distinkta värden, kommer den ta ca 4MB minne om upplösningen är 1920x1080. Om istället en 24-bitars z-buffer används, kommer den kunna innehålla distinkta värden och får markant bättre precision, men den kommer att ta ca 6MB minne med samma upplösning. Överritning Att behöva rita om pixlar flera gånger kan vara ett problem som även uppstår med Z-buffering. Detta eftersom man inte vet i vilken ordning som polygonerna kommer till algoritmen och de skulle kunna i värsta fall komma så att man måste rita om samma pixel varje gång. Men i realiteten är detta ett betydlig större problem för Painter s Algorithm än för Z-buffering. Z-fighting Z-fighting uppstår när två polygoner ligger så nära varandra att algoritmen inte kan avgöra vilken polygon som är närmast betraktaren och därmed ska ritas ut. Eftersom algoritmen inte kan avgöra vilken färg som ska målas ut kommer det vara slumpmässigt vilken färg pixeln får vilket ger upphov till att det kommer att ritas ut fragment från båda polygonerna där de korsar varandra. Detta kan uppstå av flera anledningar bland annat på grund av avrundningsfel i uträkningar eller för dålig precision i z-bufferten vilka gör att polygonerna får samma djup även om de inte ligger på samma djup. 8

15 Algoritmer Ett sätt att undvik Z-fighting, eller i alla fall göra det mindre vanligt när man har stora ytor som man vill köra Z-buffering på, är att dela upp renderingen och köra Z-buffering på mindre del ytor. På så sätt kan man få bättre precision på varje del yta men till kostnaden att det kommer ta längre tid. Figur 4: Exempel på Z-fighting 9

16 Jämförelse av algoritmerna Jämförelse av algoritmerna De två algoritmerna har mycket olika tillvägagångssätt för att lösa samma problem. Painter s Algorithm bygger på hur man tidigare har gjort för att skymma ytor detta i kontrast till Z-buffering som man skulle kunna säga är ett mer datalogiskt tillvägagångssätt. På grund av deras olika ursprung är de mer eller mindre lämpade för olika typer av scener. Det här är de fyra scener som kommer att jämföras för att visa ytterligheterna i algoritmerna. 1. Enkel scen med låg upplösning. Scenen innehåller 24 polygoner (fyra kuber) och har en upplösning på 160x Enkel scen med hög upplösning. Samma som i scen 1 men upplösningen har höjts till 1920x Komplex scen med låg upplösning. Scenen innehåller 5000 polygoner på olika djup och som korsar och går in i varandra. Den har en upplösning på 320x Komplex scen med hög upplösning. Samma scen som i exempel 3 men med upplösningen 1920x1080. Enkel scen med låg upplösning Om man har en enkel scen det vill säga att det är få polygoner i scenen och låg upplösning kommer båda algoritmerna att gå snabbt. Painter s Algorithm är i viss mån beroende av hur många överritningar 1 den kommer att behöva göra men eftersom det bara är ett fåtal polygoner i scenen så kommer troligen antalet överritningar vara få. Man kan nästan bortse från sortering som krävs för Painter s Algorithm när det är så här få polygoner. Enkel scen med hög upplösning I exempel 2 används samma scen som i exempel 1 men med ökad upplösning. Detta kommer att innebära att tiden det tar för Painter s Algorthim kommer att öka eftersom den kommer att behöva färglägga fler pixlar i scenen. Däremot kommer övriga delar av algoritmen inte att påverkas. Z- bufferingen kommer däremot påverkas på flera sätt av den ökade upplösningen. Dels kommer storleken på z-bufferten att öka eftersom den måste vara lika stor som den upplösning som man ska rita ut. Det kommer även ta längre tid att köra genom Z-bufferingen eftersom algoritmen inner loopen som körs för varje polygon kommer ta längre tid på grund av det ökade antalet pixlar. Komplex scen med låg upplösning Kollar man på den komplexa scenen i exempel tre, kommer det ta betydligt längre tid att gå igenom för båda algoritmerna eftersom det är betydligt fler polygoner och chansen för överritningar växer med antalet polygoner i scenen. Eftersom upplösningen är låg, kommer antalet pixlar som ritas om varje gång däremot vara lågt men överritning kommer fortfarande spela en stor roll. Detta kommer göra att Painter s Algorithm blir långsammare, eftersom den grundar sig på överritning och komplexa scener medför flera polygoner som kan skymma andra polygoner vilket innebär det fler överritningar. Z- buffering kommer även den lida av överritningsproblem men inte alls i samma omfattning som Painter s Algorithm. För Z-buffering så är överritningsproblemet helt beroende på hur polygonerna 1 Eftersom den här rapporten handlar om borttagning av skymda ytor och inte tid för att färglägga en pixel kommer det att antas att färgläggning av en pixel tar konstant tid. 10

17 Jämförelse av algoritmerna kommer till algoritmen. Om de kommer sorterade med polygonen längst bak i scenen först, kommer Z-buffering ha lika många överritningar som Painter s Algorithm. Men om man antar att de inte kommer i någon speciell ordning bör den göra ungefär 50 % 2 färre överritningar än vad Painter s Algorithm gör. När antalet polygoner blir så här stort, förlorar Painter s Algorithm även mycket på att behöva vänta på att alla polygoner ska blir klara med rendering och rasterisering som görs tidigare. Om man för enkelhetens skulle antar att rendering och rasterisering tar konstant tid för varje polygon betyder det att tiden som Painter s Algorithm måste vänta innan den kan börjar sortera polygonerna växer linjärt med antalet polygoner i scen. Något som Z-buffering inte behöver ta hänsyn till eftersom den kan köra så fort den får en polygon. Nu är det även så många polygoner i scenen att sorteringen som måste göras för Painter s Algorithm gör sig påmind och gör så att algoritmen går långsammare. Om BSP används för sortering kommer denna sortering ta O(n log n) i snitt. Komplex scen med hög upplösning Detta är det exempel som bäst speglar dagens användning av 3D-grafik, en komplex scen med många polygoner och hög upplösning. Precis som i tidigare exempel så påverkas Painter s Algorithm av upplösningshöjningen genom att det tar längre tid att göra färgläggningen av polygonen och därigenom blir det mer kostsamt att göra överritningar. Som nämndes i det tidigare exemplet gör detta att Painter s Algorithm tar allt mer tid och mycket av tiden läggs på att göra överritningar och därmed ta bort saker som har gjorts i onödan. Z-buffering behöver som vanligt mer minne när upplösningen ökar och den inre loopen som går igenom alla pixlar i polygonen kommer även att köras flera gånger. Precis som i det förra exemplet kommer överritning även vara ett problem för Z-buffering men inte i samma utsträckning som för Painter s Algorithm. Slutsats Det som man ser i denna jämförelse är att när det är enkla scener med få polygoner, spelar det mindre roll vilken algoritm man använder och hur mycket arbete algoritmerna gör. Men när antalet polygoner ökar syns även hur algoritmerna skiljer sig åt. Vid komplexa scener så märks många av nackdelarna med båda algoritmerna. Painter s Algorithm har flera flaskhalsar med att behöva vänta in alla polygoner och sortera dem innan den kan köra. Den lider även av att den kommer att göra många färgläggningar i onödan på grund av överritningen. Däremot påverkas den inte lika mycket när upplösningen ökar. Till skillnad mot Z-buffering där det just är upplösningen som har den största påverkan förutom antalet polygoner i scenen. Z-bufferingens minnesanvändning ökar också i takt med att upplösningen växer. Men Z-buffering har inte samma problem med överritning som Painter s Algorithm har och ritar garanterat ut en korrekt bild, något som inte är säkert för Painter s Algorithm. Z-buffering är även effektivare eftersom den kan köras så fort den får polygoner och slipper vänta in att alla ska bli klara i tidigare steg. Som man kan se så fungerar både algoritmerna olika bra under olika förehållanden och båda har sina styrkor och svagheter. Nu återstår det att se om en kombination av de två algoritmerna är bättre. 2 Den exakta siffran är helt beroende på scenens utseende och i vilken ordning som polygonerna kommer till algoritmen. 11

18 Algoritmerna kombinerade Algoritmerna kombinerade Ett av det största problemet med Painter s Algorithm men som även förekommer med Z-buffering är överritning. För att kunna undvika det kan Painter s Algorithm och Z-buffering kombineras till en algoritm. Problemet med överritning hos Painter s Algorithm uppstår för att den börjar med att måla upp scenen bakifrån och sedan målar över det som den har målat tidigare med polygoner som är längre fram i scenen. För att undvika problemet med att hela tiden måla över de polygoner som man redan har målat ut skulle man kunna göra om Painter s Algorithm så att den istället börjar framifrån. Om den skulle börja framifrån så skulle detta göra att den aldrig kommer att göra en övermålning för när man väl har färglagt en pixel, vet man att den är längre fram än alla andra. Problemet som uppstår är att man inte vet om en pixel har färglagts tidigare eller inte och det är där som z-bufferten kommer in. Med hjälp av z-bufferten kan man hålla reda på vilka pixlar som redan är färglagda och därmed inte ska ändras. Så först så sorterar man alla polygoner i scenen efter djup, efter det så skickar man alla polygonerna i ordning med den som är närmast skärmen först till en Z-bufferingalgoritm som då kommer att köra igenom alla polygoner utan att göra någon överritning. Fördelar Fördelen med att kombinera de två algoritmerna på detta sätt är att man helt kan undvik överritning och kan på så sätt tjäna tid på att slippa färgsätta pixlar som inte kommer att synas. Nackdelar Nackdelen med denna är att alla nackdelar som dessa algoritmer redan har fortfarande är kvar förutom överritning, plus att Z-buffering inte längre är online eftersom den nu måste vänta in alla polygoner för att göra en sortering innan den kan börja köra. 12

19 Litteraturlista Litteraturlista 1. ANGEL E Interactive Computer graphics, a top down approach using OpenGL. 5 uppl. Pearson Education. ISBN I. E. Sutherland, R. F. Sproull, R. A. Schumacker, A Characterization of Ten Hidden-Surface Algorithms, ACM Computing Surveys, March Microsoft: Depth Buffers (Direct3D 9), Microsoft Developers Network 7 April Wayne Carlson: CGI Historical Timeline 2 September Daniel Sevo: History of Computer Graphics 12 Augusti L. Szirmay-Kalos, T.Foris, Radiosity Algorithms Running in Sub-quadraticTime, Department of Process Control, Technical University of Budapest 13

20

Grafiska pipelinens funktion

Grafiska pipelinens funktion LUNDS TEKNISKA HÖGSKOLA CAMPUS HELSINGBORG Grafiska pipelinens funktion Ludvig von Sydow EDT62, HT17 Datorarkitekturer med Operativsystem Sammanfattning Denna rapport syftar till att beskriva hur en graphics

Läs mer

Grafiska pipelinen. Edvin Fischer

Grafiska pipelinen. Edvin Fischer Grafiska pipelinen Edvin Fischer Sammanfattning Rapporten behandlar den grafiska pipelinen och dess steg, vilka stegen är och hur de funkar. Inledning Rapporten har till syfte att beskriva hur den grafiska

Läs mer

Jämförelse av två algoritmer Painters och Z-buffering CHARLIE LINDVIKEN

Jämförelse av två algoritmer Painters och Z-buffering CHARLIE LINDVIKEN Jämförelse av två algoritmer Painters och Z-buffering CHARLIE LINDVIKEN Examensarbete Stockholm, Sverige 2011 Jämförelse av två algoritmer Painters och Z-buffering CHARLIE LINDVIKEN Examensarbete i medieteknik

Läs mer

Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se. Datorgrafik i spel

Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se. Datorgrafik i spel Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se Datorgrafik i spel 1 Sammanfattning Dator grafik kan delas in i fyra olika områden: information, design, simuleringar och

Läs mer

Grafik. För enklare datorsystem

Grafik. För enklare datorsystem Grafik För enklare datorsystem Grafik förr VGA-signalen Direktdriven grafik eller bildminne Bitmap-grafik Tile/teckenbaserad grafik Spritebaserad grafik Kollisionskontroll Rörelse : Hastighet / riktning

Läs mer

Grafik. För enklare datorsystem

Grafik. För enklare datorsystem Grafik För enklare datorsystem Grafik förr VGA-signalen Direktdriven grafik eller bildminne Bitmap-grafik Tile/teckenbaserad grafik Spritebaserad grafik Kollisionskontroll Rörelse : Hastighet / riktning

Läs mer

Rastrering och displayalgoritmer. Gustav Taxén

Rastrering och displayalgoritmer. Gustav Taxén Rastrering och displayalgoritmer Gustav Taxén gustavt@csc.kth.se 2D1640 Grafik och Interaktionsprogrammering VT 2007 Klippning Man vill undvika att rastrera de primitiver som hamnar utanför fönstret. Man

Läs mer

Konvexa höljet Laboration 6 GruDat, DD1344

Konvexa höljet Laboration 6 GruDat, DD1344 Konvexa höljet Laboration 6 GruDat, DD1344 Örjan Ekeberg 10 december 2008 Målsättning Denna laboration ska ge dig övning i att implementera en algoritm utgående från en beskrivning av algoritmen. Du ska

Läs mer

After Effects Lathund

After Effects Lathund After Effects After Effects Lathund After Effects En komposition är det samma som ett filmklipp i After Effects. En komposition kan vara hela filmen/ animationen eller så använder man sig av flera kompositioner

Läs mer

Grunder. Grafiktyper. Vektorgrafik

Grunder. Grafiktyper. Vektorgrafik 2 Grunder All vår början bliver svår eller hur det nu brukar heta, och detta är något som gäller även Flash. För den som är ovan vid Flash gäller det säkert extra mycket, då det kan vara knepigt att förstå

Läs mer

Datorgrafik Ray tracing. Mattias Ekström, Västerås,

Datorgrafik Ray tracing. Mattias Ekström, Västerås, Datorgrafik Ray tracing Mattias Ekström, Västerås, 2010-03-05 1 SAMMANFATTNING Ray tracing är en teknik för att skapa bilder digitalt. Den används komersiellt främst inom film- och spelindustrin. Metoden

Läs mer

Algoritmer för gallring av dolda ytor Johannes Staffans Institutionen för informationsbehandling Åbo Akademi, FIN-20520 Åbo, Finland e-post:

Algoritmer för gallring av dolda ytor Johannes Staffans Institutionen för informationsbehandling Åbo Akademi, FIN-20520 Åbo, Finland e-post: Algoritmer för gallring av dolda ytor Johannes Staffans Institutionen för informationsbehandling Åbo Akademi, FIN-20520 Åbo, Finland e-post: johannes.staffans@abo.fi Referat Ett datorprogram som renderar

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 9 oktober 2015 Anton Grensjö ADK Övning 6 9 oktober 2015 1 / 23 Översikt Kursplanering Ö5: Grafalgoritmer och undre

Läs mer

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen Procedurella Grottor TNM084 Alexander Steen alest849@student.liu.se 13-01-12 Sammanfattning Denna rapport beskriver en metod för att skapa procedurella grottor. Grottorna består utav sammanlänkade rum

Läs mer

Visualisering med Rhino/Vray/Photoshop av modell som skapats i Revit. AADA15 Revit Workshop 2017 LTH Ludvig Hofsten

Visualisering med Rhino/Vray/Photoshop av modell som skapats i Revit. AADA15 Revit Workshop 2017 LTH Ludvig Hofsten Visualisering med Rhino/Vray/Photoshop av modell som skapats i Revit AADA15 Revit Workshop 2017 LTH Ludvig Hofsten Så här ser min byggnad som exporterats från Revit ut när jag öppnar den i Rhino. Den

Läs mer

Graärgning och kromatiska formler

Graärgning och kromatiska formler Graärgning och kromatiska formler Henrik Bäärnhielm, d98-hba 2 mars 2000 Sammanfattning I denna uppsats beskrivs, för en ickematematiker, färgning av grafer samt kromatiska formler för grafer. Det hela

Läs mer

Grafik raytracing. Mattias Axblom.

Grafik raytracing. Mattias Axblom. Grafik raytracing Mattias Axblom mam11003@student.mdh.se 1 SAMMANFATTNING Raytracing, strålföljning eller strålspårning är en metod för att rendera realistiska bilder, film och i framtiden spel. Grundidén

Läs mer

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 Laboration 3 Visualisering (och implementering) av sortering Exempel på grafik (med Swing-paketet) Frågor 1 Laboration 3 Visualisering

Läs mer

TEM Projekt Transformmetoder

TEM Projekt Transformmetoder TEM Projekt Transformmetoder Utförs av: Mikael Bodin 19940414 4314 William Sjöström 19940404 6956 Sammanfattning I denna laboration undersöks hur Fouriertransformering kan användas vid behandling och analysering

Läs mer

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer för D2 DAT 035 Tentamen Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser:

Läs mer

SPRINT-HANDBOK (version 0.4)

SPRINT-HANDBOK (version 0.4) 1. FÄRG OCH FORM Detta är programmets startmeny. Texten överst på bilden (Avsluta, Ny användare, Om... och Välj användare) blir synlig då markören förs upp den blåa ramen. en ny användare. 6. 4. 5. får

Läs mer

Sökning och sortering

Sökning och sortering Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling

Läs mer

Funktioner. Räta linjen

Funktioner. Räta linjen Sidor i boken 14-143, 145-147 Funktioner. Räta linjen Här följer en dialog mellan studenten Tor-Björn (hädanefter kallad TB) och hans lärare i matematik Karl-Ture Hansson (nedan kallad KTH). När vi möter

Läs mer

Tynker gratisapp på AppStore

Tynker gratisapp på AppStore Tynker gratisapp på AppStore Innehåll Använda appen 2 Koordinatsystemet 6 Rita rektanglar i koordinatsystemet 7 Rita ellipser i koordinatsystemet 9 Rita trianglar i koordinatsystemet 11 Skapa mönster med

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

Grafisk Teknik. Rastrering. Övningar med lösningar/svar. Sasan Gooran (HT 2013)

Grafisk Teknik. Rastrering. Övningar med lösningar/svar. Sasan Gooran (HT 2013) Grafisk Teknik Rastrering Övningar med lösningar/svar Det här lilla häftet innehåller ett antal räkneuppgifter med svar och i vissa fall med fullständiga lösningar. Uppgifterna är för det mesta hämtade

Läs mer

Kort introduktion till POV-Ray, del 1

Kort introduktion till POV-Ray, del 1 Kort introduktion till POV-Ray, del 1 Kjell Y Svensson, 2004-02-02,2007-03-13 Denna serie av artiklar ger en grundläggande introduktion och förhoppningsvis en förståelse för hur man skapar realistiska

Läs mer

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling Spelutveckling - Scenegrafer Scenegrafer Optimeringar Culling Scenegraf vad och varför? En hierkisk representation av en 3d-värld Directed acyclic Graph (DAG) Består av noder med med barn/föräldrar Gör

Läs mer

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm? Föreläsning 1. Introduktion och sökning i graf Vad är en algoritm? Först: Vad är ett problem? Består av indata och ett mål. Indata: [En beskrivning av en struktur.] Mål: [Kan vara Ja/Nej, ett tal eller

Läs mer

Föreläsning 11. Giriga algoritmer

Föreläsning 11. Giriga algoritmer Föreläsning 11 Giriga algoritmer Föreläsning 11 Giriga algoritmer Användning Växelproblemet Kappsäcksproblemet Schemaläggning Färgläggning Handelsresandeproblemet Giriga algoritmer (Greedy algorithms)

Läs mer

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer D DAT 035/INN960 Tentamen Datastrukturer D DAT 035/INN960 22 december 2006 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,

Läs mer

TAIU07 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab TAIU07 Matematiska beräkningar med Matlab Laboration 3. Linjär algebra Namn: Personnummer: Epost: Namn: Personnummer: Epost: Godkänd den: Sign: Retur: 1 Introduktion 2 En Komet Kometer rör sig enligt ellipsformade

Läs mer

Den räta linjens ekvation

Den räta linjens ekvation Den räta linjens ekvation Här följer en dialog mellan studenten Tor-Björn (hädanefter kallad TB) och hans lärare i matematik Karl-Ture Hansson (nedan kallad KTH). När vi möter dem för första gången är

Läs mer

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab TANA17 Matematiska beräkningar med Matlab Laboration 1. Linjär Algebra och Avbildningar Namn: Personnummer: Epost: Namn: Personnummer: Epost: Godkänd den: Sign: Retur: 1 Introduktion I denna övning skall

Läs mer

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud. Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra

Läs mer

Den räta linjens ekvation

Den räta linjens ekvation Den räta linjens ekvation Här följer en dialog mellan studenten Tor-Björn (hädanefter kallad TB) och hans lärare i matematik Karl-Ture Hansson (nedan kallad KTH). När vi möter dem för första gången är

Läs mer

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp

Läs mer

4 grundregler. Minneshantering. Problemet. Windows minkrav

4 grundregler. Minneshantering. Problemet. Windows minkrav 4 grundregler 1. Man kan aldrig få för mycket minne 2. Minnet kan aldrig bli för snabbt Minneshantering 3. Minne kan aldrig bli för billigt 4. Programmens storlek ökar fortare än minnet i datorerna (känns

Läs mer

Bilder... Dagens föreläsning. Objektgrafik. Objektgrafik. TNMK30, 2010 Föreläsning

Bilder... Dagens föreläsning. Objektgrafik. Objektgrafik. TNMK30, 2010 Föreläsning TNMK30, 2010 Föreläsning Bilder... Tobias Trofast, LiU 1 Dagens föreläsning Olika grafikformat Bitdjup Färglägen och kanaler Komprimering Filformat Bildkvalitet Upplösning & Interpolering Objektgrafik

Läs mer

Mätning av fokallängd hos okänd lins

Mätning av fokallängd hos okänd lins Mätning av fokallängd hos okänd lins Syfte Labbens syfte är i första hand att lära sig hantera mätfel och uppnå god noggrannhet, även med systematiska fel. I andra hand är syftet att hantera linser och

Läs mer

Teknik för avancerade datorspel!

Teknik för avancerade datorspel! 1(84) Information Coding / Computer Graphics, ISY, LiTH TSBK 03 Teknik för avancerade datorspel Ingemar Ragnemalm, ISY Fysik Datorgrafik Spelmekanismer AI Animation 1(84) Föreläsning 5 GPU computing GPU

Läs mer

TBSK 03 Teknik för Advancerade Datorspel

TBSK 03 Teknik för Advancerade Datorspel TBSK 03 Teknik för Advancerade Datorspel Översikt 3D och Stereoskopi Introduktion Bildskärmsteknik Depth Cues Limiteringar Design-riktlinjer Texturkompression Introduktion Algoritmer & Standarder (DXT,

Läs mer

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort? Operationer på buffert och pixlar I rastergrafikens barndom......gjorde man grafik genom att skriva i ett videominne. Lapped textures Emil Praun et al., SIGGRAPH 2000. Gustav Taxén CID gustavt@nada.kth.se

Läs mer

Projekt i bildanalys Trafikövervakning

Projekt i bildanalys Trafikövervakning Projekt i danalys Trafikövervakning F 99 F 00 Handledare : Håkan Ardö Hösten 3 vid Lunds Tekniska Högskola Abstract Using traffic surveillance cameras the authorities can get information about the traffic

Läs mer

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

Procedurell 3D-eld på grafikkortet

Procedurell 3D-eld på grafikkortet Procedurell 3D-eld på grafikkortet TNM084 Procedurella metoder för bilder Anders Hedblom, andhe893@student.liu.se 2012-04-04 1. Bakgrund 1.1. Procedurella metoder Procedurella metoder har ett stort användningsområde

Läs mer

Histogram över kanter i bilder

Histogram över kanter i bilder Histogram över kanter i bilder Metod Både den svartvita kanstdetekteringen och detekteringen av färgkanter följer samma metod. Först görs en sobelfiltrering i både vertikal och horisontell led. De pixlar

Läs mer

Föreläsning i webbdesign. Bilder och färger. Rune Körnefors. Medieteknik. 2012 Rune Körnefors rune.kornefors@lnu.se

Föreläsning i webbdesign. Bilder och färger. Rune Körnefors. Medieteknik. 2012 Rune Körnefors rune.kornefors@lnu.se Föreläsning i webbdesign Bilder och färger Rune Körnefors Medieteknik 1 2012 Rune Körnefors rune.kornefors@lnu.se Exempel: Bilder på några webbsidor 2 Bildpunkt = pixel (picture element) Bilder (bitmap

Läs mer

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Lösningsförslag för tentamen i Datastrukturer (DAT037) från Lösningsförslag för tentamen i Datastrukturer (DAT7) från --9 Nils Anders Danielsson. Träd- och köoperationerna har alla tidskomplexiteten O(log s), där s är antalet element i trädet/kön (notera att jämförelser

Läs mer

Facit Tentamen TDDC (7)

Facit Tentamen TDDC (7) Facit Tentamen TDDC30 2014-03-18 1 (7) Teoretisk del 1. (3p) "Snabba frågor" a) Varför kan man tänkas vilja dölja metoder och variabler med private? (0.5p) Svar:För att skydda interna variabler från ändringar

Läs mer

Färgtyper. Färg. Skriva ut. Använda färg. Pappershantering. Underhåll. Felsökning. Administration. Index

Färgtyper. Färg. Skriva ut. Använda färg. Pappershantering. Underhåll. Felsökning. Administration. Index Med skrivaren får du möjlighet att kommunicera med färg. drar till sig uppmärksamhet, ger ett attraktivt intryck och förhöjer värdet på det material eller den information som du skrivit ut. Om du använder

Läs mer

Introduktion till Matlab

Introduktion till Matlab Introduktion till Matlab Inledande matematik, I1, ht10 1 Inledning Detta är en koncis beskrivning av de viktigaste delarna av Matlab. Till en början är det enkla beräkningar och grafik som intresserar

Läs mer

Hantering av hazards i pipelines

Hantering av hazards i pipelines Datorarkitektur med operativsystem Hantering av hazards i pipelines Lisa Arvidsson IDA2 Inlämningsdatum: 2018-12-05 Abstract En processor som använder pipelining kan exekvera ett flertal instruktioner

Läs mer

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC (6) Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 Laboration 3 Visualisering (och implementering) av sortering Exempel på grafik (med Swing-paketet) Frågor 1 Laboration 3 Visualisering

Läs mer

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

Försättsblad till skriftlig tentamen vid Linköpings Universitet Försättsblad till skriftlig tentamen vid Linköpings Universitet (fylls i av ansvarig) Datum för tentamen Sal Tid Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter i tentamen Antal sidor på

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Lösningar Datastrukturer TDA

Lösningar Datastrukturer TDA Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både

Läs mer

Teknik för avancerade datorspel!

Teknik för avancerade datorspel! 1(83) Information Coding / Computer Graphics, ISY, LiTH TSBK 03 Teknik för avancerade datorspel Ingemar Ragnemalm, ISY Fysik Datorgrafik Spelmekanismer AI Animation 1(83) Föreläsning 5 GPU computing GPU

Läs mer

Universe Engine Rapport

Universe Engine Rapport 1 Universe Engine Rapport Alexander Mennborg 2017-05-08 2 Inledning I denna rapport diskuteras utvecklingsprocessen till projektet Universe Engine. Denna diskussion omfattar hela utveckling från starten

Läs mer

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning Karlstads GeoGebrainstitut Institutionen för matematik och datavetenskap Karlstads universitet Mats Brunström Maria Fahlgren GeoGebra ett digitalt verktyg för framtidens matematikundervisning Invigning

Läs mer

Programmering II (ID1019) :00-11:00

Programmering II (ID1019) :00-11:00 ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren

Läs mer

Avdelning 1, trepoängsproblem

Avdelning 1, trepoängsproblem Avdelning 1, trepoängsproblem 1. I ett akvarium finns det 00 fiskar varav 1 % är blå medan övriga är gula. Hur många gula fiskar måste avlägsnas från akvariet för att de blå fiskarna ska utgöra % av alla

Läs mer

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035 Tentamen med lösningsförslag Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.)

Läs mer

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel Tentamen TNM061, 3D-grafik och animering för MT2 Tisdag 3/6 2014 kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43 Inga hjälpmedel Tentamen innehåller 8 uppgifter, vilka tillsammans kan ge maximalt 50 poäng.

Läs mer

Undersökande arbetssätt i matematik 1 och 2

Undersökande arbetssätt i matematik 1 och 2 Matematik Gymnasieskola Modul: Matematikundervisning med digitala verktyg Del 6: Undersökande arbetssätt med matematisk programvara Undersökande arbetssätt i matematik 1 och 2 I texten Undersökande arbetssätt

Läs mer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon

Läs mer

Banach-Tarskis paradox

Banach-Tarskis paradox Banach-Tarskis paradox Tony Johansson 1MA239: Specialkurs i Matematik II Uppsala Universitet VT 2018 Banach-Tarskis paradox, bevisad 1924 och döpt efter Stefan Banach och Alfred Tarski, är en sats inom

Läs mer

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens 2 2010-10-03 Erik Claesson 880816-1692

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens 2 2010-10-03 Erik Claesson 880816-1692 Beräkning med ord -hur en dator hanterar perception 2010-10-03 Erik Claesson 880816-1692 Innehåll Inledning... 3 Syfte... 3 Kan datorer hantera perception?... 4 Naturligt språk... 4 Fuzzy Granulation...

Läs mer

Programmering för språkteknologer II, HT2014. Rum

Programmering för språkteknologer II, HT2014. Rum Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Sökalgoritmer

Läs mer

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel Tentamen TNM061, 3D-grafik och animering för MT2 Onsdag 20/8 2014 kl 14-18 SP71 Inga hjälpmedel Tentamen innehåller 7 uppgifter, vilka tillsammans kan ge maximalt 50 poäng. För betyg G (registreras som

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6 Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar

Läs mer

Några svar till TDDC70/91 Datastrukturer och algoritmer

Några svar till TDDC70/91 Datastrukturer och algoritmer Några svar till TDDC70/91 Datastrukturer och algoritmer 2011--18 Följande är lösningsskisser och svar till uppgifterna på tentan. Lösningarna som ges här ska bara ses som vägledning och är oftast inte

Läs mer

Tentamen, Programmeringsteknik för BME, F och N

Tentamen, Programmeringsteknik för BME, F och N LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, Programmeringsteknik för BME, F och N 2015 06 03, 14.00 19.00 Anvisningar: Preliminärt ger uppgifterna 7 + 11 + 16 + 11 = 45 poäng.

Läs mer

Mattekungen åk 6-9 vers. 1.0

Mattekungen åk 6-9 vers. 1.0 Presentation av programvara våren 2008 Bodil Holmström Anna Holmström Bearbetat av Karolina Höglund Mattekungen åk 6-9 vers. 1.0 Allmänt om programmet Mattekungen är ett undervisningsprogram som produceras

Läs mer

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna Föreläsning Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Implementering med lista ar Implementering av prioritetskö med heap Sortering

Läs mer

Föreläsningsanteckningar F6

Föreläsningsanteckningar F6 Föreläsningsanteckningar F6 Martin Andersson & Patrik Falkman Kortaste vägen mellan en nod och alla andra noder Detta problem innebär att givet en graf G = (E,V) hitta den kortaste vägen över E från en

Läs mer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016 Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design Alex Gerdes, 2016 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon tripoly =

Läs mer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer Tentamen i.. TDDC30/725G63 Objektorienterad programmering i Java, datastrukturer och algoritmer Datum 2012-12-21 Tid 14-18 Provkod DAT1 Institution Institutionen för Datavetenskap (IDA) Jour Johan Janzén

Läs mer

HAND TRACKING MED DJUPKAMERA

HAND TRACKING MED DJUPKAMERA HAND TRACKING MED DJUPKAMERA ETT PROJEKT I TNM090 - SOFTWARE ENGINEERING Rasmus KARLSSON Per JOHANSSON Erik HAMMARLUND raska293@student.liu.se perjo020@student.liu.se eriha891@student.liu.se 2014-01-14

Läs mer

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-27 Idag Balanserade sökträd Splayträd Skipplistor AVL-träd AVL-träd Sökträd Invariant (för varje nod): Vänster och höger delträd har samma

Läs mer

Kristina Grundström Erik Truedsson

Kristina Grundström Erik Truedsson Av LäraMera Program AB och Leripa AB Grafik Musik Pedagogik Programmering Kristina Grundström Erik Truedsson Ann Truedsson Richard Hultgren 1 Innehållsförteckning 1 2 3... 3 Så här installerar du... 3

Läs mer

USB 3.0 till VGA externt videokort, multiskärmsadapter med USB-hubb med 1 port 1920x1200

USB 3.0 till VGA externt videokort, multiskärmsadapter med USB-hubb med 1 port 1920x1200 USB 3.0 till VGA externt videokort, multiskärmsadapter med USB-hubb med 1 port 1920x1200 Product ID: USB32VGAEH USB32VGAEH adaptern för anslutning mellan USB 3.0 och VGA gör om en USB 3.0-port till en

Läs mer

A N D E R S 2 0. En liten informationsbroschyr om RASTRERING VÄND

A N D E R S 2 0. En liten informationsbroschyr om RASTRERING VÄND A N D E R S 2 0 En liten informationsbroschyr om RASTRERING VÄND Varför används rastrering? Inom nästan all tryckeri- och skrivarteknik idag används någon form av rastrering för att göra tryckningen möjlig.

Läs mer

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik II 2014-0-27 Skrivtid: 0800 100 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg

Läs mer

Extramaterial till Matematik X

Extramaterial till Matematik X LIBER PROGRMMERING OCH DIGITL KOMPETENS Extramaterial till Matematik X NIVÅ TRE Programmering LÄRRE I den här uppgiften får du och dina elever en introduktion till programmering. Uppgiften vänder sig först

Läs mer

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden... Föreläsning 9 Intervallhalveringsmetoden Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet Procedurabstraktion Representation Bra om ni läst följande avsnitt i AS: Procedures

Läs mer

När appen startar så gör den det på en särskild sida som du bestämt ska vara Hem-sida. Du kan ändra det under Inställningar och Spara sida som Hem.

När appen startar så gör den det på en särskild sida som du bestämt ska vara Hem-sida. Du kan ändra det under Inställningar och Spara sida som Hem. Chatable Denna snabbguide går igenom det du behöver kunna för att komma igång med appen Chatable. För dig som fått appen som ett förskrivet hjälpmedel från Region Skåne finns möjlighet att få vidare utbildning

Läs mer

Mikael Bondestam Johan Isaksson. Spelprogrammering. med CDX och OpenGL

Mikael Bondestam Johan Isaksson. Spelprogrammering. med CDX och OpenGL Mikael Bondestam Johan Isaksson Spelprogrammering med CDX och OpenGL Del 2 Spel Historiskt spel... 36 7. Studsboll en sprite...37 8. Styrning med tangentbordet... 48 9. Krockar...51 10. Ljudeffekter...

Läs mer

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC (6) Facit Tentamen TDDC30 2013-06-05 1 (6) Teoretisk del 1. (3p) "Snabba frågor" Alla svar motiveras väl. a) Vad skiljer en statisk metod från en icke-statisk? (0.5p) Svar:En statisk metod är associerad till

Läs mer

Föreläsning 9 Exempel

Föreläsning 9 Exempel Föreläsning 9 Exempel Intervallhalveringsmetoden DA2001 (Föreläsning 9) Datalogi 1 Hösten 2013 1 / 24 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod DA2001 (Föreläsning 9) Datalogi

Läs mer

Ansiktsigenkänning med MATLAB

Ansiktsigenkänning med MATLAB Ansiktsigenkänning med MATLAB Avancerad bildbehandling Christoffer Dahl, Johannes Dahlgren, Semone Kallin Clarke, Michaela Ulvhammar 12/2/2012 Sammanfattning Uppgiften som gavs var att skapa ett system

Läs mer

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen? ICT LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen? Daniel Lindfors 12/9/07 dlindf@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Denna laboration

Läs mer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration

Läs mer

LABORATION 1 AVBILDNING OCH FÖRSTORING

LABORATION 1 AVBILDNING OCH FÖRSTORING LABORATION 1 AVBILDNING OCH FÖRSTORING Personnummer Namn Laborationen godkänd Datum Labhandledare 1 (6) LABORATION 1: AVBILDNING OCH FÖRSTORING Att läsa före lab: Vad är en bild och hur uppstår den? Se

Läs mer

Föreläsning 5: Grafer Del 1

Föreläsning 5: Grafer Del 1 2D1458, Problemlösning och programmering under press Föreläsning 5: Grafer Del 1 Datum: 2006-10-02 Skribent(er): Henrik Sjögren, Patrik Glas Föreläsare: Gunnar Kreitz Den här föreläsningen var den första

Läs mer

Föreläsning 11 Datastrukturer (DAT037)

Föreläsning 11 Datastrukturer (DAT037) Föreläsning 11 Datastrukturer (DAT037) Fredrik Lindblad 1 4 december 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer