Programmering grunnkurs TDAT1001: Grafikkdel. Introduksjon
|
|
|
- Dan Thomassen
- 10 år siden
- Visninger:
Transkript
1 Programmering grunnkurs TDAT1001: Grafikkdel Introduksjon Hva er grafisk databehandling? side 2 Noen eksempler på datagrafikk side 3 Undervisningsopplegg og læremateriell side 4 Introduksjon til OpenGL med Javabinding, JOGL side 5-6 Hva kan OpenGL gjøre: side 7 Basisstrukturen i et OpenGL-program kan være enkel: side 8 OpenGL primitiver: side 9 OpenGL metode-/kommandosyntaks side 10 Datatyper side 11 OpenGL en tilstandsmaskin Tilstandsvariable side 12 Noen tilstandsvariable side 13 OpenGL rendering pipeline side Biblioteker relatert til OpenGL side Et lite eksempel: side Programmering grunnkurs TDAT1001-A 14H. Grafikkdelen: Introduksjon til OpenGL med Javabinding JOGL Jan H. Nilsen Leksjon 1, side 1
2 Hva er grafisk databehandling? Omfatter alle aspekter ved det å produsere tegninger eller syntetiske/virtuelle bilder på en dataskjerm Dvs. alt fra det å tegne punkter og linjer på en dataskjerm eller et digitalt framvisningsmedium, til nesten fotorealistiske syntetiske bilder av 3D objekter. I grafisk databehandling blir de 2D- eller 3D-objektene, som skal tegnes ut, først beskrevet ved matematiske modeller. En terning/kube kan for eksempel modelleres matematisk ved å definere et tredimensjonalt koordinatsystem med origo og akser med enheter på aksene. Så angis 3D-koordinatene til hjørnepunktene på terningen, i dette koordinatsystemet. Prosesseringene som utføres på dataene som genereres fra den matematiske beskrivelsen av objektene, (3d-koordinater), fram til ferdige uttegninger på en dataskjerm, kalles rendering. Ulike grafiske programvaresystemer vil som oftest ha ulike måter å gjøre dette på. I dette faget skal vi benytte det grafiske programvaresystemet OpenGL. Leksjon 1, side 2
3 Noen eksempler på datagrafikk Web-siden: Fra OpenGL Programming Guide The Red Book Appendix J Plate 1. The scene from the cover of this book, with the objects rendered as wireframe models. Plate 2. The same scene using fog for depth-cueing (lines further from the eye are dimmer). Plate 3. The same scene with antialiased lines that smooth the jagged edges Plate 4. The scene drawn with flat-shaded polygons (a single color for each filled polygon). Plate 5. The scene rendered with lighting and smooth-shaded polygons. Plate 6. The scene with texture maps and shadows added. Plate 7. The scene drawn with one of the objects motion-blurred. The accumulation buffer is used to compose the sequence of images needed to blur the moving object. Plate 8. A close-up shot - the scene is rendered from a new viewpoint. Plate 9. The scene drawn using atmospheric effects (fog) to simulate a smokefilled room. Leksjon 1, side 3
4 Undervisningsopplegg og læremateriell Tre forelesninger: Introduksjon til grafisk databehandling ved bruk av OpenGl med Javabinding JOGL Transformasjoner Farge og lys Tre øvinger Læremateriellet er forelesningene, øvingene og stoff hentet fra nettet: Se: En eldre versjon av boka OpenGL Programming Guide Red Book ligger på nettet. Mesteparten av lærestoffet finnes i deler av kap Leksjon 1, side 4
5 OpenGL Introduksjon til OpenGL med Javabinding, JOGL 1. er etablert som en industristandard og referansestandard for generell 3D grafikk 2. er utviklet av Silicon Graphics. 3. utvikles nå under kontroll av Khronos Group. Beskrivelse av denne virksomheten finnes på: Her finnes også linker til beskrivelser, kurs og eksempler. Det finnes en masse informasjon om OpenGL på nettet. OpenGL er utviklet og beskrevet som en plattformuavhengig pakke og kan kjøres på en rekke plattformer: MS-Windows, Linux, Unix, MacOS, OS/2. Se f.eks: Vi kan benytte OpenGL fra flere programmeringsspråk. Det finnes i dag komplette språkbindinger for i hvert fall C, C++, C#, Fortran og Java. Leksjon 1, side 5
6 Introduksjon til OpenGL fortsetter OpenGL er et programvaregrensesnitt- mot grafisk hardware(skjerm, printer, grafikkakselerator,.. osv). OpenGL består av ca 250 basismetoder/kommandoer som kan benyttes til å spesifisere objekter og operasjoner som er nødvendige for å lage interaktive, 3D grafiske anvendelser OpenGL er hardware og plattformuavhengig. ( Kan kjøres på Windows, MAC, Linux, Unix,..) OpenGL innholder opprinnelig ingen kommandoer/metoder for å utføre vindus/skjermoperasjoner eller for å motta brukerinput OpenGL tilbyr ingen (få) høy-nivå-kommandoer/metoder for å beskrive modeller av 3D-objekter (glu og glut) OpenGL tilbyr kommandoer/metoder for å bygge egne modeller av objekter på grunnlag av et lite sett med geometriske primitiver: (hjørne)punkter, linjer og polygoner Leksjon 1, side 6
7 OpenGL primitiver: Leksjon 1, side 7
8 Hva kan OpenGL gjøre: Konstruere objekter ved hjelp av geometriske primitiver og dermed visualisere matematiske beskrivelser av objektene. (OpenGL betrakter punkter, linjer, polygoner, digitale bilder (texture) som primitiver) Ordne objekter i 3D-rom og velge betraktningsposisjon og belysning for å se på objektene. Beregne fargene på objektene. Fargene kan være eksplisitt gitt av anvendelsen, bestemt av betraktningsbetingelser, eller ved tekstur/ materialegenskaper på objektene, og av kombinasjoner av disse tre beregningsmetodene. Omforme de matematiske beskrivelsene av objektene og objektenes tilhørende farger, til pixler på skjermen. OpenGL kan også utføre andre operasjoner som for eksempel eliminere skjulte flater, tåkelegge, osv. Leksjon 1, side 8
9 Basisstrukturen i et OpenGL-program kan være enkel: Hovedoppgavene er: Initiere visse tilstander som kontrollerer hvordan OpenGL rendrer (render) objekter eller hele sener Spesifisere objektene som skal rendres. Render: Den prosessen som en datamaskin utfører når den skaper (tegner opp) digitale bilder av objekter på grunnlag av matematiske modeller av objektene. Modellene av objektene er matematiske modeller. Modellene blir konstruert på grunnlag av et lite sett med geometriske primitiver: punkter, linjer og polygoner. Primitivene spesifiserer objektenes hjørne/overflatepunkter. Det endelige produktet etter en renderingsprosess er et bilde av objektene som består av pixler tegnet på en dataskjerm. Se feks.: Leksjon 1, side 9
10 OpenGL metode-/kommandosyntaks OpenGL metoder skrevet i java, begynner med gl.gl + Metodenavn. Sammensatte metodenavn i OpenGL skrives med store bokstaver også for hvert av de egne ordene i det sammensatte navnet. Konstanter skrives med store bokstaver og understrekningstegn mellom de sammensatte ordene. Se eksemplet under: Eks Tegning av et polygon: gl.glclearcolor(0.0, 0.0, 0.0, 0.0); //angir fargen som skal benyttes til å rense fargebufferet: svart gl.glclear(gl.gl_color_buffer_bit); //renser fargebuf. og setter fargen til rensefargen. gl.glcolor3f(1.0f, 1.0f, 1.0f); // Setter fargen på objektene som skal tegnes: hvit gl.glortho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); //aktiverer en ortogonal projeksjon og angir synsvolum gl.glbegin(gl.gl_polygon); //Start tegn. Def. hvilken type primitiv som skal benyttes gl.glvertex2f(-0.5f, -0.5f); // Angir verdier på polygonets hjørnepunkter (2D) gl.glvertex2f(-0.5f, 0.5f); gl.glvertex2f(0.5f, 0.5f); gl.glvertex2f(0.5f, -0.5f); gl.glend(); //Slutt på tegning av polygonet gl.glflush(); // Sikrer at tegnekommandoene virkelig blir utført Vi ser at for enkelte av metodenavnene så står det 2f eller 3f foran parentesene. Det betyr at antall argumenter er henholdsvis 2 eller 3 og at datatypen på argumentene er float. Leksjon 1, side 10
11 Datatyper Suffix Data Type Typical Corresponding C-language Type Typical Corresp. Java Type b 8-bit integer signed char byte GLbyte s 16-bit integer short short GLshort OpenGL Type Definition i 32-bit integer long int GLint, GLsizei f d ub us ui 32-bit floatingpoint 64-bit floatingpoint 8-bit unsigned integer 16-bit unsigned integer 32-bit unsigned integer float float GLfloat, GLclampf double double GLdouble, GLclampd unsigned char unsigned short unsigned long GLubyte, GLboolean GLushort GLuint, GLenum, GLbitfield Leksjon 1, side 11
12 OpenGL en tilstandsmaskin OpenGL settes i en tilstand/modus som forblir slik til den blir endret. Tilstandene kan omfatte farge, koordinattransformasjoner,. Feks: Sett farge gl.glcolor3f(1.0f, 0.0f, 0.0f); Setter fargen til rød. Etter dette vil hvert objekt som tegnes bli rødt, helt til den gjeldende fargen settes til noe annet. Mange tilstandsvariabler refererer til moduser/tilstander som enten kan slås på eller av. Dette kan gjøres med gl.glenable() og gl.gldisable() gl.glenable(gl.gl_depth_test); //Enables Depth Testing Verdien på tilstandsvariablene kan finnes ved metodekallene: gl.glgetbooleanv(), gl.glgetdoublev(), gl.glgetfloatv(), gl.glgetintegerv(), gl.glgetpointerv(), gl.glisenabled() Leksjon 1, side 12
13 Noen tilstandsvariabler Table B-5 : Coloring State Variables State Variable Description Attribute Group Initial Value Get Command GL_FOG_COLOR Fog color fog 0, 0, 0, 0 glgetfloatv() GL_FOG_INDEX Fog index fog 0 glgetfloatv() GL_FOG_DENSITY Exponential fog density fog 1.0 glgetfloatv() GL_FOG_START Linear fog start fog 0.0 glgetfloatv() GL_FOG_END Linear fog end fog 1.0 glgetfloatv() GL_FOG_MODE Fog mode fog GL_EXP glgetintegerv() GL_FOG True if fog enabled fog/enable GL_FALSE glisenabled() GL_SHADE_MODEL glshademodel() setting lighting GL_SMOOTH glgetintegerv() GL_PROJECTION_M ATRIX Projection matrix stack -- Identity glgetfloatv() gl.glshademodel(gl.gl_smooth); //Enables Smooth Color Shading Leksjon 1, side 13
14 OpenGL rendering pipeline 1. Inndata: Geometriske data eller pixeldata 2. Display lister: mellomlagring av inndata 3. Evaluators: Evaluatorer tilbyr metoder for å utlede/bestemme/beregne hjørnepunkter for å kunne tegne ut en 3D-flate på grunnlag av kontrollpunktene. 4. Per-Vertex Operasjoner: Samlingen av hjørnepunkter vil bli konvertert til primitiver, e.g. linjer, polygoner osv. Romlige koordinater blir transformert og projisert fra en posisjon i 3D verden til en posisjon på skjermen, 2D. 5. Primitive Assembly Klipping er en viktig del av primitiv assembly. 6. Texture Assembly: OpenGL kan legge textur-bilder på geometriske objekter 7. Rasterisering. Omforming av geometriske- og pixel-inndata til fragmenter. 8. Fragmentoperasjoner(skjermpixler) Før de endelige pixleverdiene blir lagret i bildelageret/framebufferet, blir det utført en rekke operasjoner som kan endre og fjerne fragementer Leksjon 1, side 14
15 OpenGL rendering pipeline 1. Inndata: Geometriske data eller pixeldata 2. Display lister: mellomlagring av inndata 3. Evaluators: Alle geometriske primitiver kan beskrives av hjørnepunkter (Vertices). Noen flater kan beskrives av kontrollpunkter og matematiske basisfunksjoner. Evaluatorer tilbyr metoder for å utlede/bestemme/beregne hjørnepunkter for å kunne tegne ut flaten basert på kontrollpunktene. 4. Per-Vertex Operasjoner: Samlingen av hjørnepunkter vil bli konvertert til primitiver, for eks. linjer polygoner osv. Romlige koordinater blir transformert og projisert fra en posisjon i 3D verden til en posisjon på skjermen. 5. Primitive Assembly Klipping er en viktig del av primitiv assembly. Punkt klipping, linje og polygonklipping. Perspektiv divisjon. Objekter langt borte ser mindre ut. Resultatet av P.A. er fullstendige geometriske primitiver som er transformert og klippet med rettfarge og dybde og også med texturverdier og retningslinjer for rasterisering. 6. Texture Assembly: OpenGL kan legge textur-bilder på geometriske objekter for å få de til å se mer realistiske ut. Leksjon 1, side 15
16 OpenGL rendering pipeline 7 Rasterisering. Omforming av geometriske- og pixel-inndata til fragmenter. Hver fragmentrute tilsvarer en pixel i bildebufferet. Når hjørnepunkter, vertices, knyttes sammen til linjer eller indre pixler beregnes for å fylle polygoner, blir linje og polygonstriper, linjebredde, punktstørrelse, skyggeleggingsmodell og overdekkingsberegninger for på unngå alliasing, vurdert. Farge og dybdeverdier blir tilordnet hver enkelt pixel/fragmentrute. 8 Fragmentoperasjoner(skjermpixler) Før de endelige pixlverdiene blir lagret i bildelageret/ framebufferet, blir det utført en rekke operasjoner som kan endre og til og med fjerne fragementer. Alle disse operasjonene kan enables eller disables, dvs slås av eller på. Den første operasjonen som kan bli slått på er tekstur, hvor et teksturelement blir generert fra teksturminnet for hvert fragment og lagt oppe på fragmentet. Så kan eventuelt tåkeberegninger bli utført. Deretter kan følgende tester utføres, scissor/klippetesten(default klipperektangel matcher størrelsen på vinduet på skjermen og klippetesten er slått av). Så kan det utføres en alpha/gjennomsiktighetstest, og dybdebuffer- test for å fjerne skjulte flater. Dersom et fragment ikke består en påslått-test, kan det medføre at den videre prosesseringen av en fragmentrute avsluttes. Til slutt kan blending (det innkommende fragmentets R,G,B og alpha-verdier blir kombinert med de samme R,G,B-verdiene på det pixelet som allerede er lagret på den samme plassen i bildebufferet), dithering (kan øke fargeoppløsningen på bekostning av romlig oppløsning ved at fargeverdien i et pixel, blir beregnet på grunnlag av omgivende pixler), logiske operasjoner (OR, XOR og Invert) og maskering av en bit-maske bli utført. Etter alt dette blir det grundig prosesserte fragmentet lagt på riktig plass i skjermminnet som en pixelverdi. Leksjon 1, side 16
17 Biblioteker relatert til OpenGL GLU (OpenGL Utility Library) Inneholder rutiner/metoder som benytter flere lavnivå OpenGL metoder til å utføre oppgaver som b.a. å sette opp matriser for ulike betraktningsprojeksjoner: glu.gluperspective(glfloat fovy, GLfloat h/ Glfloat w, Glfloat near, GLfloat far); GLU-rutinene begynner med glu.glumetode/rutinenavn() Leksjon 1, side 17
18 Biblioteker relatert til OpenGL GLUT (OpenGL Utility Tookit) OpenGL er uavhengig av vindussystemer og operativsystemer. OpenGL inneholder ingen kommandoer for å åpne vinduer eller lese hendelser fra tastatur eller mus. GLUT forenkler åpning av vinduer og registrering av input. OpenGL s tegnekommandoer er begrenset til å generere enkle geometriske primitiver (punkter, linjer og polygoner) GLUT inneholder en god del rutiner som lager mer kompliserte 3d-objekter (teapot, torus(smultringer), kuler osv). GLU inneholder også noen rutiner som kan generere noen av de samme figurene som GLUT (kule, sylinder, skiver) Leksjon 1, side 18
19 Et lite eksempel: Tegning av en trekant og en firkant Et enkelt rammeverk for kjøring av OpenGl-programmer i Java /* */ import java.awt.*; // klassene Color og Graphics import java.util.*; import javax.swing.*; // klassene JFrame og JPanel import javax.media.opengl.*; // JOGL class Vindu extends JFrame { publicvindu(string tittel) { settitle(tittel); setdefaultcloseoperation(exit_on_close); TegningOv1_1JOGL tegningen = new TegningOv1_1JOGL(400, 400); add(tegningen); pack(); } } /*Klassen som inneholder main*/ class GrafikkEksempelOv1JOGL { publicstatic void main(string[] args) { Vindu etvindu = new Vindu("En trekant og en firkant"); etvindu.setvisible(true); } } Leksjon 1, side 19
20 Et lite eksempel: Tegning av en trekant og en firkant Del av tegnefila/klassen TegningOv1_1JOGL : public void drawglscene(glautodrawable gldrawable) { GL gl = gldrawable.getgl(); gl.glclear(gl.gl_color_buffer_bit GL.GL_DEPTH_BUFFER_BIT); //Clear the Color buffer and the Depth Buffer gl.glloadidentity(); //Initializes the current matrix to an identity matrix gl.gltranslatef(-1.5f,0.0f,-8.0f); // Move Left 1.5 Units and Into The Screen 8 gl.glbegin(gl.gl_triangles); // Start Drawing Triangles gl.glvertex3f( 0.0f, 1.0f, 0.0f); // Top gl.glvertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left gl.glvertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right gl.glend(); // End Drawing the Triangle gl.gltranslatef(3.0f,0.0f,0.0f); // Move Right 3 Units gl.glbegin(gl.gl_quads); // Start Draw a Quad gl.glvertex3f(-1.0f, 1.0f, 0.0f); // Top Left gl.glvertex3f( 1.0f, 1.0f, 0.0f); // Top Right gl.glvertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right gl.glvertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left gl.glend(); // Done Drawing the Quad } /** void display() Draw to the canvas. */ /* Purely a Java thing. Simple calls drawglscene once GL is initialized*/ public void display(glautodrawable gldrawable) { GL gl = gldrawable.getgl(gldrawable); drawglscene(gldrawable); // Calls drawglscene() gldrawable.swapbuffers(); //Swap buffers gl.glflush(); // Tvinger tidligere buffrede OpenGL kommandoer til å utføres med en gang. } Leksjon 1, side 20
1 Hva er grafisk databehandling?
Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag 1 Hva er grafisk databehandling? Jan H. Nilsen 14.08.2014 Lærestoffet er utviklet for faget LV381D 3D-Programmering med OpenGL og Java Resymé:
Leksjon G2: Transformasjoner
Programmering grunnkurs TDAT: Grafikkdel Leksjon G: Transformasjoner Fra modell til tegning på skjerm side Modell Plantransformasjoner/translasjon side 3 Modell Plantransformasjoner/skalering side 4 Modell
Leksjon G2: Transformasjoner
Programmering grunnkurs TDAT: Grafikkdel Leksjon G: Transformasjoner Fra modell til tegning på skjerm side Modell Plantransformasjoner/translasjon side 3 Modell Plantransformasjoner/skalering side 4 Modell
Leksjon 2: Transformasjoner
Lineær algebra med grafiske anvendelser http://www.aitel.hist.no/fag/_lag/ Leksjon 2: Transformasjoner Fra modell til tegning på skjerm side 2 Modell Plantransformasjoner/translasjon side 3 Modell Plantransformasjoner/skalering
Leksjon 2: Transformasjoner
Lineær algebra med grafiske anendelser Leksjon : Transformasjoner Fra modell til tegning på skjerm side Modell Plantransformasjoner/translasjon side 3 Modell Plantransformasjoner/skalering side 4 Modell
Moving Objects. We need to move our objects in 3D space.
Transformations Moving Objects We need to move our objects in 3D space. Moving Objects We need to move our objects in 3D space. An object/model (box, car, building, character,... ) is defined in one position
Leksjon 3: Lys og materialer
Lineær algebra med grafiske anvendelser Leksjon 3: Lys og materialer Fjerning av skjulte flater side 2 OpenGL Lysmodellering side 3 Lystyper og tilhørende materialrespons Bakgrunnslys (Ambient light) side
Tåke (Fog) Grunnleggende Grafikk Våren Tåke. pname og param. OpenGL innebygde tåke støtte som. Må enable tåke. Sett tåke tilstander
Tåke (Fog) OpenGL innebygde tåke støtte som Grunnleggende Grafikk Våren 2007 Tåke og OpenGL Extensions Blender hver piksel med tåke fargen, bruker blend faktor som er avhengig av distansen til kamera,
Buffer i OpenGL. Grunnleggende Grafikk Våren 2007. Color Buffer Per-Pixel Buffer Storage. Color buffer. Kommando glgetintegerv(parameter, GLint *svar)
Buffer i OpenGL Grunnleggende Grafikk Våren 2007 OpenGL Buffers og Spesialeffekter Arnt Roald Kristoffersen [email protected] D3390 Forskjellige buffer Color buffer Depth buffer Stencil buffer Accumulation
Del 1 En oversikt over C-programmering
Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av
1 Hva er grafisk databehandling?
Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag 1 Hva er grafisk databehandling? Jan H. Nilsen 14.08.2016 Lærestoffet er utviklet for faget LV381D 3D-Programmering med OpenGL og Java Resymé:
Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays
Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson
Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007.
Object interaction Grunnleggende programmering i Java Monica Strand 3. september 2007 1 Innhold Til nå: Hva objekter er og hvordan de implementeres I klassedefinisjonene: klassevariable (fields), konstruktører
Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon
Oversikt INF1000 Uke 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning Uttrykk
Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon
Kort om meg INF1000 Uke 2 Variable, enkle datatyper og tilordning Fredrik Sørensen Kontor: Rom 4311-NR, Informatikkbygget Brukernavn/e-post: [email protected] Utdanning: Dataingeniør, 2000 Cand.Scient,
Leksjon 2. Setninger og uttrykk
6108 Programmering i Java Leksjon 2 Setninger og uttrykk Del 2 Roy M. Istad 2015 Uttrykk, operatorer og verdier int tall = 3; int x = 1 + tall; // x er 4 Uttrykk: Variabler, verdier, konstanter og metodekall
Bilder for Tekstur Mapping. Grunnleggende Grafikk Våren 2007
Bilder for Tekstur Mapping Grunnleggende Grafikk Våren 2007 Til og med versjon 1.5 av OpenGL Oppløsningen må være opphøyd i andre (2^X): 2,4,8,16,32,64,128,256,... Teksturer 256 x 256 pixels Arnt Roald
public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
INF1000 undervisningen INF 1000 høsten 2011 Uke september
INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første
Kanter, kanter, mange mangekanter
Kanter, kanter, mange mangekanter Nybegynner Processing PDF Introduksjon: Her skal vi se på litt mer avansert opptegning og bevegelse. Vi skal ta utgangspunkt i oppgaven om den sprettende ballen, men bytte
AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE
AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE Emne: Informatikk II Emnekode: LO325E Faglig veileder: G.Milvang og H.Hemmer Gruppe(r): 2EA,2EB,2EC Dato:12.12.03 Eksamenstid:9 00-14 00 Eksamensoppgaven
Grafiske brukergrensesnitt med Swing og AWT
Grafiske brukergrensesnitt med Swing og AWT - 1 av 11 INNHOLD INTRODUKSJON 3 VINDUER, RAMMER OG PANELER. 4 KOMPONENTER OG VINDUSELEMENTER 6 KNAPPER OG KNAPPELYTTERE.. 8 LAYOUT.. 10 APPENDIX. 11 2 av 11
Leksjon 2. Setninger og uttrykk
6108 Programmering i Java Leksjon 2 Setninger og uttrykk Del 2 Roy M. Istad 2015 Uttrykk, operatorer og verdier int tall = 3; int x = 1 + tall; // x er 4 Uttrykk: Variabler, verdier, konstanter og metodekall
Bildebehandling med Python og EzGraphics
Bildebehandling med Python og EzGraphics I denne oppgaven skal dere jobbe med bildebehandling. På samme måte som vi jobbet med lyd tidligere, skal vi nå se på bilder. Vi kan bruke EzGraphics til alt vi
public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
Programmeringsspråket C
Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger
INF1000 Metoder. Marit Nybakken [email protected] 16. februar 2004
INF1000 Metoder Marit Nybakken [email protected] 16. februar 2004 Motivasjon Når man begynner å skrive store programmer, vil man fort oppleve at programmene blir uoversiktlige. Det blir vanskeligere
GUI («Graphical User Interface»)
GUI («Graphical User Interface») Om GUI JavaFX Se også på Infoskrivet https://www.uio.no/studier/emner/matnat/ ifi/in1010/v18/gui/fx-intro-in1010.pdf Programkoden i https://www.uio.no/studier/emner/ matnat/ifi/in1010/v18/gui/
INF1000 : Forelesning 1 (del 2)
INF1000 : Forelesning 1 (del 2) Java Variable og tilordninger Heltall, desimaltall og sannhetsverdier Utskrift på skjerm Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet
UNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 13. juni 2006 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 5
TOD063 Datastrukturer og algoritmer
TOD063 Datastrukturer og algoritmer Øving : 3 Utlevert : Uke 7 Innleveringsfrist : 26. februar 2010 Klasse : 1 Data og 1 Informasjonsteknologi Gruppearbeid: 2-3 personer pr. gruppe. Oppgave 1 Vi skal lage
HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning
HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Eksamen i SOD 165 Grafiske metoder Klasse : 3D Dato : 15. august 2000 Antall oppgaver : 4 Antall sider : 4 Vedlegg : Utdrag fra OpenGL Reference Manual
INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk
INF1010 - Våren 2015 Li' repe$sjon om Tråder og GUI Stein Gjessing,, Universitetet i Oslo 1 GUI, tråder og hendelser Op-sys (Win, Linux,..) Ditt Program sin Event Dispatch Thread Hver ting brukeren gjør
Visuell Programmering: Kom i gang med Processing
Visuell Programmering: Kom i gang med Processing Et enkelt program: Syntaks introdusert: Kommentarer, print(), println(), size(). + Start opp processing + Skriv en åpningskommentar på toppen av programmet
Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket
Programmeringsspråk for nybegynnere Krav til språket Hva om vi laget vårt eget språk til INF1000? Programmeringsspråket må være så enkelt som mulig. (Programmering er vanskelig nok som det er.) Hvilke
Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.
Forkurs INF1010 Dag 2 Andreas Færøvig Olsen ([email protected]) Gard Inge Rosvold ([email protected]) Institutt for Informatikk, 14. januar 2016 Forkurs INF1010 - dag 2 Feilmeldinger 2 Forkurs INF1010
Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program
Oversikt INF1000 Uke 1 time 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning
Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen
Forkurs INF1010 Dag 2 Andreas Færøvig Olsen ([email protected]) Tuva Kristine Thoresen ([email protected]) Institutt for Informatikk, 7. januar 2014 Forkurs INF1010 - dag 2 Klasser og pekere Klasser
Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm
Mer om easyio Mer om forgreninger Løkker 7. september 2004 Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 4 1 Tre måter å lese fra terminal Først:
UNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF330 Metoder i grafisk databehandling og diskret geometri Eksamensdag: 3. desember 010 Tid for eksamen: 14.30 18.30 Oppgavesettet
Hvordan lage et sammensatt buevindu med sprosser?
Hvordan lage et sammensatt buevindu med sprosser? I flere tilfeller er et vindu som ikke er standard ønskelig. I dette tilfellet skal vinduet under lages. Prinsippene er de samme for andre sammensatte
INF1000: Forelesning 7
INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Repetisjon forts. Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en
Skilpaddefraktaler Erfaren Python PDF
Skilpaddefraktaler Erfaren Python PDF Introduksjon Vi vil nå jobbe videre med skilpaddekunsten fra tidligere. Denne gangen skal vi tegne forskjellige figurer som kalles fraktaler. Fraktaler er figurer
TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.
1 TDT4105 Informasjonsteknologi, grunnkurs Introduksjon til programmering i Matlab Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.no 2 Frist for øving 1: Fredag 11. Sept. Noen oppstartsproblemer
IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr
IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden [email protected] Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler
RF5100 Lineær algebra Leksjon 1
RF5100 Lineær algebra Leksjon 1 Lars Sydnes, NITH 20.august 2013 I. INFORMASJON FAGLÆRER Kontakt: Lars Sydnes [email protected] 93035685 Bakgrunn: Doktorgrad i Matematikk fra NTNU (2012), Siv.ing. Industriell
AlgDat 10. Forelesning 2. Gunnar Misund
AlgDat 10 Forelesning 2 Oversikt Java repetisjon IDE eller teksteditor + kommandolinje? Java Collections and Generics Programvareutvikling En mengde mer eller mindre veldefinerte metoder (software engineering):
INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen
INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og
Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF Høst 2011)
Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF1000 - Høst 2011) Variabler, uttrykk, fogreninger (if-else) (kapittel 2 og 4.1-4.2 i læreboka, "Rett på Java" 3. utg.) Mål Få trening i teorien du trenger
Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr
Fra Python til Java En introduksjon til programmeringsspråkenes verden [email protected] Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et eksempel Klasser
Kodetime for Nordstrand barneskole
Kodetime for Nordstrand barneskole av Veronika Heimsbakk og Lars Erik Realfsen 1 Hva er Processing? Processing er et programmeringsspråk som er gratis, og tilgjengelig for alle! Man kan programmere i Processing
INF1000: Forelesning 7. Konstruktører Static
INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter
23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.
Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen
IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr
IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden [email protected] Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler
Læringsmål og pensum. https://www.youtube.com/watch? v=nkiu9yen5nc
1 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python Professor Alf Inge Wang 2 https://www.youtube.com/watch? v=nkiu9yen5nc 3 Læringsmål og pensum Mål Lære om
INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010
Grafisk brukergrensesni3 med Swing og awt del 1 GUI (Graphical User Interface)- programmering Hvordan lage et vindu på skjermen Hvordan legge ulike komponenter i vinduet (trykknapper, tekseelter, tekst,
Kapittel 1: Datamaskiner og programmeringsspråk
Kapittel 1: Datamaskiner og programmeringsspråk Redigert av: Khalid Azim Mughal ([email protected]) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen
LØSNINGSANTYDNING EKSAMEN
Universitetet i Agder Fakultet for teknologi og realfag LØSNINGSANTYDNING EKSAMEN Emnekode: Emnenavn: DAT Grafisk Databehandling Dato: 5. desember Varighet: 9 - Antall sider inkl. forside 8 Tillatte hjelpemidler:
Programmeringsspråket C
Programmeringsspråket C Programmeringsspråket C Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard i 1988;
Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk
Innhold uke 7 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2017 uke 7 Siri Moe Jensen Lite tilbakeblikk: Prosedyrer og funksjoner Objektorientert programmering Introduksjon: Hvorfor,
INF1000 (Uke 6) Mer om metoder, tekster
INF1000 (Uke 6) Mer om metoder, tekster Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Rep: Metoder Java-programmene så langt
Programmeringsspråket C
Programmeringsspråket C Programmeringsspråket C Laget til implementasjon av Unix ved AT&Ts Bell labs i Palo Alto 1969 73. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard
Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team
The Green Team Litt Java-historikk I 1991 opprettet Sun Microsystems en arbeidsgruppe som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.
Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:
Konstruktører Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver Punkt p = new Punkt(3,4); class Punkt { skjer følgende: int x, y; 1. Det settes av plass i
INF1000: Forelesning 4. Mer om arrayer Metoder
INF1000: Forelesning 4 Mer om arrayer Metoder MER OM ARRAYER 2 Array som en samling verdier Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene: String[] studenter = new String[500];
Forelesning inf Java 5
Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen
Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59
Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være
Kapittel 8: Programutvikling
Kapittel 8: Programutvikling Redigert av: Khalid Azim Mughal ([email protected]) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk
Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen
Kanter, kanter, mange mangekanter Skrevet av: Sigmund Hansen Kurs: Processing Tema: Tekstbasert, Animasjon Fag: Matematikk, Programmering, Kunst og håndverk Klassetrinn: 8.-10. klasse, Videregående skole
Forelesning inf Java 5
Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen til et Java-program
1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)
Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)
Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.
Tetris Introduksjon Processing Introduksjon Lag starten på ditt eget tetris spill! Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å
Eksamen. Objektorientert Programmering IGR 1372
+ JVNROHQL1DUYLN $YGHOLQJIRU7HNQRORJL Eksamen i Objektorientert Programmering IGR 1372 7LG'HVHPEHU± 7LOODWWHKMHOSHPLGOHU 6NULYHVDNHU2UGE NHU -DYD6RIWZDUH6ROXWLRQV)RXQGDWLRQVRI3URJUDP 'HVLJQVNUHYHWDY/HZLV
Forelesningsnotater SIF8039/ Grafisk databehandling
Forelesningsnotater SIF8039/ Grafisk databehandling Notater til forelesninger over: Kapittel 1: Graphics Systems and Models i: Edward Angel: Interactive Computer Graphics Vårsemesteret 2002 Torbjørn Hallgren
TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang
2 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python Professor Alf Inge Wang 3 https://www.youtube.com/watch? v=nkiu9yen5nc 4 Læringsmål og pensum Mål Lære om
Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!
Tetris Skrevet av: Kine Gjerstad Eide Kurs: Processing Introduksjon Lag starten på ditt eget tetris spill! Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett
INF1000 (Uke 4) Mer om forgreninger, While-løkker
INF1000 (Uke 4) Mer om forgreninger, While-løkker Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen I dag Repetisjon easyio Enkle if-setninger
TDT4110 IT Grunnkurs Høst 2015
TDT4110 IT Grunnkurs Høst 2015 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Løsningsforlag Auditorieøving 1 1 Teori Løsning er skrevet med uthevet tekst
I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker
I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Repetisjon easyio Enkle if-setninger Mer om forgrening While-løkker Are Magnus
Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.
Inf109 Programmering for realister Uke 5 I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse. Før du starter må du kopiere filen graphics.py fra http://www.ii.uib.no/~matthew/inf1092014
Fra sekvensielt til parallelt
Fra sekvensielt til parallelt «Sanntidprogrammering etter 34 år» Øyvind Teig senior utviklingsingeniør Autronica Fire and Security, «a UTC company» Gjesteforelesning på Høgskolen i Sør-Trøndelag (HiST)
TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python
TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python Professor Guttorm Sindre Institutt for datateknikk og informasjonsvitenskap Læringsmål og pensum Mål Vite hva et
1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)
Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)
Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.
Oversikt UNIX shell 1 UNIX shell Beskrivelse Bash 2 Kommandolinje som brukergrensesnitt 3 Input og output 4 Bash builtins 5 Linux utilities Lars Vidar Magnusson () Forelesning i Operativsystemer 30.08.2011
Kapittel 1 En oversikt over C-språket
Kapittel 1 En oversikt over C-språket RR 2015 1 Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske
