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

Storlek: px
Starta visningen från sidan:

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

Transkript

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

2 Referat Ett datorprogram som renderar tredimensionell grafik i realtid måste alltid vara optimerat för snabbhet. Ett av de bästa sätten att uppnå hög hastighet i renderingen är att helt lämna bort de delar av den tredimensionella världen som inte är synliga för användaren vid en viss tidpunkt. Om tillräckliga mängder polygoner kan gallras bort tillräckligt tidigt i renderingspipelinen kan stora ökningar i prestanda uppnås. Samtidigt vill man ju alltid presentera en realistisk bild åt användaren. Denna artikel kommer att kort presentera olika tillvägagångssätt för att gallra bort dolda ytor från renderingsprocessen. ACM-klassificering I.3.3 Picture/Image Generation, I.3.7 Three-Dimensional Graphics and Realism Innehåll 1. Introduktion Problemet Grundläggande begrepp Klassiska algoritmer Gallring av bortvända ytor Gallring enligt synvolymen Oktala träd Målarens algoritm Z-buffertalgoritmen BSP-träd och portalgallring Introduktion till BSP-träd Skapande av trädet Optimeringar BSP-trädets egenskaper Problem associerade med BSP-träd Portalgallring Andra algoritmer Slutsats Referenser 12 2

3 1. Introduktion 1.1. Problemet Tänk dig ett grafikintensivt datorprogram såsom ett spel eller ett program för presentation av planerade men ännu inte uppförda byggnader och andra konstruktioner. Vi begränsar oss till sådana program som arbetar med tredimensionell grafik. Att rita ut en stor mängd tredimensionella solida eller halvgenomskinliga objekt både snabbt och visuellt realistiskt är ett stort problem för de här programmen och mycket tid och möda har satts ned på att tackla problemen. I takt med att programmen utvecklas och ökar i komplexitet ökar även kraven på effektiv rendering. I princip är prestandakraven bottenlösa då det gäller tredimensionell datorgrafik, det är till exempel alltid möjligt att lägga till fler och mer detaljerade objekt. Därför blir frågan om snabbhet i renderingen aldrig inaktuell Grundläggande begrepp En polygon är en detsamma som en avgränsad yta. Matematiskt sett kan ju en polygon ha hur många hörn som helst (därav namnet) men inom den tredimensionella grafikens område rör man sig nästan uteslutande med trianglar därför att tre punkter alltid definierar ett plan och polygonen de spänner upp alltid är konvex. Ett 3d-objekt är en samling polygoner. De flesta 3d-objekt skapas av en artist på förhand och importeras till programmet under körning men det går också att skapa 3dobjekt i realtid på matematisk väg eller utgående från till exempel en gråtonsbild, som anger vilket y-värde en given punkt skall ha. Slutresultatet är ändå oftast detsamma, ett konvext tredimensionellt objekt. Med synvolymen avser man den del av den tredimensionella datorvärlden användaren för tillfället kan se. I praktiken avgränsas synvolymen av sex plan; ett främre (som kan föreställas vara skärmens ruta), ett bakre samt fyra plan som man kan tänka sig går från ögat och genom skärmens kanter. Synvolymen blir alltså en pyramid som skärs av det främre och bakre planet (i praktiken använder man inte alltid ett bakre plan i till exempel mycket enkla världar). Normalen till en polygon är den normaliserade vektorprodukten av två av de tre kanterna. Enormt viktig för att exempelvis bestämma om en given polygon vetter bort från användarens öga eller om den är synlig. Normalen fås alltså genom vektorprodukten; skalärprodukten är ett annat mycket använt matematiskt verktyg. OpenGL och Direct3D är två så kallade API:n (Application Programming Interface) för tredimensionell grafik. Tack vare sådana här API:n behöver man inte bry sig om 3

4 de riktigt blodigaste detaljerna vad gäller renderingen utan kan koncentrera sig på själva ändamålet med programmet. OpenGL är som namnet avslöjar en öppen standard som har ett brett understöd inom industrin. OpenGL är därför portabelt till många olika plattformar medan Direct3D är Microsofts eget påhitt som fungerar endast på Windows-plattformen samt i Microsofts spelkonsol, X-Box. Oberoende av vilken API man använder är algoritmerna desamma, så vi skall inte öda mera tid på att jämföra dem. 2. Klassiska algoritmer Problemet med gallring av dolda ytor i en tredimensionell scen är mycket välstuderat inom datorgrafikens område [1]. Till följande tittar vi på några algoritmer som alltid brukar nämnas i sammanhanget. 2.1 Gallring av bortvända ytor Tänk dig en låda som ligger på golvet en bit bort. Du ser framsidan, locket och kanske lite av ena sidan, däremot så är botten, baksidan och så vidare bortvända från dig och således osynliga. Algoritmen för gallring av bortvända ytor bygger på observationen att om alla objekt i världen är slutna (d.v.s. konvexa) så är de polygoner som är vända bort från åskådaren inte synliga. Att alla objekt är slutna betyder att det inte får finnas några glapp eller hål mellan objektens polygoner. Kontrollen huruvida en given polygon är bortvänd från betraktarens öga görs enkelt genom att ta skalärprodukten mellan vektorn från ögat till polygonen och polygonens normalvektor. Om skalärprodukten är negativ pekar polygonen bort från ögat och kan genast gallras bort. Denna algoritm klarar av att gallra bort ungefär hälften av alla polygoner och är användbar som en del av en större helhet. Algoritmen, som på engelska kallas backface culling, finns numera ofta inbyggd i grafikhårdvaran och är en integrerad del av API:n som Direct3D och OpenGL Gallring enligt synvolymen En ganska naturlig lösning på problemet för gallring av osynliga ytor och objekt är att ta bort de delar av scenen som faller utanför betraktarens synvolym. Synvolymen beskrevs ovan. Algoritmen går ut på att kontrollera huruvida en given polygon befinner sig helt och hållet utanför synvolymen; om så är fallet kan polygonen gallras bort. Befinner sig en polygon bara delvis innanför synvolymen kan den osynliga delen klippas bort och avfärdas. Algoritmen kan effektiviseras genom att använda minimala uppspännande volymer för 3d-objekten i det inledande skedet av algoritmen. 4

5 Denna algoritm är av O(n)-komplexitet, det vill säga tiden ökar linjärt med antalet polygoner i scenen. Lyckligtvis kan vi genom att modifiera algoritmen uppnå betydligt högre prestandanivåer, främst genom att dela upp den tredimensionella världen i mindre delar Oktala träd Med hjälp av oktala träd kan man dela upp en tredimensionell rymd i mindre delar [2]. I kombination med gallring enligt synfältet kan man uppnå rätt stora prestandaökningar med hjälp av oktala träd. De kan också användas för mycket annat, exempelvis för att hantera kollisioner mellan objekt. Ett oktalt träd har sin början i en osynlig kub som man tänker sig omsluter hela den tredimensionella datorvärlden. Kuben är riktad enligt världens x-, y- och z-axlar, det vill säga kubens övre sida motsvarar världens positiva y-riktning och så vidare. Denna kub delas sedan upp i åtta mindre delar som bildar åtta nya noder i trädet. Såhär fortsätter man tills hela världen är uppdelad och alla världens polygoner finns i en viss nod i det oktala trädet. Man försöker alltid dela upp en nodkub i mindre delar, men om en subnod inte innehåller några polygoner är det ju ingen mening att vidare dela upp den delen av rymden. Vanligtvis har man en gräns för hur många, eller rättare sagt hur få, polygoner en nodkub skall innehålla för att man skall avbryta uppdelningen. Det finns även andra metoder, till exempel kan man ha en övre gräns för antalet noder. Själva gallringen går till så, att om en viss nod i det oktala trädet inte finns i synfältet så kan alla subnoder till den också gallras bort. Det är ganska enkelt att implementera oktala träd om gallring enligt synfältet redan är i användning. 5

6 2.3. Målarens algoritm Målarens algoritm representerar kanske den enklaste och mest naiva lösningen till visibilitetsproblemet. Man tänker sig att datorprogrammet agerar på samma sätt som en oljemålare kunde tänkas göra: bakgrunden ritas först och förgrunden ritas ovanpå denna. Det här innebär ju en hel del onödigt målande för en komplex scen, då ju objekten i förgrunden täcker de i bakgrunden. I ett datorprogram tillämpas målarens algoritm genom att alla polygoner sorteras enligt deras z-värde (avståndet till användarens öga). Polygonera ritas sedan ut i stigande z-ordning. Ett av problemen med algoritmen är att det inte alltid går att avgöra vilken polygon som skall ritas först; ett exempel på en typisk problemsituation ges i figur 1. Om två polygoner skär varandra uppstår också problem. Utöver detta visar sig målarens algoritm vara ganska långsam eftersom många polygoner som är blockerade från synfältet ändå ritas ut Z-buffertalgoritmen En enkel metod för att se till att rita bara de polygoner och delar av polygoner som ligger närmast användarens öga är z-buffertalgoritmen. Algoritmen bygger på att man förutom färgbufferten, som är lika stor som skärmen och innehåller information om färgen på den färdigt renderade bildens enskilda bildpunkter, även har en z-buffert som lagrar de enskilda bildpunkternas z-värde, det vill säga avstånd från användarens öga. När en ny bildpunkt skall ritas ut på skärmen görs en kontroll huruvida bildpunktens z-värde är större en det värde som från tidigare finns lagrat i z-bufferten på just den bildpunktens plats. Har den nya bildpunkten ett större z-värde överförs bildpunktens färginformation till färgbufferten och och dess z-värde skrivs över z-buffertens lagrade värde för den punkten. Ett mindre z-värde än det som färdigt finns lagrat i z- bufferten indikerar att bildpunkten ligger längre bort än den som redan ritats ut på den platsen och bildpunkten avfärdas. För varje uppdatering av skärmen töms Z-bufferten, det vill säga varje element i bufferten initialiseras till ett z-värde som representerar synfältets bortre plan. Denna tömning kan jämställas med tömningen av färgbufferten; vanligtvis kastar man ut färgbuffertens innehåll i samband med uppdateringen och ritar sedan en ny bild från början. Z-buffertalgoritmen är väldigt enkel, har en effektivitet på O(n) (där n representerar antalet polygoner som skall ritas ut) och fungerar för alla primitiver som man kan beräkna ett z-värde för. Det är värt att notera att denna algoritm tillåter polygonerna att ritas ut i vilken ordning som helst, vilket gör den ännu mer populär. För genomskinliga objekt är det ändå nödvändigt att rita ut polygonerna i strikt bak-till-framordning. 6

7 Algoritmen är enkel att implementera i hårdvara och används ofta som komplement till mer avancerade algoritmer i slutsteget av renderingspipelinen. Problemet med Z- buffertalgoritmen är att det i komplexa scener kan hända sig att en enskild bildpunkt blir utritad många gånger i onödan, då polygoner ligger bakom varandra till exempel. Man kan exempelvis tänka sig en situation där man i synfältet har tio kuber på rad bakom varandra i mitten av skärmen; om kuberna ritas ut med början längst bak kommer bildpunkterna i mitten av skärmen att ritas ut nio gånger innan kuben längst fram (den som i verkligheten är synlig) ritas ut. Z-komplexiteten blir alltså orimligt hög. 3. BSP-träd och portalgallring 3.1. Introduktion till BSP-träd Ett BSP (Binary Space Partitioning )-träd är egentligen inget mer än ytterligare ett sätt att partitionera rymden på. Två huvudvarianter finns; i den första är trädet riktat enligt den tredimensionella världens axlar medan den andra är baserad på scenens polygoner. Den förra varianten är rätt lik de oktala träden som diskuterades i och vi skall här koncentrera oss på den senare versionen. Denna polygonbaserade variant beskrevs först i [3] Skapande av trädet En polygon i scenen väljs som trädets rot. Det plan som denna polygon entydigt definierar tänker man sig dela upp scenen i två delar. För båda noderna som uppstår upprepas proceduren; en ny polygon väljs som uppdelare och subrymden delas i två delar. Användande sig av rekursion fortsätter man tills alla polygoner finns i trädet. Se exempelscenen i figur 2. 7

