OpenGL, Maya och specialeffekter
|
|
- Joakim Sandberg
- för 5 år sedan
- Visningar:
Transkript
1 OpenGL, Maya och specialeffekter Gustav Taxén, Introduktion OpenGL är ett användbart API för att rendera grafik i realtid (om man har det rätta hårdvarustödet). Du har på tidigare kurser (förhoppningsvis) fått lära dig de grundläggande funktionerna i OpenGL: geometrispecifikation, transformationer och texturering. Målsättningen med den här labben är att du ska få en känsla för hur man kan använda 3D-data från Maya i ett OpenGL-program och få en kort introduktion till ett par vanliga realtids-specialeffekter. Eftersom OpenGL saknar möjlighet att importera 3D-data från program som Maya måste man som applikationsprogrammerare själv ordna med detta. Om man har ett välspecificerat 3D-format brukar dock detta mest handla om handarbete, så i den här labben får du tillgång till ett hjälpbibliotek, Wasa, som ordnar detta (och som dessutom har en massa annan användbar funktionalitet). Labben har 6 deluppgifter. Beräknad tidsåtgång är svår att sia om eftersom labben blir olika tidskrävande beroende på om man t.ex. har använt C++ tidigare. Räkna dock med att den tar minst timmar att genomföra. Om du vill köra labben på PC hemma behöver du följande: C++-kompilator med DLL-stöd (t.ex., Visual Studio) GLUT, DevIL, Boost, Wasa, Räkna inte med att du kan få handledning kring PC-relaterade problem!
2 Innan du börjar Lägg till relevanta moduler Gör module add gcc module add devtools module add glut i ditt shell-fönster. gcc- och devtools-modulerna ger tillsammans tillgång till en kompilator, g++, som vi kommer att använda. GLUT bör du ha kommit i kontakt med tidigare. Om inte, läs igenom dokumentationen på Kolla din modell Se till att du har exporterat den Maya-modell du byggde i Maya-labben till RTGformat på föreskrivet sätt. Pröva att den funkar att importera till OpenGL m.h.a. Wasa genom att göra följande. Ställ dig i den katalog där din modellfil finns och skriv /info/agi03/opengl/wasa/tests/modelviewer modelfile där modelfile är din modellfil (ska ha extensionen.rtg). Ser modellen konstig ut eller programmet avslutas med ett felmeddelande har du förmodligen inte exporterat den på ett korrekt sätt. Kontakta Pär (paer@nada.kth.se) eller Gustav (gustavt@nada.kth.se) för att få hjälp eller kopiera modellen brood.rtg som finns i katalogen /info/agi03/opengl/models till din labbkatalog tillsammans med texturen som hör till och använd dem istället. Se till att du har lite koll på C++ När du gör labben kommer du att bli tvungen att använda C++. Om du inte kan C++ finns en bra introduktion för Java-programmerare på En annan introduktion finns här: En utmärkt C++-bok för nybörjare är Lippman, S., C++ Primer (3:e uppl.), Addison- Wesley. Det finns också en mycket bra C++-FAQ och C++-tips här:
3 Du kommer också att behöva använda några funktioner i standardbiblioteket i C++. Det som tidigare kallades Standard Template Library (STL) är numera integrerat i ANSIs C++-standard, som förutom container-klasser också innehåller klasser för I/O, m.m. Information om standardbiblioteket finns bl.a. här: Läs speciellt igenom informationen som rör string och vector och enkel I/Ohantering. Vill man veta mer om skillnaden mellan "traditionell" C++ och ANSI-C++ kan man gå hit: Wasa utnyttjar ett hjälpbibliotek som heter Boost för att få en säkrare minneshantering (i Boost ingår också en mängd andra väldigt användbara verktyg). Du bör läsa igenom den Boost-dokumentation som rör delade pekare (shared pointers). Informationen finns på följande plats: Gå till och följ länkarna Documentation memory smart_ptr Documentation shared_ptr. Delade pekare fungerar i stort sett som vanliga pekare, med skillnaden att Boost håller reda på vilka pekare som är aktiva: då alla aktiva pekare gått ur scope avallokeras minnet automatiskt. Detta påminner mycket om Javas minneshantering: i Java skapar man nya klassinstanser med operatorn new, medan minnet avallokeras av Java automatiskt med hjälp av garbage collection. Se till att du har lite koll på Wasa Läs den bifogade Wasa-dokumentationen! Referensinformation i HTML-format finns i katalogen /info/agi03/opengl/wasa/doc. och i katalogen /info/agi03/opengl/wasa/tests finns ett par exempelprogram som använder Wasa. För den som inte kan C++ ger exemplen ger också en inblick i hur C++-kod kan se ut.
4 Uppgift 1 Få GLUT och OpenGL att fungera under C++ Den första uppgiften är att initiera och använda GLUT i ett C++-program. Gör så här: Skapa en katalog att ha dina labbfiler i, t.ex. ~/agilabb/. Kopiera upp samtliga filer från /info/agi03/opengl/skal/ till din labbkatalog. Öppna filen agi.cc i emacs. Det är i den här filen du kommer att arbeta. Extensionen.cc indikerar att det program du skriver är i C++. (Om du vill arbeta i en fil med ett annat namn eller använda fler källkodsfiler måste du ändra i den Makefile som finns i /info/agi03/opengl/skal.) Som du ser är är filen agi.cc ganska tom. Börja med att göra ett GLUT-skal som öppnar ett fönster och ritar något med hjälp av OpenGL. Utnyttja gärna att du redan har gjort ett sådant program i DGI/DOA/GRIP-kursen. Kompilera ditt program genom att skriva make. Eventuellt kommer du att få några Wasa-relaterade varningar, men dessa behöver du inte bry dig om. Däremot bör du kontrollera alla varningar (och fixa fel!) som uppstått i din egen källkod. (C++kompilatorer varnar normalt mer än C-kompilatorer och hittar ofta fler fel!). Kontrollera att ditt program fungerar. Om du inte använt C++ tidigare är det här ett utmärkt tillfälle att pröva olika typer av C++-konstruktioner. Pröva t.ex. att skapa en ny klass och skapa en delad pekare till en ny klassinstans. Testa att ändra ett värde på en av medlemmarna i klassen (eller anropa en metod) genom att använda operatorn ->. Använd en utskrift i destruktorn för att kontrollera att klassen avallokeras automatiskt av Boost. (I C++ görs normalt utskrifter genom att man skickar strängar och värden till std::cout med <<-operatorn.) Titta också på exempelkoden i /info/agi03/opengl/wasa/tests eller sök efter C++-exempel på nätet.
5 Uppgift 2 Importera och rita en Maya-modell Nu ska vi använda Wasa för att importera din Maya-modell. Gör så här: Om du inte redan gjort det, läs Wasa-dokumentationen. Se till att ditt program har using namespace wasa; using namespace boost; efter #include-raderna i ditt program. Om du inte vet vad namespaces är, läs igenom introduktionen på Se till att initwasa() finns före raden glutmainloop(). Det är viktigt att Wasa initieras innan du börjar använda det. Det är också viktigt att Wasa initieras efter att OpenGL har initierats. OpenGL initieras när man skapar ett fönster med glutcreatewindow(). Lägg till en global variabel shared_ptr<modeldata> model; model kommer att vara vår pekare till den data som finns i din 3D-fil. Vi behöver komma åt denna data när vi ritar ut modellen i display()-funktionen. Lägg till raderna VertexSetFormat fmt; fmt.wantnormals(); fmt.wanttexcoords(0, 2); model = parse("mymodel.rtg", fmt, true); direkt efter raden initwasa(). Ersätt mymodel.rtg med namnet på din modellfil. Dessa programrader specificerar att Wasa ska läsa normaler och 2Dtexturkoordinater från din modellfil. Om den sista parametern till parse() är satt till true kommer Wasa att skriva ut information om 3D-filen när den parsas. Den första parametern till wanttexcoords() indikerar att det är texturkoordinater för texturenhet 0 som avses. På moderna grafikkort finns oftast mer än en texturenhet så att flera texturer kan kombineras ihop i ett enda renderingspass i OpenGL. Vi kommer bara att använda den första texturenheten i den här labben (och dessutom stöder NADAs Sun-workstations bara en texturenhet än så länge).
6 I din display()-funktion, se till att du använder och aktiverar ljussättning. Lägg nu till raderna unsigned int i; unsigned int n = model->getnumberofindexsets(); for (i = 0; i < n; i++) { shared_ptr<indexset> iset = model->getindexset(i); Material m = model->getmaterial(i); m.glmaterial(gl_front_and_back); iset->gldrawelements(); } Dessa rader går igenom varje IndexSet (se Wasa-dokumentationen) som finns i modellfilen, hämtar dess materialparametrar och anropar glmaterial() med motsvarande värden. Metoden gldrawelements() aktiverar en s.k. vertex array i OpenGL och ritar primitiverna. I display()-funktionen, se till att OpenGL-kameran är placerad så att den kan se modellen. Det innebär att du måste ta hänsyn till hur stor du byggde modellen i Maya och var du placerade den i förhållande till världsorigo. Glöm inte heller att du kan behöva ändra på klipp-planens position i gluperspective(). Programmet ska nu rita ut din modell. Ändra nu programmet så att det också aktiverar texturering. Använd Wasas Imageklass för att läsa in texturen. Image-klassen stöder formaten JPG, GIF, BMP, DCX, DDS, WAD, ICO, LIF, MDL, PCD, PCX, PIC, PIX, PNM, PSD, PSP, PXR, RAW, SGI, TGA, WAL, och XPM. Information om hur man får tag i bilddata och skickar den till OpenGL finns i Wasa-dokumentationen och i exemplet /info/agi03/opengl/wasa/tests/modelviewer Om det ser ut som om texturen inte "sitter rätt" beror det förmodligen på att texturbildfilen är felvänd i y-led: de flesta bildformat har origo i övre vänstra hörnet, medan OpenGL förutsätter att origo sitter i nedre vänstra hörnet. Image-klassen ger möjlighet att vända bilder efter det att de laddats från fil. Du kan också vända bilden i ett ritprogram, men tänk på att den då också blir felvänd om du skulle vilja gå tillbaka och använda den i Maya.
7 Uppgift 3 Arbeta med indexerade primitiver Så här långt har vi ett program som ritar ut modelldata, men vi har inte tittat närmare på hur denna data ser ut. När man arbetar med 3D-grafik måste man ofta arbeta med modelldata som inte riktigt passar det projekt man arbetar med, och då måste man manipulera den på olika sätt, t.ex. reducera antalet polygoner eller transformera hörnen. Om du inte redan gjort det, läs Wasa-dokumentationen som rör klassen VertexSet och klasshierarkin där IndexSet är rotklass. Dessa klasser bygger direkt ovanpå den mekanism som oftast används för att specificera geometri i Direct3D och OpenGL. Mekanismen kallas vertex/index buffers i Direct3D och vertex arrays i OpenGL. Hur vertex arrays fungerar i OpenGL finns att läsa på När du tycker att du har koll på hur mekanismen med indexerade primitiver fungerar, gör följande: Spara en kopia av ditt program. Direkt efter att modelldata har lästs in (d.v.s., efter du anropat funktionen parse()), lägg till programkod som stegar igenom varje hörn i din modell. För varje hörn, gör följande: antag att hörnets position är (x, y, z). Uppdatera hörnets position så att den blir (x', y', z') = f(x, y, z) där du väljer någon intressant funktion f(), t.ex. f(x, y, z) = (xy, y, zy). Detta görs enklast genom att du för varje IndexSet i din modell använder metoden getvertexset() för att få tag i hörnen. Sedan kan du stega igenom hörnen med hjälp av metoden getposition3() och ändra positionen med metoden setposition(). Ta reda på hur många hörn som finns i ditt VertexSet med metoden getnumberofvertices(). NOT: Om du transformerar hörnen kommer normalerna att bli felaktiga, så att ljussättningen kan se konstig ut. Det är överkurs att försöka fixa till det men du får gärna försöka om du vill! Kontrollera att programmet ritar ut modellen precis som förut, fast med modifierade hörn enligt din funktion f(x, y, z). Spara en kopia av denna exekverbara fil och motsvarande källkod för redovisningen och arbeta nu vidare med en ny kopia av din backup. Som du förhoppningsvis vet sedan tidigare, kan man använda sig av s.k. back-face culling för att effektivisera utritning av polygonmodeller. Det innebär att man med hjälp av hörnens ordning tar reda på om polygonen är riktad mot eller från kameran. Aktivera nu back-face culling i ditt program genom att använda kommandot glenable(gl_cull_face). Kompilera om och försök avgöra om programmet tycks gå fortare (du kan använda Wasas WTimer-klass om du vill mäta skillnaden).
8 En förutsättning för att backface culling ska fungera är att hörnen konsekvent är specificerade i motsols ordning. För att testa denna princip ska du nu ändra ordningen på den första triangeln i din modell så att den hamnar i medsols ordning. Gör så här: RTG-parsen skapar data av typen TriangleList som är en subklass av IndexSet. Du kan förutsätta att alla IndexSet som parse() returnerar är av denna typ (man kan kontrollera genom att anropa metoden getgeomtype()). För att komma åt funktionaliteten i TriangleList via din IndexSet-pekare måste du genomföra en s.k. dynamisk typecast. Detta påminner mycket om hur man i Java använder operatorn instanceof för att avgöra om det är OK att göra en downcast. Lägg till följande rader i ditt program efter parse()-raden: shared_ptr<indexset> iset = model->getindexset(0); shared_ptr<trianglelist> tlist; tlist = shared_dynamic_cast<trianglelist>(iset); Du kan nu komma åt TriangleList-metoderna via pekaren tlist, men kolla först att tlist är skilt från 0 - annars misslyckades din typecast! (NOT: Om du kompilerar programmet med Visual C++ måste du aktivera RTTI RunTime Type Information för att dynamisk casting ska funka.) Motsvarande kod i Java skulle se ut ungefär så här: IndexSet iset = model.getindexset(0); TriangleList tlist; if (iset instanceof TriangleList) { tlist = (TriangleList)iset; } Hämta de tre index som motsvarar triangel 0 med hjälp av metoden gettriangle(). Ändra ordning på dem så att de hamnar i "motsatt riktning" genom att använda metoden settriangle(). Gör motsvarande operation för triangel 1 och 2. Kompilera om och kör programmet. Kontrollera att tre trianglar tycks ha "försvunnit". Ta bort aktiveringen av back-face culling och kontrollera att de syns igen. Spara undan en kopia av din exekverbara fil och källkod för redovisningen och arbeta vidare med en ny kopia av din backup.
9 Uppgift 4 Alternativ belysningsmodell Resten av labben handlar om hur man kan använda OpenGL kreativt för att åstadkomma ett par olika specialeffekter. Först ska vi använda oss av s.k. multipass rendering för att åstadkomma en mer avancerad belysningsmodell än den som finns i OpenGL. Sedan ska vi skapa illusionen av att modellen speglas i ett golvplan. Till sist ska vi utnyttja s.k. environment mapping för att få modellen att se spegelblank ut. För en ljuskälla L, och för var och en av komponenterna R, G, och B, har OpenGLs belysningsmodell för ett hörn formen (något förenklat) Color = A + D + S A = A L k A D = max(l N, 0) D L k D S = max(h N, 0) shininess S L k S där A L, D L och S L är ljuskällans värden för GL_AMBIENT, GL_DIFFUSE resp. GL_SPECULAR. k A, k D och k S är motsvarande värden för materialet. L är riktningen mot ljuskällan, N är normalen i hörnet och H är summan av riktningsvektorn mot ljuskällan och vektorn som pekar mot kamerapositionen (alla vektorer är normerade). Texturer appliceras på följande sätt: för en primitiv, säg en triangel, beräknas först färgen i varje hörn med hjälp av ljusättningsmodellen. Dessa färger interpoleras sedan linjärt över triangeln. Om man har aktiverat texturering och angett GL_MODULATE till funktionen gltexenv() kommer färgen i varje pixel att multipliceras med texturens färg då interpoleringen görs. Detta gör att också s.k. specular highlights multipliceras med texturens färg. Men ofta vill man att highlighten ska ligga "ovanpå" ytdetaljerna för att den ska synas bättre. I den vänstra bilden nedan används vanlig texturering: highlighten "försvinner" in i texturen. I den högra ligger highlighten "ovanpå" texturen. Vi vill alltså applicera specular-komponenten efter det att modellen texturerats. Ett sätt att göra detta är att rita ut modellen två gånger och summera resultaten. Gör så här:
10 Aktivera texturering och ambient-kompnenten i materialet. Kolla Wasadokumentationen för Material-klassen för att se hur du får tag i materialdata. Eftersom din modell har textur har Maya-exporten satt diffuse-komponenten till 0, så ändra den till (1, 1, 1, 1) genom att anropa den OpenGLs glmaterialfv()- funktion på vanligt sätt. Rita ut modellen. Efter första utritningen, ändra djuptestet så att det testar GL_EQUAL istället för GL_LESS. Varför det är nödvändigt att göra så? Förklara här: Stäng av texturering ambient+diffuse-komponenterna i materialet. Hämta specularkomponenten från Wasa-materialet och aktivera den. Aktivera färgblandning och välj blandningsfaktorer så att inkommande fragmentfärg adderas med den fragmentfärg som finns i färgbufferten. Rita ut modellen igen. Återställ djuptestet och stäng av färgblandning. Om du ritat en "specular map" när du gjorde Maya-labben, applicera den på andra renderingspasset, d.v.s. modulera specular-komponenten med en annan textur än diffuse-komponenten. Som ett alternativ till en egen specular-textur kan du använda filen /info/agi03/opengl/models/specularmap.jpg. Man kan sammanfatta OpenGLs klassiska belysningsmodell enligt C = T(A + D + S) där C är färg, T är texturfärg, A är ambient ljus, D matt ljus och S är speglande ljus. Beskriv på motsvarande sätt den belysningsmodell du just har implementerat:
11 Uppgift 5 - Spegelbilder Nu ska du använda OpenGLs s.k. stencilbuffert tillsammans med färgblandning för att åstadkomma en spegelbildseffekt. Bilderna nedan illustrerar hur det kan se ut. Du ska lägga till ett golvplan under din modell och modellen ska speglas i golvplanet. Det ska gå flytta kameran så att man kan se golvet från sidan; detta ska inte förstöra illusionen av spegling (därav behovet av stenciltest). Golvet ska ha en textur. För att åstadkomma spegelbildseffekten behöver du bygga upp bilden i flera lager: 1. Rita in golvpolygonen i stencilbufferten. 2. Rita ut spegelbilden, d.v.s. din modell upp-och-nervänd. 3. Rita ut golvpolygonen med färgblandning. 4. Rita ut modellen rättvänd. Tänk på att hantera djuptest och stenciltest rätt när du ritar ut dina lager, annars kan det hända att vissa lager inte syns. Ta en kopia av din källkod och den exekverbara filen för redovisning innan du fortsätter.
12 Uppgift 6 Environment mapping Till sist ska du använda s.k. environment mapping för att få din modell att se spegelblank ut. Det finns en sådan environment map i filen /info/agi03/opengl/models/envmap.jpg Låt programmet vara som tidigare, men ändra i din alternativa ljussättningsmodell så att specular-komponenten istället skapas med environment mapping, d.v.s. rendera modellen med enbart diffust ljus och texturering i första passet och addera ett andra pass där du modulerar diffuse-färgen med data från din environment map (och, förstås, aktiverar environment mapping). Om resultatet blir för ljust kan du skala ner bilddata i din environment map med Image-metoden scale(). Mer information om environment mapping i OpenGL finns här: node176.html#scene:spheremap
OpenGL, Maya och specialeffekter
OpenGL, Maya och specialeffekter Gustav Taxén, gustavt@nada.kth.se Introduktion OpenGL är ett användbart API för att rendera grafik i realtid (om man har det rätta hårdvarustödet). Du har på tidigare kurser
Läs merOpenGL, Maya och specialeffekter
OpenGL, Maya och specialeffekter Gustav Taxén, gustavt@nada.kth.se Introduktion OpenGL är ett användbart API för att rendera grafik i realtid (om man har det rätta hårdvarustödet). Du har på tidigare kurser
Läs merOpenGL AGI HT05. Gustav Taxén
OpenGL AGI HT05 Gustav Taxén gustavt@nada.kth.se OpenGL-översikt Geometri Operationer på hörn Rastrering Operationer på fragment Bilddata Operationer på bildelement Texturminne Framebuffert (bildbuffert
Läs merAvalanche 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 merRTG-formatet Gustav Taxén,
RTG-formatet 2004-08-11 Gustav Taxén, gustavt@nada.kth.se Det här texten beskriver kortfattat RTG-filformatet och ett C-bibliotek som kan läsa det. RTG-formatet är ett filformat för geometribeskrivningar
Läs merAtt använda pekare i. C-kod
Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare
Läs merSpelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering
Spelutveckling 3d-grafik och modellering Grunder för 3d-grafik Blender Animering Grunderna för 3d-grafik Positionering, transformationer Projektion, kameran Objekt i en 3d-värld Ljusmodeller för 3d-grafik
Läs merOpenGL-översikt. OpenGL. Viktigt att komma ihåg: OpenGL-kommandon. OpenGL är en tillståndsmaskin. Transformationer. Geometrispecifikation
OpenGL OpenGL-översikt Geometri Operationer på hörn Projective shadows Advanced Rendering Techniques Using OpenGL, SIGGRAPH Courses 997. Gustav Taxén CID gustavt@nada.kth.se Bilddata Operationer på bildelement
Läs merInnehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser
Föreläsning 1 Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker) Introduktion
Läs merShaders. Gustav Taxén
Shaders Gustav Taxén gustavt@csc.kth.se 2D1640 Grafik och Interaktionsprogrammering VT 2007 Shading l 2 P l 1 n v Givet en punkt P på en yta, en normal n, riktningsvektorer l i mot ljuskällor och en kamerariktning
Läs merOpenGL-översikt. OpenGL. Lokala koordinatsystem. Transformationer. Hierarkiska modeller. Animation. Transformation Byte av koordinatsystem
OpenGL OpenGL-översikt Geometri Operationer på hörn DOOM 3 id Software, 2004 (?). Gustav Taxén CID gustavt@nada.kth.se Bilddata Operationer på bildelement Rastrering Texturminne Operationer på fragment
Läs merDet finns många flaggor till g++,
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.
Läs merShaders. Renderingssystem. Renderingssystem. Renderingssystem. Hårdvara för 3D-rendering. Hårdvara för 3D-rendering
Shaders Renderingssystem Applikation Geometri Rastrering Martin Fitger d00-mfi@d.kth.se VT 2008, DH2323 / DH2640 / NA8740 Renderingssystem Renderingssystem Applikation Per-vertex operationer Geometri Rastrering
Läs merVarför behövs grafikbibliotek? Introduktion till OpenGL. OpenGL är ett grafikbibliotek. Fördelar med OpenGL. Allmänt om OpenGL. Nackdelar med OpenGL
Introduktion till OpenGL Battlezone Atari corp., 1980. Gustav Taxén CID gustavt@nada.kth.se Varför behövs grafikbibliotek? Grafikhårdvara Skillnader i funktionalitet och möjligheter. Skillnader i styrning.
Läs merProgrammering i C++ Kompilering från kommandoraden
Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö
Läs merGrafiska 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 merProgrammering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
Läs merID1004 Laboration 3, 5-6 November 2012
18-okt-2012/FK ID1004 Laboration 3, 5-6 November 2012 Labben bör göras individuellt. Beräknad tid ca 2 timmar. Instruktionen antar att labben utförs i datasal, med hjälp av den integrerade utvecklingsmiljön
Läs merTentamen 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 merTentamen 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 merI 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 merLab5 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 merVerktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse
Verktyg och Utvecklingsmiljö Föreläsning 2 Eclipse Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg. Editorer Kompilatorer Avlusare(debugger) Versionshantering(kommer i
Läs merLabb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt
Läs merRastrering 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 merTDP005 Projekt: Objektorienterat system
. TDP005 Projekt: Objektorienterat system Laboration i Make och CMake Författare Filip Strömbäck Höstterminen 2016 Version 1.0 2016-10-04 Introduktion I denna lab kommer vi titta närmare på två verktyg
Läs merLaboration 4: Digitala bilder
Objektorienterad programmering, Z : Digitala bilder Syfte I denna laboration skall vi återigen behandla transformering av data, denna gång avseende digitala bilder. Syftet med laborationen är att få förståelse
Läs merKompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Läs merOpenGL-översikt. Mer OpenGL. Består-av-hierarki. Hierarkiska modeller. Från hierarki till kod, steg 1. Lokala koordinatsystem
Mer OpenGL OpenGL-översikt Geometri Operationer på hörn Projective shadows Advanced Rendering Techniques Using OpenGL, SIGGRAPH Courses 997. Gustav Taxén CID gustavt@nada.kth.se Bilddata Operationer på
Läs merIntroduktion till After Effects
Introduktion till After Effects After Effects är ett bildanimeringsprogram, men även ett filmredigeringsprogram. Det finns ett antal fler programutvecklare som gör redigeringsprogram för film, bland annat
Läs merTANA17 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 merSimulering med ModelSim En kort introduktion
Linköpings universitet Institutionen för systemteknik Laborationer i digitalteknik Datorteknik 2017 Simulering med ModelSim En kort introduktion TSEA22 Digitalteknik D Linköpings universitet SE-581 83
Läs merTUTORIAL: SAMLING & KONSOLL
TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även
Läs merJava: Utvecklingsverktyg, datatyper, kontrollstrukturer
Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se
Läs merBörja med att kopiera källkoden till din scheme-katalog (som du skapade i Laboration 1).
Laboration 3 Grafiska figurer I den här laborationen skall du konstruera ett schemeprogram som kan rita rektanglar, punkter, cirklar, linjer och bilder som består utav en eller flera av nyss nämnda figurer.
Läs merProgramsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010
Programsystemkonstruktion med C++: Övning 1 Karl Palmskog palmskog@kth.se september 2010 Programuppbyggnad Klassens uppbyggnad en C++-klass består av en deklaration och en definition deklaration vanligtvis
Läs merAlla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php
Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är
Läs merVerktyg och Utvecklingsmiljö. Jochim von Hacht
Verktyg och Utvecklingsmiljö Jochim von Hacht Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg Editorer Kompilatorer Avlusare (debugger) Versionhantering (kommer i projektkurs)
Läs merTentamen TEN1 HI
Tentamen TEN1 HI1029 2014-03-14 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha
Läs merKARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09
Laboration 4, ISG A04 och DVG A08 HT-09 Laborationen går ut på att skapa en enkel bankbok. Ni skall i bankboken kunna registrera upp till 30 transaktioner som kan bestå av insättning, uttag eller checkuttag.
Läs merLaboration 1 Introduktion till Visual Basic 6.0
Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.
Läs merDAT043 - föreläsning 8
DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns
Läs merTransformationer. Translation. Skalning. Homogena koordinater. Rotation. 2D-grafik. x y. Inom datorgrafik är transformationer den. Många. bevaras.
Transformationer D-grafik Gustav Taén gustavt@nada.kth.se Inom datorgrafik är transformationer den kanske viktigaste formen av operation. De vanligaste transformationerna är linjära och kan skrivas som
Läs merTentamen i Programmering
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen i Programmering EDAA65/EDA501/EDAA20 M MD W BK L 2018 05 30, 8.00 13.00 Preliminärt ger uppgifterna 7 + 14 + 6 + 9 + 4 = 40 poäng.
Läs merInledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio
Ditt första C#-program med Visual Studio Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så
Läs merNetBeans 7. Avsikt. Projektfönster
NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till
Läs merSnabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB
Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB Komma igång med Compact API Hur APIet fungerar Visma Compacts API läser och skriver direkt till databasen via ett antal färdiga metoder som
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Läs merTentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-04-28 Tid: 08-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär
Läs merFö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 merNetBeans 5.5. Avsikt. Projektfönster
NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till
Läs merLÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
Läs merEn introduktion till OpenGL. Gustav Taxén gustavt@csc.kth.se
En introduktion till OpenGL Gustav Taxén gustavt@csc.kth.se 2D164 Grafik och Interaktionsprogrammering VT 27 Labb 4 görs på PC! Följ det nya labbpeket - eller: Följ stegen i labbpeket för labb 5 för att
Läs mergrundläggande C++, funktioner m.m.
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel Ett enkelt program i C++, hello.cpp #include
Läs merPROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap
PROCEDUELL TERRÄNG Proceduella metoder för bilder (TNM084) Jimmy Liikala (jimli570@student.liu.se) Institutionen för teknik och naturvetenskap Sammanfattning Rapporten beskriver hur en proceduell terräng
Läs merEtt enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1
Ett enkelt program i C++, hello.cpp C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel int
Läs merStatic 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 merTAIU07 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 merTENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,
Läs merFöreläsning 5: Introduktion av pekare
Föreläsning 5: Introduktion av pekare Det bör påpekas att det som tas upp i introduktionen inte är reella exempel på kod. Man anväder inte pekare till att peka på enstaka heltal som i exemplen nedan, men
Läs merDet här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.
Informationsinfrastruktur 7.5 hp Mattias Nordlindh Inledning Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer. Dokumentet består av
Läs merCW RefLevel - Användarbeskrivning
C/W CadWare CW RefLevel - Användarbeskrivning OBS: Listan under CadWare kan variera mellan olika system. Modul i exemplet här kan saknas i vissa system. Allmänt Rationell hantering av modellfiler i ett
Läs merTentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-08-22 Tid: 14-18 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär
Läs merRäkna med ASP.NET MVC 3
Instruktion Räkna med ASP.NET MVC 3 Introduktionsuppgift Författare: Mats Loock Kurs: ASP.NET MVC Kurskod:1DV409 Innehåll Du ska följa steg-för-steg -instruktionen i denna introduktionsuppgift och skapa
Läs merProcedurell renderingsmotor i Javascript och HTML5
Procedurell renderingsmotor i Javascript och HTML5 TNM084 Procedurella Metoder för bilder Gustav Strömberg - gusst250@student.liu.se http://gustavstromberg.se/sandbox/html5/shademe/texture_stop_final.html
Läs merArv och polymorfism i Java
1 (5) Arv och polymorfism i Java Objektorienterad programmering 5 Syfte Att ge en introduktion till arvsmekanismen i Java. Mål Efter övningen skall du kunna definiera klasser med arv i Java. förstå hur
Läs merInlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1
Inlämningsuppgift : Finn 2D1418 Språkteknologi Christoffer Sabel E-post: csabel@kth.se 1 1. Inledning...3 2. Teori...3 2.1 Termdokumentmatrisen...3 2.2 Finn...4 3. Implementation...4 3.1 Databasen...4
Läs merInnehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering
Innehåll EDAF30 Programmering i C++ 6. Resurshantering Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Resurshantering Stack-allokering Heap-allokering: new och delete 2 Smarta pekare 3 Klasser, resurshantering
Läs merObjektorienterad programmering Föreläsning 2
Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade
Läs merObjektorienterad programmering i Java I
Laboration 4 Objektorienterad programmering i Java I Uppgifter: 1 Beräknad tid: 6 9 timmar Att läsa: Kapitel 7, 8 (stränghantering, arrayer och Vector) Utdelat material (paket) Syfte: Att kunna använda
Läs merObjektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Läs merAnvändarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
Läs merStatic 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 merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Läs merVälkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA
Välkommen till Datastrukturer, algoritmer och programkonstruktion eller DOA Jag: Christer Labbassar: Caroline: Johan: Agenda, före lunch Inledning om DOA-kursen Backspegel Mål Syfte Examination Om lärande
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2018-03-16 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merTDDC74 Lab 04 Muterbara strukturer, omgivningar
TDDC74 Lab 04 Muterbara strukturer, omgivningar 1 Översikt I den här laborationen kommer ni att lära er mer om: Tillstånd, och skillnader mellan ren funktionell programmering och imperativ. Skillnaden
Läs merVRay för Max Camilla Ravenna / André Ravenna Alto Punto 2012 Alto Punto Askims Stationsväg 21 436 40 Askim
VRay för Max Camilla Ravenna / André Ravenna Alto Punto 2012 Alto Punto Askims Stationsväg 21 436 40 Askim ISBN 978-91-637-2533-3 Innehåll 1: Kom igång 5 2: Nödvändiga inställningar 6 2.1: V-Ray fliken
Läs merFotorealistiska bilder 1 PV360 kap 1 7: Grunder samt material och dekaler i Photoview 360
Fotorealistiska bilder 1 PV360 kap 1 7: Grunder samt material och dekaler i Photoview 360 1 Att skapa en fotorealistisk bild kan sägas bestå av två delar: - Den artstiska delen. Att välja scen, ljussättning,
Läs merTDDC30 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 merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Läs mer2D-grafik. Gustav Taxén
2D-grafik Gustav Taxén gustavt@csc.kth.se 2D164 Grafik och Interaktionsprogrammering VT 27 Framebuffer Datorminne som lagrar information för pixlarna som ska visas på skärmen Grafikkortet hämtar värdena
Läs merTentamen *:58/ID100V Programmering i C Exempel 3
DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst
Läs merKapitel 6 - Undantag
Kapitel 6 Undantag Kapitel 6 - Undantag Undantag (exceptions), returvärden throw, try och catch new, bad_alloc, nothrow Undantag och std::auto_ptr throw() i funktionsdeklaration try som funktionskropp
Läs merIDA kursmaterial Informationsblad make. make
make make är ett verktyg som främst används för att underhålla, uppdatera och återskapa program och filer. Det är dock ett generellt verktyg som kan användas även i många andra sammanhang. En avancerad
Läs merHej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer
Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded
Läs merTentamen TEN1 HI1029 2014-05-22
Tentamen TEN1 HI1029 2014-05-22 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha
Läs mer(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
Läs merObjektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Läs merDD2387 Programsystemkonstruktion med C++ Tentamen 3 Onsdagen 7 januari, 14:00-18:00
DD2387 Programsystemkonstruktion med C++ Tentamen 3 Onsdagen 7 januari, 14:00-18:00 Introduktion Skriv dina svar på separata papper, dessa scannas in efter inlämning. Du kan skriva på båda sidor. Skriv
Läs merSimulering med ModelSim En kort introduktion
Linköpings universitet Institutionen för systemteknik Laborationer i digitalteknik Datorteknik 2018 Simulering med ModelSim En kort introduktion TSEA22 Digitalteknik D TSEA51 Digitalteknik Y TSEA52 Digitalteknik
Läs merGissa det hemliga talet
Laborationsanvisning Gissa det hemliga talet Steg 2, laborationsuppgift 1 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i
Läs merIntroduktion till programmering, hösten 2011
Föreläsning 1 Programmering är ett hantverk. Det betyder att man inte kan läsa sig till den förmågan, man måste träna och man tränar genom att skriva mer och mer avancerade program. Programmering förutsätter
Läs merNyheter i Topocad 17. Mätdata. Nya beräkningsfunktioner. Mätdataprotokollet
Nyheter i Topocad 17 Mätdata Nya beräkningsfunktioner Beräkningsfunktion 3D Svep Funktionen använder inmätt linje och sveper en symbol längs med linjen. På samtliga 3D-funktioner kan man nu ange Produktkod.
Läs merTDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om
Läs merFöreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Läs merF4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Läs merRobotarm och algebra
Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson 2010-12-07 Robotarm och algebra I denna laboration skall du lära dig lite mer om möjlighetera att rita ut mer avancerade
Läs merDAT043 - Föreläsning 7
DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar
Läs mer