Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Relevanta dokument
Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Programmeringsuppgift Game of Life

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

MMA132: Laboration 2 Matriser i MATLAB

När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.

public class Main extends MovieClip { var hillpage:hillpage; var ifpage:ifpage;

Grafik. TDDC66 Datorsystem och programmering Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Whack-a-Witch. Introduktion. Nivå

Föreläsning 2, vecka 8: Repetition

INSTÄLLNINGAR FÖR IRONCADS 2D-RITNING

Vad är det där? STEG 1: Få olika saker att visas på svarta tavlan

Vilken skillnad gör det var du placerar det? Prova båda.

Datorövning 2 Statistik med Excel (Office 2007, svenska)

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Department of Physics Umeå University 27 augusti Matlab för Nybörjare. Charlie Pelland

Innehåll Introduktion... 3 InteractiveScene.config... 3 Scener <scenes>... 3 Typsnitt <fonts>... 3 Övergångar <transitions>...

Klassdeklaration. Metoddeklaration. Parameteröverföring

Tjörn. Handläggare: Peter Olausson, webbmaster Datum: Tjörn Möjligheternas ö

Lunds Universitet LTH Ingenjörshögskolan IDa1, IEa1 Helsingborg. Laboration nr 4 i digitala system ht-15. Ett sekvensnät. grupp. namn.

Beräkningsvetenskap och Matlab. Vad är MATLAB? Vad är MATLAB? Användningsområden. Vad är MATLAB? Grunderna i Matlab. Beräkningsvetenskap == Matlab?

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

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

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

Guide för PDF/A Författare Avd Telefon Datum Version Sid Göran Lindqvist (9)

Procedurell renderingsmotor i Javascript och HTML5

Lab5 för prgmedcl04 Grafik

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

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

Grunder. Grafiktyper. Vektorgrafik

Programmering. Scratch - grundövningar

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Introduktion till MATLAB, med utgångspunkt från Ada

Tentamen TEN1 HI

Kort introduktion till POV-Ray, del 1

Datastrukturer och Algoritmer D0041D

I.site Webbsidesverktyg handledning

Övningsuppgifter till föreläsning 2 Variabler och uttryck

En trevlig form av utskrift från Disgen är en grafisk antavla med foton.

Guide till att använda Audacity för uttalsövningar

Importera utskriftsinställningar och Tips och tricks för Disgen 8.2d

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

1. Öppna InteraktivBok.fla och Main.as från förra övningen. 2. Gå till Main.as. Den bör se ut som följer:

Labora&on 1 Variabler och beräkningar övningar/uppgi9er

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2

Lägg märke till skillnaden, man ser det tydligare om man ritar kurvorna.

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Kapitel 15: Data/Matrix Editor

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

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

TDP007 Konstruktion av datorspråk Hemtentamen

Tentamen i Introduktion till programmering

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera från. bonushack. Måns Jonasson. Illustrationer: Jennifer Nystedt

Newtons metod och arsenik på lekplatser

Digitalt lärande och programmering i klassrummet

En introduktion till L A TEX

Koda ett mattetest 3 av 5. Lektionen handlar om att göra en variabel i programmet för ett multiplikationstest. Koda ett mattetest 3 av 5

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 8 december 2015 Sida 1 / 22

Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel:

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Addera ett nytt Arranger Track. Skapa Arranger Events

Slump och statistik med Scratch

Föreläsning 6: Metoder och fält (arrays)

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Julskoj. Nivå. Introduktion

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Lägg till foton - modul 7

Redaktörens Lathund för Glokala. Så här redigerar du en redan befintlig hemsida. Så här skapar du en länk till en extern hemsida

Tentamen i. Programmering i språket C

Tentamen TEN1 HI

Simulering med ModelSim En kort introduktion

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

Lathund för BankID säkerhetsprogram

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

Träff 3 - Ritning. Kurs - Fusion 360 Ulf Mossberg, juni Övning Skapa ritningen

Vi tror på att kommunikation ska vara roligt - därför är Prata utformad för att

ÖVNINGAR TILL POWERPOINT KAPITEL 1.

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Laboration 3, uppgift En klass för en räknare

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

SF1900 Sannolikhetsteori och statistik, HT 2017 Laboration 1 för CINEK2

För att skriva CSS-kod använder man sig av olika kommandon. Ett exempel på hur man kan skriva kod för att ändra textfärg kan vara:

Sphero SPRK+ Appen som används är Sphero Edu. När appen öppnas kommer man till denna bild.

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Snabbstart. Hogrefe Testsystem 5

Programmets startmeny ser ut så här. För att få fram menyerna Avsluta, Inställningar och Användare måste du föra markören upp till det blåa fältet.

TDDC74 Lab 04 Muterbara strukturer, omgivningar

PNSPO! Använda NJ med NS System Memory. 14 mars 2012 OMRON Corporation

Föreläsning 3. Programmering, C och programmeringsmiljö

Planering Programmering grundkurs HI1024 HT TIDAA

Transkript:

Grunderna i C++ ARK 385: Virtuella Verktyg i en Materiell värld AT Arkitektur & Teknik Chalmers Tekniska Högskola 2009 - Kursen skapades (3 förel.) 2010-6 förel. + 2 projekt 2011-8 förel. Helt omarbetade övningar & Arkitektur Teknik - Chalmers T A Tekniska Högskola i j Skapad av Matz Johansson BergströmLIMY matz.johansson@chalmers.se

Innehållsförteckning I 1 Wrap-up Repetition Vad vi går igenom idag 2 C++ del 6 3d Matris Projekt 1 Cellulär automat i 3D Projektexempel skyskrapor Byggnation av matrisen Exempel Detaljer om Projektet Strålföljning i matris Tips om projektet Rendering i Rhino Projekt 1 Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 2 / 19

Wrap-up Repetition Vad lärde vi oss förra gången? ˆ DXF formatet, exempel ˆ Introduktion till Processing ˆ Fjädersimulering (projekt 2) Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 4 / 19

Wrap-up Vad vi går igenom idag Vad lär vi oss idag? Vi kommer gå igenom lite användbara verktyg till projekten och workshoppen. ˆ 3d matriser ˆ Ray tracing ˆ Projekt 1 Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 5 / 19

3d Matris 3D Matriser Vi vet hur man kan skapa en matris. float B[rows][cols]; B = { {1, 2, 3,..., cols}, {1, 2, 3,..., cols},... rows {1, 2, 3,..., cols} }; cols För att visualisera hur en 3d matris ser ut i Matlab notation, vi kallar den M: M [ rows ] [ cols ] [ level ] ; M = {B_1, B_2, B_3,..., B_p } ; Där M:(rows cols levels). Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 7 / 19

Projekt 1 Cellulära Automater i 3D Som projektval 1 har jag byggt ut Game of Life i 3 dimensioner. Vi bygger nu med block istället för pixlar och kommer exportera till DXF och visualisera i Rhino. För att ni snabbt skall kunna börja programmera har jag skrivit ett litet ramverk med funktioner i OpenGL. För att göra experimenterandet snabbare har jag skrivit koden för att visa modellen i OpenGL innan vi skriver till DXF. Koden för att skriva till DXF finns redan. i t y Meningen är att ni skall experimentera med koden och implementera nåt intressant. Ni får använda reglerna i Game of Life om ni vill, se då gärna mitt kanin exempel, se föreläsning 4 för mer information. Ni kan också använda mitt exempel som följer där jag bygger blocken på varandra och låter varje nivå ha en typ av hållfasthet. x Game of Life C++ i 3D där t står för tid. Varje skiva är en generation. i Koden för att skriva kub i DXF är kort men komplex, jag skrev den så för att man lättare skall kunna göra stora ändringar i koden lätt. Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 8 / 19

Projektexempel skyskrapor Cellulära Automater i 3D Regler för skyskrapor Skillnaden mellan Game of Life och vårt program är att elementen i matrisen är flyttal och inte heltal. Vi bygger med kuber istället för pixlar. För att få en intressant byggnad har jag hittat på några enkla regler, dessa bygger på att en kub måste orka hålla upp kuber som vilar ovanpå, därför får varje cell ett flyttalsvärde som räknas ut på ett speciellt sätt. De tre olika strukturerna vi tar hänsyn till i våra regler. Symbolerna spelar en viktig roll i de nästföljande sidorna. Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 9 / 19

Projektexempel skyskrapor Cellulära Automater i 3D Exempel Vi använder dessa enkla beräkningar och kan framställa rätt intressanta byggnader: -0.08 0.3 0.1 1.0 stress 1.0 a Vi initierar matrisen M med ettor och nollor via ett visst mönster (se kod) och bygger vidare på nästa nivå. I figur a ser vi variablerna och resulterande struktur. Färgerna i b motsvarar stressen på byggnaden (sett från ovan). b 0.1 0.1 Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 10 / 19

Projektexempel skyskrapor Cellullära Automater i 3D Exempel 0.9 0.25 0.05 0.8 0.25 0.05 0.6 0.25 0.05 0.11 0.25 0.25 0.5 0.25 0.05-0.08 0.3 0.1 Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 11 / 19

Byggnation av matrisen Hur vi bygger 3d matrisen Det är bra om ni följer med i koden samtidigt som jag går igenom den här. Tanka ner Proj 1.zip och extrahera till d:, samma ställe som ni sparade GameOfLife koden. Öppna cbp filen och glöm inte att main.cpp måste vara i samma mapp som cbp filen. Kompilera koden och ni skall se en liten kub som snurrar till. Kryssa för View Management. Management Symbols View: Current file s symbols så skall ni se funktionerna som är definierade i filen. Dubbelklicka på funktionsnamnen för att hoppa till deras definition. Om ni inte ser er kod, gå till Management Projects och klicka fram Sources main.cpp, dubbelklicka på main.cpp så skall koden dyka upp i fönstret. Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 12 / 19

Byggnation av matrisen Hur vi bygger 3D matrisen Vi bygger alltså varje nivå av 3d matriser med en funktion, i vårt fall construct M at level(int) där argumentet är ett heltal (index till en matris) [0, p]. Dimensionerna är definierade med makron: # define WIDTH 50 # define DEPTH WIDTH # define HEIGHT 40 Vi börjar med att initiera 3d matrisen. Detta görs i initm(). I mina exempel låter jag endast initiera basen och arbetar uppåt med vissa regler, detta görs i construct M at level(int). Vi antar här att vi bara ändrar basen och använder funktionen ant(). Funktionen simulerar en myra som äter elementen i det första 2d fältet i M. Detta kan vi se i renderingen Till pyramid. Man kan också låta varje element i M[i][j][0] vara slumptal [0, 1] i vilket fall man inte anropar ant. i j Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 13 / 19

Byggnation av matrisen Implementation av exemplet Det är alltså i contruct M at level som vi skall skriva det mesta av koden. För mina byggnader använder jag calculate stamina at för att bygga varje nivå, detta behöver ni inte göra, men experimentera gärna med andra värden. if ( M [ i ] [ j ] [ level 1]>0) { stam = calculate_stamina_at ( i, j, level 1) ; /* Mer än h ä l f t e n av de 9 g r a n n a r n a g e r en f ö r s v a g n i n g av... s t a m i n a på d e t l a g e r o v a n f ö r som f ö l j e r c o s i n u s. */ if ( grannar >4) T [ i ] [ j ] = cos(1 stam ) ; else T [ i ] [ j ] = 0. 3 * stam ; } if ( stam <0.1) // not enough stamina, remove from s t r u c t u r e T [ i ] [ j ] = 0 ; Implementation av skyskraporna Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 14 / 19

Strålföljning i matris Strålföljning Ett verktyg som jag tror ni har användning för, som är nytt för i år, är raytracing (strålföljning). Strålföljning används inom datorgrafik för rendera av 3d modeller. I vårt fall använder vi strålföljning för att göra så en kub start ser solljus. Vi stegar då igenom vår matris och nollsäller element mellan solen och positionen för kuben start. start end Strålföljning i en 2d matris. end 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 start i j Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 15 / 19

Strålföljning i matris Strålföljning... Vi tittar från sidan hur strålföljningen fungerar i 2 dimensioner: int start_i = 1 ; int end_i = 4 ; int start_j = 1 ; int end_j = 9 ; for ( k=0; k<levels ; k++) { int i = start_i + float ( k ) / levels *( end_i start_i ) ; int j = start_j + float ( k ) / levels *( end_j start_j ) ; } M [ i ] [ j ] [ k ] = 0 ; Exempel på hur man kan implementera enkel strålföljning. Låter vi punkten end vara en del av en cirkel så kan vi stega så vi får som figuren ovan för att simulera hur solen vandrar på himlen. Punkten får då solljus från gryning till solen står högst. OBS: I min kod skriver jag till en temporär matris T för att ni lättare skall kunna skriva Game of Life regler. Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 16 / 19

Tips om projektet Tips om projektet Fatta penna och papper och rita vilken form ni vill stadkomma: ˆ Skall byggnaden ha synliga bjälkar? ˆ Skall den se ut som en hängande bro? ˆ Skall den vara rundad (vi bygger kuber men den kan ändå se rund ut). ˆ Skall den ha ett biologiskt utseende? ˆ Skall vi använda slumptal? Om ni inte hittar på något kan ni titta på delprojekten i Instruktioner till Projekt 1.pdf på hemsidan www. Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 17 / 19

Rendering i Rhino Rendering i Rhino Man kan genom att trycka på f skriva matrisen M som kuber till en DXF fil. Filen kommer skrivas där ni lagt cbp filen. När ni trycker på knappen anropas MtoDXF vilken bygger upp DXF filen enligt DXF syntaxen. Filen som skrivs heter cells.dxf (detta kan ni ändra). Importera den resulterande DXF filen i Rhino för att rendera. För att snabba upp själva renderingen av era byggnader (i Rhino med V-Ray) har jag lagt upp en 3DM-fil (Vray scene.3dm) under projekt-mappen med en V-Ray Sun/Sky samt inställningar för snabb rendering och några enkla material som ni kan använda. Notera att reflektion och refraktion tar längre tid då fler fotoner måste skjutas in i scenen. Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 18 / 19

Projekt 1 Projekt 1 ˆ Ni behöver inte logga in för att hämta ner från kurshemsidan www ˆ ˆ Öppna Instruktioner till Projekt 1.pdf (under Projekt/1/) Öppna Referensblad.pdf (under Extra/) ˆ Om ni undrar något så kolla i referensbladet, där står allt ni behöver veta. ˆ Är jag upptagen så kolla på ledtrådarna, annars kan ni skriva upp er på tavlan så tar jag er i tur och ordning. Ni som är snabba får gärna hjälpa övriga. Matz JB (AT Arkitektur & Teknik, Chalmers) Grunderna i C++ 2011 19 / 19