8 Det är värt att notera att det finns flera varianter av BSP-träd. En variant lagrar till exempel polygonerna tillsammans med de uppdelande planen medan en annan lagrar polygonerna i de icke-solida löven Optimeringar Det är inte alldeles lätt att välja rätt polygon som uppdelare vid varje nod i BSPträdet. Det värsta man kan göra är att välja en polygon vars plan delar upp alla andra polygoner i två delar; plötsligt har vi fördubblat antalet polygoner i scenen! Resultatet av sådana här dåliga beslut är ett BSP-träd som visserligen är korrekt men som är mycket större än vad som är nödvändigt. Liksom hos andra trädstrukturer finns det en del olika egenskaper man kan välja att sätta tyngdpunkten för optimeringen på. Man kan till exempel välja att försöka balansera trädet så bra som möjligt och på så sätt uppnå ett minimalt djup hos trädet. Man kan också försöka se till att volymerna på båda sidorna om de uppdelande planen blir ungefär lika stora så att vi inte har stora volymskillnader hos noder som befinner sig på samma djup. En annan önskvärd egenskap hos BSP-träd är att de uppdelande planen är riktade enligt den tredimensionella världens axlar, något som kan underlätta då man traverserar trädet. Den viktigaste faktorn som man kan optimera vid skapandet av ett BSP-träd är dock antalet uppdelande plan som delar andra polygoner. Lyckas man minimera detta får man ett träd med minimalt antal polygoner, vilket rimligtvis är det träd som är snabbast att rita ut. Tyvärr är det svårt att uppnå en perfekt lösning på problemet; man borde egentligen pröva alla tänkbara kombinationer av uppdelare, ett problem med komplexiteten n!. Detta är naturligtvis inte tillämpbart i en tredimensionell värld som kan innehålla t.o.m. hundratusentals polygoner. Ett populärt sätt att approximera den perfekta lösningen är att i varje steg välja som uppdelare den polygon som delar upp det minsta antalet andra polygoner just i det steget BSP-trädets egenskaper Polygonbaserade BSP-träd har vissa goda egenskaper, till exempel kan man enkelt traversera trädet börjande från polygonerna längst bort och röra sig mot polygonerna som ligger närmast användaren. Man kollar först på vilken sida av rotplanet blickpunkten (kameran) befinner sig, vilket inte är svårare än en enkel jämförelse mellan en punkt och ett plan. Sedan går man över till den sida av rotplanet som befinner sig längre bort och upprepar proceduren rekursivt. På det här sättet uppnår man en strikt bak-till-fram-ordning bland polygonerna och kan utnyttja målarens algoritm. BSP-träd kan också utnyttjas tillsammans med gallring enligt synvolymen (se sektion 2.2). Man kollar helt enkelt om planet som utgörs av trädets rotnod skär synvolymen; om inte så befinner sig synvolymen helt och hållet på ena sidan av rotnoden och hela den bortre delen av trädet kan omedelbart gallras bort. Återigen använder man sig av 8

9 rekursion för att komma fram till vilken del av BSP-trädet som finns i synvolymen och därför bör ritas ut. Man kan också med fördel använda BSP-träd vid till exempel kollisionshantering. Trädet har förvånansvärt många tillämpningsområden inom den tredimensionella grafikens område Problem associerade med BSP-träd Det största problemet är naturligtvis att det är så kostsamt att skapa ett BSP-träd. På grund av detta lämpar sig BSP-träden i princip bara för statiska världar. Man kan dock med hjälp av olika metoder kombinera den statiska världen, representerad av ett BSPträd, med dynamiska objekt som rör sig inne i världen, till exempel med hjälp av Z- bufferten. Ett annat problem med BSP-träd är att Z-komplexiteten kan bli väldigt hög för komplexa scener. En BSP-implementation som använder sig av målarens algoritm, det vill säga traverserar BSP-trädet bak-till-fram och ritar ut polygonerna längs vägen, kan i värsta fall rita över samma bildpunkt många gånger. Detta är acceptabelt för enkla scener men inte för de komplexa världar som används i till exempel tredimensionella datorspel. En lösning på detta problem är att man för varje cell i ett cellbaserat BSPträd, där polygonerna är lagrade i löven (d.v.s. cellerna), kalkylerar dess PVS (Potentially Visible Set, potentiellt synliga mängd). Denna mängd representerar de andra celler som faktiskt är synliga från varje cell i BSP-trädet och lagras i en datastruktur associerad med cellen. När man vill rita ut världen sedd från en viss cell i BSP-trädet gallrar man först bort de av PVS:ens celler som befinner sig utanför synvolymen och sedan ritar man ut de celler som ligger både i PVS:en och i synvolymen. Problemet med detta tillvägagångssätt är att PVS-algoritmen är konservativ, det vill säga den anger alltid antalet synliga celler i överkant. I praktiken ritar man alltid ut omkring det dubbla antalet polygoner jämfört med vad som är strikt nödvändigt. Detta beror på att det i PVS:en för kamerans cell ingår alla andra celler som är synliga från någon punkt i kameracellen, inte bara kamerans punkt. Att kalkylera en PVS för varje cell är också rätt tidskrävande. En analytisk metod för att åstadkomma detta presenteras i [4] Portalgallring En något nyare variant av cellbaserad gallring är så kallad portalgallring, som är användbar i arkitektoniska modeller. Det finns en mängd olika algoritmer för portalgallring men gemensamt för dem alla är insikten att väggarna i en arkitektonisk modell ofta blockerar många andra delar av modellen, sett från en cell som utgörs av till exempel en korridor eller ett rum. Fönster och dörrar som sammanbinder näraliggande celler kallas portaler. Alla objekt som finns i en cell samt cellens väggar lagras i en 9

10 datastruktur som hör ihop med cellen. I samma datastruktur lagrar vi också information om näraliggande celler och portalerna som leder till dem. En potentiellt synlig mängd (PVS) kan kalkyleras för varje cell. För detta ändamål finns det ett antal olika algoritmer som är mer eller mindre bra. En annan metod, som beskrivs av Luebke och Georges i [5], kräver nästan inget förarbete alls, bara den datastruktur som beskrevs ovan. En enkel rekursiv algoritm används för att rendera scenen: 1. Hitta cellen V där användaren (ögat, kameran) befinner sig. 2. Låt P vara en rektangel som till att börja med är lika stor som skärmen. 3. Rita ut cellen V:s geometri, gallra enligt volymen som utgår från ögat och korsar rektangeln P:s kanter. 4. Gå genom rekursion till portalerna för cellerna intill cellen V. För varje portal, projicera portalen på skärmen och hitta den x-y-rektangel som motsvarar projektionen. Kalkylera snittet mellan rektangeln och P. 5. För varje snitt: om snittet är tomt betyder det att cellen som finns på andra sidan den portalen är osynlig och kan gallras bort. Om snittet inte är tomt kan den andra cellens innehåll gallras bort enligt den synvolym som utgår från ögat och genom det rektangulära snittet. 10

11 6. Om snittet inte var tomt så kan den intilliggande cellens grannar vara synliga. Hoppa alltså till steg 3 (använd snittrektangeln som P). Redan utritade objekt kan märkas så att de inte ritas en gång till. Denna algoritm illustreras i figur 3, där synvolymen stegvis förminskas. 4. Andra algoritmer Gallring av dolda ytor är ett område inom den tredimensionella grafiken där forskningen är rätt intensiv. Härav följer att det finns en stor mängd algoritmer som alla har sina olika starka och svaga sidor. De algoritmer som hittills presenterats är bara toppen av isberget. En intressant algoritm som bygger på hierarkisk visibilitet (HV) presenteras i [6]. Den tredimensionella miljön representeras av ett oktalt träd (se sektion ). Bilden ritas sedan ut i ungefärlig fram-till-bak-ordning (noderna närmast ögat behandlas först). Noder som faller utanför synvolymen gallras bort direkt. Projiceringen av en nod jämförs mot den hierarkiska z-bufferten. Idén är att om en nods framsida har högre z-värden än de som finns i den hierarkiska z-bufferten så kan noden (tillsammans med alla subnoder) gallras bort. En detaljerad beskrivning av algoritmen skulle tyvärr bli alltför lång för denna uppsats. HV-algoritmen kan modifieras för att ta tillvara på en egenskap som återfinns i väldigt många datorprogram som rör sig i tredimensionella miljöer: tidskoherens. Man kan anta att de noder som är synliga vid någon viss uppritning av bilden antagligen också är synliga vid nästa uppritning (frame-to-frame coherency). Noder som visat sig vara synliga vid den förra uppritningen av scenen ritas ut normalt med hjälp av Z- bufferten. Z-bufferten läses sedan in från hårdvaran och en hierarkisk Z-buffert byggs upp utgående från den. HV-algoritmen fyller sedan ut tomrummen i scenen. En annan algoritm som är värd att noteras är Hierarchial Occlusion Map (HOM)- algoritmen [7]. Denna algoritm är i likhet med HV-algoritmen bildbaserad, det vill säga den använder sig av den utritade bilden för att bestämma vilka objekt som är dolda. I korthet går algoritmen ut på att några objekt väljs som ockluderare (naturliga val är stora objekt som ligger nära ögat). Dessa renderas till en hierarkisk ockluderingskarta. Denna karta kan användas för att bestämma om något annat objekt är synligt eller inte. 5. Slutsats Som vi har sett finns det ett otal olika tillvägagångssätt för att lösa ett till synes rätt enkelt problem; rendera så få polygoner som möjligt utan att realismen blir lidande. Många algoritmer blir aldrig implementerade i kommersiella produkter. Det är dock 11

12 värt att tänka på att detta problem är något man helt enkelt är tvungen att ta itu med om man vill göra ett datorprogram som renderar tredimensionell grafik. Därför är forskningen på det här området aldrig ointressant. 6. Referenser [1] Foley, J. D., A. van Dam, S. K. Feiner, J. H. Hughes: Computer Graphics Principles and Practice, Second Edition, Addison-Wesley, [2] Ayala, D., P. Brunet, R. Juan, I. Navazo: Object representation by means of nonminimal division quadtrees and octrees, ACM Transactions on Graphics, volym 4 nummer 1, januari [3] Fuchs, H., Z. M. Kedem, B. F. Naylor: On Visible Surface Generation by A Priori Tree Structures, Computer Graphics (SIGGRAPH 80 Proceedings), vol. 14, nummer 3, sid , juli [4] Teller, Seth, Visibility Computations in Densely Occluded Polyhedral Environments, FD-avhandling ( University of California at Berkeley, [5] Luebke, David P., Chris Georges, Portals and Mirrors: Simple, Fast Evaluation of Potentially Visible Sets, Proceedings 1995 Symposium on Interactive 3D Graphics, sid , april [6] Greene, Ned, Michael Kass, Gavin Miller, Hierarchial Z-Buffer Visibility, Computer Graphics (SIGGRAPH 93 Proceedings), sid , augusti [7] Zhang, Hansong, Effective Occlusion Culling for the Interactive Display of Arbitrary Models, FD-avhandling ( Department of Computer Science, University of North Carolina at Chapel Hill,

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

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

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

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

Läs mer

Inledning. Kapitel 1. 1.1 Bakgrund. 1.2 Syfte

Inledning. Kapitel 1. 1.1 Bakgrund. 1.2 Syfte Sammanfattning Vi har i kursen Modelleringsprojekt TNM085 valt att simulera ett geléobjekt i form av en kub. Denna består av masspunkter som är sammankopplade med tre olika typer av fjädrar med olika parametrar.

Läs mer

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)

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) Binära träd Algoritmer och Datastrukturer Markus Saers markus.saers@lingfil.uu.se Upplägg Binära träd (9) Binära sökträd (0.) Träd Många botaniska termer Träd, rot, löv, gren, Trädets rot kan ha ett antal

Läs mer

ATT UPPTÄCKA DOLDA OBJEKT I SPEL

ATT UPPTÄCKA DOLDA OBJEKT I SPEL Malskapada v Henrik ATT UPPTÄCKA DOLDA OBJEKT I SPEL En undersökning av occlusion culling och dess påverkan i spelscener TO DETECT HIDDEN OBJECTS IN GAMES An analysis of occlusion culling and its affect

Läs mer

Observera också att det inte går att både se kanten på fönstret och det där ute tydligt samtidigt.

Observera också att det inte går att både se kanten på fönstret och det där ute tydligt samtidigt. Om förstoringsglaset Du kan göra mycket med bara ett förstoringsglas! I många sammanhang i det dagliga livet förekommer linser. Den vanligast förekommande typen är den konvexa linsen, den kallas också

Läs mer

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

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

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

Genetisk programmering i Othello

Genetisk programmering i Othello LINKÖPINGS UNIVERSITET Första versionen Fördjupningsuppgift i kursen 729G11 2009-10-09 Genetisk programmering i Othello Kerstin Johansson kerjo104@student.liu.se Innehållsförteckning 1. Inledning... 1

Läs mer

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation Innehåll Föreläsning 11 Trie Sökträd Trie och Sökträd 356 357 Trie Ytterligare en variant av träd. Vi har tidigare sett: Oordnat träd där barnen till en nod bildar en mängd Ordnat träd där barnen till

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

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

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

Programkonstruktion och. Datastrukturer

Programkonstruktion och. Datastrukturer Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (Listor, Träd, Sökträd och AVL-träd) Elias Castegren elias.castegren.7381@student.uu.se Datastrukturer Vad är en datastruktur?

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

Steg 1 Klipp ut de figurer du behöver! Steg 2 Bygg din rymdraket! Matematikuppgift 1

Steg 1 Klipp ut de figurer du behöver! Steg 2 Bygg din rymdraket! Matematikuppgift 1 Matematikuppgift 1 Rymdraketen - Nivå 1 Nu ska du bygga en rymdraket med hjälp av geometriska figurer. Det du måste börja med är att klippa ut de geometriska figurerna som du behöver för att bygga ihop

Läs mer

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann Marco Kuhlmann 1 En graf är en struktur av prickar förbundna med streck. Ett tidsenligt exempel på en sådan struktur är ett social nätverk, där prickarna motsvarar personer och en streck mellan två prickar

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

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

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

Om plana och planära grafer

Om plana och planära grafer KTH Matematik Bengt Ek April 2006 Material till kursen 5B1118 Diskret matematik för CL3: Om plana och planära grafer I många sammanhang (t.ex. vid konstruktion av elektriska kretsar) är det intressant

Läs mer

4-4 Parallellogrammer Namn:..

4-4 Parallellogrammer Namn:.. 4-4 Parallellogrammer Namn:.. Inledning Hittills har du arbetat bl.a. med linjer och vinklar. En linje är ju någonting som bara har en dimension, längd. Men när två linjer skär varandra och det bildas

Läs mer

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn Träd allmänt Träd allmänt Ett generellt träd är Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn där t1,..., tn i sin tur är träd och kallas subträd, vars rotnoder kallas

Läs mer

Tal i bråkform. Kapitlet behandlar. Att förstå tal

Tal i bråkform. Kapitlet behandlar. Att förstå tal Tal i bråkform Kapitlet behandlar Test Användning av hälften och fjärdedel 2 Representation i bråkform av del av antal och av del av helhet 3, Bråkform i vardagssituationer Stambråk, bråkuttryck med 1

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

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

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

Trädstrukturer och grafer

Trädstrukturer och grafer Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer

Läs mer

Ma7-Per: Geometri. Det tredje arbetsområdet handlar om geometri.

Ma7-Per: Geometri. Det tredje arbetsområdet handlar om geometri. Ma7-Per: Geometri Det tredje arbetsområdet handlar om geometri. Syftet med undervisningen är att du ska utveckla din förmåga att: - formulera och lösa problem med hjälp av matematik samt värdera valda

Läs mer

729G04 - Diskret matematik. Lektion 4

729G04 - Diskret matematik. Lektion 4 729G04 - Diskret matematik. Lektion 4 1 Lösningsförslag 1.1 Vägar, stigar och annat 1. Vi ges den oriktade grafen G=(V,E), V = {a, b, c, d, f, g, h, i, j}, E = {{a, b}, {b, c}, {a, c}, {f, g}, {c, d},

Läs mer

Magnus Nielsen, IDA, Linköpings universitet

Magnus Nielsen, IDA, Linköpings universitet Föreläsning 7 Introduktion till sortering TDDC91,TDDE22,725G97: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 24 september 2018 Magnus Nielsen, IDA, Linköpings universitet 7.1 1

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

Ännu mera träd: 2-3-träd, B-träd, rödsvarta träd, träd Weiss, avsnitt 4.7, 11.5, 12.2, etc.

Ännu mera träd: 2-3-träd, B-träd, rödsvarta träd, träd Weiss, avsnitt 4.7, 11.5, 12.2, etc. Ännu mera träd: 2-3-träd, B-träd, rödsvarta träd, 2-3-4-träd Weiss, avsnitt 4.7, 11.5, 12.2, etc. Peter Ljunglöf DAT036, Datastrukturer 30 nov 2012 1 2-3-träd [inte i kursboken] Ett 2-3-träd har två sorters

Läs mer

Koordinatsystem och Navigation

Koordinatsystem och Navigation 2D vs 3D VS Skillnaden mellan 2D och 3D må verka ganska självklar men ibland kan det uppkomma missförstånd kring detta. Vi refererar oftast på 3D som datorgenererad grafik (CG=Computer Graphics) vilket

Läs mer

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard OpenGL Avalanche Studios Sveriges ledande oberoende spelutvecklare Fokus på egenutvecklade IPn Finns på Söder i Stockholm ~6 anställda Just Cause för PS2, PC, XBox, och XBox 36 släpptes 26 Gustav Taxén

Läs mer

Optimalitetsvillkor. Optimum? Matematisk notation. Optimum? Definition. Definition

Optimalitetsvillkor. Optimum? Matematisk notation. Optimum? Definition. Definition Optimum? När man har formulerat sin optimeringsmodell vill man lösa den Dvs finna en optimal lösning, x, till modellen Nästan alltid: Sökmetoder: Stå i en punkt, gå till en annan (bättre Upprepa, tills

Läs mer

Omtentamen TNM077, 3D datorgrafik och animering (samt även TNM008, 3D datorgrafik och VR)

Omtentamen TNM077, 3D datorgrafik och animering (samt även TNM008, 3D datorgrafik och VR) Omtentamen TNM077, 3D datorgrafik och animering (samt även TNM008, 3D datorgrafik och VR) Grupp: MT2 och NO2MT Datum: Fredagen den 23 april 2004 Tid: 14.00-18.00 Hjälpmedel: inga Ansvarig lärare: Stefan

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

Kv. Ogräset. Martin Stenmarck, janst942@student.liu.se

Kv. Ogräset. Martin Stenmarck, janst942@student.liu.se Kv. Ogräset Martin Stenmarck, janst942@student.liu.se Fig 1. Kv. Ogräset. Bakgrund Kvarteret Ogräset är en samling av tre bostadsrättshus i Gottfridsberg, Linköping. Dessa tre hus håller på att byggas

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

Tentamen, Algoritmer och datastrukturer

Tentamen, Algoritmer och datastrukturer UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och

Läs mer

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum: Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60 Superscalar vs VLIW Cornelia Kloth IDA2 Inlämningsdatum: 2018-12-05 Abstract Rapporten handlar om två tekniker inom multiple issue processorer

Läs mer

Tentamen TNM077, 3D datorgrafik och animering

Tentamen TNM077, 3D datorgrafik och animering Tentamen TNM077, 3D datorgrafik och animering Grupp: MT2 och NO2MT Datum: Lördagen den 13 mars 2004 Tid: 1400-1800 Hjälpmedel: inga Ansvarig lärare: Stefan Gustavson, ITN, 011-363191 Anvisningar Denna

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5 Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5? FORTSÄTTNING TRÄD RECAP (förra föreläsningen) RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta

Läs mer

36 träfigurer (20 träfigurer och 9 halvfigurer som kan stå i spår, 7 magnetiska träbitar)

36 träfigurer (20 träfigurer och 9 halvfigurer som kan stå i spår, 7 magnetiska träbitar) Art.nr. 21006 ToPoLoGo "Visio" Innehåll: 1 trälåda med en spegelsida och en magnetisk sida Basbräda (med räfflade slitsar/räfflat rutnät) 36 träfigurer (20 träfigurer och 9 halvfigurer som kan stå i spår,

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

Föreläsningsanteckningar S6 Grafteori

Föreläsningsanteckningar S6 Grafteori HT 009 Tobias Wrigstad Introduktion till grafteori På den här föreläsningen tar vi upp elementär grafteori och försöker introducera termer och begrepp som blir viktigare i senare kurser. Subjektivt tycker

Läs mer

Elevens övningsark Förnamn

Elevens övningsark Förnamn 1 Magnetiska poler Övningens syfte: Att förstå hur positiva och negativa magnetiska poler har bortstötande krafter och tilldragande krafter 1. Nämn fem saker som en magnet drar till sig. 2. Vad kallar

Läs mer

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer LUNDS UNIVERSITET Parallell exekvering av Float32 och INT32 operationer Samuel Molin Kursansvarig: Erik Larsson Datum 2018-12-05 Referat Grafikkort utför många liknande instruktioner parallellt då typiska

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

8. TRE- OCH FYRDUBBEL HUVUDBELYSNING

8. TRE- OCH FYRDUBBEL HUVUDBELYSNING 8. TRE- OCH FYRDUBBEL HUVUDBELYSNING TREDUBBEL HUVUDBELYSNING Letar du efter ett mjukt ljus med en del sting i? Du har kommit till rätt kapitel. Den här tekniken liknar på sätt och vis den med två ljuskällor

Läs mer

Föreläsning 13 och 14: Binära träd

Föreläsning 13 och 14: Binära träd Föreläsning 13 och 14: Binära träd o Binärträd och allmänna träd o Rekursiva tankar för binärträd o Binära sökträd Binärträd och allmänna träd Stack och kö är två viktiga datastrukturer man kan bygga av

Läs mer

Pressrelease Artes Industriambassadör 031115. Mer realistiska skuggor i datorspel och virtual reality-applikationer

Pressrelease Artes Industriambassadör 031115. Mer realistiska skuggor i datorspel och virtual reality-applikationer Anita Andler Pressrelease Artes Industriambassadör 031115 Mer realistiska skuggor i datorspel och virtual reality-applikationer Ulf Assarsson, doktorand vid Chalmers tekniska högskola lade den 10 oktober

Läs mer

Hemtenta i Grafik och Interaktionsprogrammering Martin Berglund Uppgift 1 Föreläsning 1 Föreläsning 2 föreläsning 3 föreläsning 4

Hemtenta i Grafik och Interaktionsprogrammering Martin Berglund Uppgift 1 Föreläsning 1 Föreläsning 2 föreläsning 3 föreläsning 4 Hemtenta i Grafik och Interaktionsprogrammering Martin Berglund 830130-0078 Uppgift 1 Jag har länge och väl funderat över på vilket sätt som vore bäst att beskriva vad jag har lärt mig under kursens gång

Läs mer

Vektorkartor för mobila terminaler

Vektorkartor för mobila terminaler Vektorkartor för mobila terminaler Magnus Janlert 3 juni 2004 Introduktion Externt examensarbete, utfört VT2003 Visualiseringscentrum, c:a tio anställda, en del av Lantmäteriet Handledare: Jerry Eriksson

Läs mer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer Föreläsning 5: Giriga algoritmer Kruskals och Prims algoritmer Spännande träd: Om G är en sammanhängande graf så är ett spännande träd ett träd som innehåller alla noder i V (G). Viantarattviharkantvikterw(e)

Läs mer

Bézierkurvor och parametriska objektrepresentationer

Bézierkurvor och parametriska objektrepresentationer Sidan 1 av 11 Inledning Detta är en kort sammanfattning av teorimaterialet som år 2004 ingår i examinationen i kursen TNM077 3D-grafik och animering som ges vid Linköpings tekniska universitet på Campus

Läs mer

Övningshäfte 2: Induktion och rekursion

Övningshäfte 2: Induktion och rekursion GÖTEBORGS UNIVERSITET MATEMATIK 1, MMG200, HT2017 INLEDANDE ALGEBRA Övningshäfte 2: Induktion och rekursion Övning D Syftet är att öva förmågan att utgående från enkla samband, aritmetiska och geometriska,

Läs mer

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4 Träd, binära träd och sökträd Koffman & Wolfgang kapitel 6, avsnitt 1 4 1 Träd Träd är ickelinjära och hierarkiska: i motsats till listor och fält en trädnod kan ha flera efterföljare ( barn ) men bara

Läs mer

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret 2014-2015. Lektion 3

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret 2014-2015. Lektion 3 Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret 014-015 Lektion 3 Denna lektion är temat hur man effektivt ska organisera den data som en algoritm använder för att åtkomsten till datan

Läs mer

Giraffen & ballongen

Giraffen & ballongen Giraffen & ballongen presentation av koncept Idén för kortfilmen utvecklades från ordspråket katt åt ballong, blev blåst som sedan vidareutvecklades i skisser och slutligen resulterade i en giraff som

Läs mer

FÖRELÄSNING 11 DATALOGI I

FÖRELÄSNING 11 DATALOGI I Föreläsning I07 FÖRELÄSNING DATALOGI I Grafer Beatrice Åkerblom beatrice@dsv.su.se Institutionen för Data- och Systemvetenskap SU/KTH Föreläsning I07 Läsanvisningar Michael Main Data Structures & Other

Läs mer

FMCK Malmö Boris Magnusson. Markering av Endurobana

FMCK Malmö Boris Magnusson. Markering av Endurobana FMCK Malmö Boris Magnusson Markering av Endurobana Markering av en Endurobana finns beskrivet i tävlingsreglementet, paragrafer 4.16-17-18 (se nedan) men dessa är ganska kortfattade. Detta PM är ett försöka

Läs mer

Processuell generering av oändliga spelvärldar

Processuell generering av oändliga spelvärldar Södertörns högskola Institutionen för naturvetenskap, miljö och teknik Kandidatuppsats 15 hp Medieteknik höstterminen 2013 Processuell generering av oändliga spelvärldar Praktiska problem och optimering

Läs mer

TATM79: Föreläsning 2 Absolutbelopp, summor och binomialkoefficienter

TATM79: Föreläsning 2 Absolutbelopp, summor och binomialkoefficienter TATM79: Föreläsning Absolutbelopp, summor och binomialkoefficienter Johan Thim 15 augusti 015 1 Absolutbelopp Absolutbelopp Definition. För varje reellt x definieras absolutbeloppet x enligt { x, x 0 x

Läs mer

SMULTRON. Fredrik Li, Ester, Anders, Jessica, Philip. Malmö Högskola Konst Kultur Kommunikation OOP5 - Mobile Applications IDK 05 - April/Maj 2007

SMULTRON. Fredrik Li, Ester, Anders, Jessica, Philip. Malmö Högskola Konst Kultur Kommunikation OOP5 - Mobile Applications IDK 05 - April/Maj 2007 SMULTRON av Fredrik Li, Ester, Anders, Jessica, Philip Malmö Högskola Konst Kultur Kommunikation OOP5 - Mobile Applications IDK 05 - April/Maj 2007 - När man har turen att hitta en plats där man trivs

Läs mer

Mälardalens högskola

Mälardalens högskola Teknisk rapportskrivning - en kortfattad handledning (Version 1.2) Mälardalens högskola Institutionen för datateknik (IDt) Thomas Larsson 10 september 1998 Västerås Sammanfattning En mycket viktig del

Läs mer

Moment Viktiga exempel Övningsuppgifter

Moment Viktiga exempel Övningsuppgifter Moment Viktiga exempel Övningsuppgifter Inga Inga Inga Fler exempel på optimering Exempel 1. Utifrån en rektangulär pappskiva med bredden 7 dm och längden 11 dm, vill man åstadkomma en kartong utan lock,

Läs mer

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.

Läs mer

Ekvivalensrelationer

Ekvivalensrelationer Abstrakt datatyp för disjunkta mängder Vi skall presentera en abstrakt datatyp för att representera disjunkta mängder Kan bl.a. användas för att lösa ekvivalensproblemet avgör om två godtyckliga element

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

SF2715 Tillämpad kombinatorik, 6hp

SF2715 Tillämpad kombinatorik, 6hp SF75 Tillämpad kombinatorik, 6hp Fortsättningskurs i matematik 7 mars 7 maj 009 Kursledare: Jakob Jonsson Upplägg 6 hp = p enligt gamla systemet 8 dubbeltimmar med teori och problemlösning Kursbok och

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

Föreläsning 7. Träd och binära sökträd

Föreläsning 7. Träd och binära sökträd Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Läsanvisningar och

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

8A Ma: Geometri. Det tredje arbetsområdet handlar om geometri.

8A Ma: Geometri. Det tredje arbetsområdet handlar om geometri. 8A Ma: Geometri Det tredje arbetsområdet handlar om geometri. Syftet med undervisningen är att du ska utveckla din förmåga att: - formulera och lösa problem med hjälp av matematik samt värdera valda strategier

Läs mer

UTVÄRDERING AV ALGORITMER FÖR BRED KOLLISIONSDETEKTERING MED HJÄLP AV BOIDS ALGORITM

UTVÄRDERING AV ALGORITMER FÖR BRED KOLLISIONSDETEKTERING MED HJÄLP AV BOIDS ALGORITM Malskapada v Henrik UTVÄRDERING AV ALGORITMER FÖR BRED KOLLISIONSDETEKTERING MED HJÄLP AV BOIDS ALGORITM EVALUATION OF ALGORITHMS USED FOR BROAD PHASE COLLISION DETECTION USING BOIDS ALGORITHM Examensarbete

Läs mer

EDAA01 Programmeringsteknik - fördjupningskurs

EDAA01 Programmeringsteknik - fördjupningskurs EDAA01 Programmeringsteknik - fördjupningskurs Läsperiod lp 1+2 (Ges även lp 3) 7.5 hp anna.axelsson@cs.lth.se sandra.nilsson@cs.lth.se http://cs.lth.se/edaa01ht Förkunskapskrav: Godkänd på obligatoriska

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

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

Lära och namnge färger, Rekonstruera motiv från kort, fri lek

Lära och namnge färger, Rekonstruera motiv från kort, fri lek Art.Nr. 21007 ToPoLoGo Geo Innehåll: 1 trälåda Ålder: 4+ Antal spelare: 1+ 52 byggklossar (12 gula kvadrater, 4 gula halvdiskar (halvcirklar), 8 gröna rektanglar, 8 gröna "broar", 4 blå "broar", 4 blå

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

Andragradsekvationer möter elever under sitt första år på gymnasiet.

Andragradsekvationer möter elever under sitt första år på gymnasiet. Christoph Kirfel Komplettera kvadraten och kuben med bilder Elever som för första gången ställs inför att lösa andragradsekvationer kan få hjälp att förstå kvadratkomplettering med hjälp av väl uttänkta

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

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4 Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa

Läs mer

Att beräkna:: Avstånd

Att beräkna:: Avstånd Att beräkna:: Avstånd Mikael Forsberg :: 27 november 205 Innehåll Punkter, linjer och plan, en sammanställning 2. Punkter i två och tre dimensioner....................... 2.2 Räta linjer i två och tre

Läs mer

Teknik bakom tredimensionella datorgrafiken Direct3D

Teknik bakom tredimensionella datorgrafiken Direct3D Teknik bakom tredimensionella datorgrafiken Direct3D Samuli Ketola Examensarbete Medieteknik 2011 Förnamn Efternamn EXAMENSARBETE Arcada Utbildningsprogram: Medieteknik Identifikationsnummer: 3234 Författare:

Läs mer

Precis som var fallet med förra artikeln, Geogebra för de yngre i Nämnaren

Precis som var fallet med förra artikeln, Geogebra för de yngre i Nämnaren Publicerad med tillstånd av Nämnaren Thomas Lingefjärd Geogebra i gymnasieskolan En tilltalande egenskap med Geogebra är att programmet kan användas tvärs över stora delar av utbildningssystemets matematikkurser.

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

Föreläsning 13 Linjär Algebra och Geometri I

Föreläsning 13 Linjär Algebra och Geometri I Föreläsning 13 Linjär Algebra och Geometri I Se slide 1: det är i rymden oftast lättast att jobba med parametrar för linjer och ekvationer för plan. Exempel: Låt l : (x, y, z) = (1 t, 3 + t, 4t), t R och

Läs mer

Föreläsning 13. Dynamisk programmering

Föreläsning 13. Dynamisk programmering Föreläsning 13 Dynamisk programmering Föreläsning 13 Dynamisk programmering Fibonacci Myntväxling Floyd-Warshall Kappsäck Handelsresandeproblemet Uppgifter Dynamisk programmering Dynamisk programmering

Läs mer

Lutande torn och kluriga konster!

Lutande torn och kluriga konster! Lutande torn och kluriga konster! Aktiviteter för barn under Vetenskapsfestivalens skolprogram 2001 Innehåll 1 Bygga lutande torn som inte faller 2 2 Om konsten att vinna betingat godis i spel 5 3 Den

Läs mer

Realism och anti-realism och andra problem

Realism och anti-realism och andra problem Realism och anti-realism och andra problem Vetenskap och verkligheten Vetenskapen bör beskriva verkligheten. Men vad är verkligheten? Är det vi tycker oss se av verkligheten verkligen vad verkligheten

Läs mer

MinMax Algoritmen Implementation och optimering. Joakim Östlund 15 juni 2004

MinMax Algoritmen Implementation och optimering. Joakim Östlund 15 juni 2004 MinMax Algoritmen Implementation och optimering Joakim Östlund 15 juni 2004 1 Samanfattning MinMax är en algoritm som kan användas i turbaserade spel för att skapa en virituell motståndare. Algoritmen

Läs mer

Excel-guide. Introduktion

Excel-guide. Introduktion Excel-guide Introduktion I denna laboration kommer ni få använda några grundfunktioner i Microsoft Excel. Laborationen utgår ifrån Excel 2010, men om ni vill använda ett annat program för att lösa uppgifterna

Läs mer

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.

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