Leksjon 3: Lys og materialer

Størrelse: px
Begynne med side:

Download "Leksjon 3: Lys og materialer"

Transkript

1 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 4 Diffust lys (Diffuse light) side 5-6 Speilende/Retningsbestemt lys (Specular light ) side 7-8 Selvlysende/Utstrålt lys ( Emitted light ) side 9 Flatenormaler side Lysegenskaper På- av side 12 Posisjon side 12 Svekking av lysstyrken side 13 Spotlights side 14 Belysningsmodeller: Bakgrunnslys, flatesidespesifikasjon og refleksjonsberegninger side Kodeeksempel på OpenGL-spesifikasjon av en lyskilde og et materiale side Leksjon 3 Side 1

2 Fjerning av skjulte flater Den enkleste måten å fjerne skjulte flater på i OpenGL er å benytte dybdebufferet Et dybdebuffer tilordner en dybde eller avstand fra synsplanet (vanligvis nærmeste klippeplan) til hver pixel i tegnevinduet. Dybdebufferet aktiviseres ved først å slå på dybdetesting ved gl.glenable(). Dette gjøres en gang ved: Steg 1: public void init(){... gl.glenable(gl.gl_depth_test) //Slår på dybdetesting. Gjøres en gang.. Ved uttegning av en ny sene utføres dybdetesting når display-metoden kalles og skjulte flater blir ikke tegnet opp: Steg 2: public void display(glautodrawable gldrawable) { gl.glclear(gl.gl_color_buffer_bit GL.GL_DEPTH_BUFFER _BIT); /* Nullstiller Tilordner dybdeverdier til hver enkelt pixel lik størst mulige avstand fra synsplanet (det fjerneste klippeplanet) */.drawglscene( gldrawable );// Skjulte flater tegnes ikke opp. Steg 2 gjøres hver gang senen tegnes opp, dvs hver gang display() kalles. gl.glclear() sletter innholdet i både color- og depth bufferet og gir de defaultverdier (glcolor(0,0,0,0)) Leksjon 3, side 2

3 OpenGL-Lysmodellering OpenGL søker å modellere lys og belysning ved å anta at lys kan deles inn i røde, grønne og blå komponenter (RGB). Fargen på en lyskilde karakteriseres ved mengden rødt, grønt og blått lys som den sender ut. En flates (lys)-materialegenskaper karakteriseres ved den prosentandelen av det innfallende røde, grønne og blå lyset, som blir reflektert fra flaten i ulike retninger. I OpenGL-belysningsmodellering kan lyset i en sene komme fra flere lyskilder. Hver enkelt av disse lyskildene kan slås av eller på uavhengig av hverandre. I OpenGL lysmodeller, har en lyskilde bare effekt, dersom det finnes flater som kan absorbere og reflektere lys fra denne lyskilden. Hver enkelt flate kan antas å ha ulike lys- og materialegenskaper. I OpenGL antas belysningen å kunne bestå av fire ulike lystyper: Bakgrunnslys(ambient light) diffust lys (diffuse light) Speilende/Retningsbestemt lysstråling (feks direkte sollys, specular light) lys utstrålt fra en (selvlysende)flate (emitted light) Leksjon 3, side 3

4 Lystyper: Bakgrunnslys (Ambient light) I OpenGL: Bakgrunnslys er lys som er så spredt og reflektert at det er umulig å angi noen retning på dette lyset. Bakgrunnslys som treffer en flate, reflekteres og spres likt i alle retninger. Bakgrunnslys gir en jevn/flat lyssetting av en flate. Verdien på bakgrunnslyset og flatematerialets respons på bakgrunnslys kan i OpenGL gis ved: R, G, B, alfa float [] lmodel_ambient = { 0.1f, 0.1f, 0.1f, 1.0f; // alfa [0,1] 1: ikke gjennomsiktig gl.glenable(gl.gl_lighting); Slår på lysberegninger gl.glenable(gl.gl_light0); Slår på lyskilde 0 Egenskaper til bakgrunnslyset: gl.gllightfv(gl.gl_light0, GL.GL_AMBIENT, lmodel_ambient); Flate- materialegenskaper: gl.glmaterial(surface side, GL.GL_AMBIENT, lmodel_ambient); // surface side: GL.GL_FRONT, GL.GL_BACK, GL.GL_FRONT_AND_BACK Belysningsmodell: gl.gllightmodelfv(gl.gl_light_model_ambient, lmodel_ambient); Leksjon 3, side 4

5 Lystyper: Diffust lys (Diffuse light) I OpenGL er diffust lys, lys som kommer fra en bestemt posisjon i rommet. Når det treffer en flate, blir det reflektert like mye i alle retninger. Intensiteten I(v) (energien pr flateenhet på det tilbakereflekterte lyset fra en flate) er proporsjonal med cos til vinkelen v mellom det innfallende lyset og normalen til flaten, N, se figuren under. I(v) = I(0) * cos v Totalt tilbakereflektert lysenergi, Er(v) fra et flatelement, da, vil imidlertid, pga at størrelsen på flateelementet da endrer seg med da/cos v, bli: Er(v) = I(v) * da = I(0) * cos v *( da / cos v) = I(0) * da, dvs. like stor i alle retninger a b Figuren viser hvordan en lysstripe med bredde da treffe en flate. a: flaten står normalt på den innfallende lysstripen b: lysstripen danner vinkelen v med flatenormalen N. Leksjon 3, side 5

6 Lystyper:Diffust lys (Diffuse light) Diffust lys og flatematerialets respons på diffust lys kan i OpenGL gies ved: R G B alfa float [] light_diffuse = { 1.0F, 1.0F, 1.0F, 1.0F // default: hvitt lys for lyskilde 0 gl.glenable(gl.gl_lighting); slår på lysmodellering gl.glenable(gl.gl_light0); slår på lyskilde 0 Egenskaper på det diffuse lyset: gl.gllightfv(gl.gl_light0, GL.GL_DIFFUSE, light_diffuse); Flate- materialegenskaper til flaten som treffes av det diffuse lyset: gl.glmaterialfv( GL.GL_FRONT, GL.GL_DIFFUSE, light_diffuse ); For virkelige objekter vil vanligvis bakgrunnslys og diffust lys gi samme farge på objektene. OpenGL tilbyr derfor muligheten for å sette samme verdier til materialegenskapene til disse to lystypene ved: float [] mat_amb_diff = { 0.1f, 0.5f, 0.8f, 1.0f ; // en dyp blå-grønn farge gl.glmaterialfv(gl.gl_front, GL.GL_AMBIENT_AND_DIFFUSE, mat_amb_diff); Leksjon 3, side 6

7 Lystyper: Speilende/Retningsbestemt lysstråling (Specular light) 1 I OpenGL er speilende/retningsbestemt lysstråling, L, lys som kommer fra en lyskilde på et bestemt sted i rommet («lyskaster»). Når dette lyset treffer en flate, blir det reflektert aller mest i den retningen, R, som tilsvarer en speilrefleksjon fra flaten. Se figuren under: N er flatenormalen, V er betraktningsretningen til observatøren. Intensiteten/energien pr flateenhet på det direkte tilbakereflekterte lyset fra en flate, er avhengig av vinkelen, b, mellom det direkte reflektertes lyset og betraktningsretningen. Beregningen av direkte tilbakespredt lys er i OpenGL avhengig av hvilken lysmodell som er valgt. ( Eks Phong: V(b) proporsjonal med (cos b) n ) Leksjon 3, side 7

8 Lystyper: Speilende/Retningsbestemt lysstråling (Specular light) 2 Spesifikasjon av en lyskilde og materialegenskaper for direkte reflekterende lys i OpenGL: x y z w float [] light_position = {1.0f, 1.0f, 1.0f, 1.0f; default for LIGHT0 {0.0f.0.0f,1.0f,0.0f (eye) R G B alfa float [] light_specular = { 1.0f, 1.0f, 1.0f, 1.0f; float [] mat_specular = { 1.0f, 1.0f, 1.0f, 1.0f; float [] mat_shininess = { 50.0; // VERDIER [ 0.0, 128.0] 0: hele objektet reflekterer, 128: bare en liten flekk på objektet reflekterer. gl.glenable(gl.gl_lighting); gl.glenable(gl.gl_light0); gl.gllightfv( GL.GL_LIGHT0, GL.GL_POSITION, light_position); gl.gllightfv(gl.gl_light0, GL.GL_SPECULAR, light_specular); gl.glmaterialfv(gl.gl_front, GL.GL_SPECULAR, mat_specular);// spes. effekter //materialet har på tilbakerefl. lys med GL.GL_SPECULAR gl.glmaterialfv(gl.gl_front, GL.GL_SHININESS, mat_shininess);// angir størrelse på //den skinnende lysflekken med verdier for GL.GL_SHININESS Leksjon 3, side 8

9 Lystyper: Selvlysende flater Selvlysende flater brukes i OpenGL til å simulere/visualisere for eksempel lamper eller andre lyskilder. Kan betraktes som en materialegenskap til flaten. Flatene ser selvlysende ut, men sender ikke ut lys som kan reflekteres av andre flater. R G B alfa float [] mat_emission = { 0.3f, 0.2f, 0.2f, 1.0f; // gl.glmaterialfv(gl.gl_front, GL.GL_EMISSION, mat_emission ); Leksjon 3, side 9

10 Flatenormaler OpenGL metode-/kommandosyntaks Flatenormalen C i et punkt på en flate bestemmes som kryssproduktet mellom to ikke parallelle vektorer A og B som tangerer flaten i dette punktet (punkt). float[] A = { a1, a2, a3;, float [] B = { b1, b2, b3; float [] punkt = {x, y, z; C = A x B = det i a1 j a2 k a2 b3 a3 b2 a3 a3 b1 a1 b3 b1 b2 b3 a1 b2 a2 b1 Eller normalen til vektorene A og B blir da gitt ved: C = {(a2b3 a3b2)i + (a3b1 a1b3)j + (a1b2 a2b1)k float [] C = {a2b3 a3b2, a3b1 a1b3, a1b2 a2b1; = { A[1]B[2] - A[2]B[1], A[2]B[0]-A[0]B[2], A[0]B[1]-A[1]B[0]; gl.glnormal3fv(c); gl.glvertex3fv(punkt); // Normalen C blir opprettet i punktet punkt Leksjon 3, side 10

11 A B Flatenormaler I lysberegninger i OpenGL inngår beregninger av vinkler mellom vektorer ved skalarprodukter. A B cos v Vektorene må normaliseres før de brukes i OpenGL til å bestemme vinklene. Det gjelder også flatenormalene. Dette kan gjøres ved følgende metoder: public boolean normalize(float [] C){ float nc = (float)math.sqrt C[ 0] C[0] C[1] C[1] C[2] C[2] ; if (nc > nc < ){ C[0] = C[0] / nc; C[1] = C[1] / nc; C[2] = C[2 ]/ nc; return true; else return false; En metode som returnerer et normalisert vektor-/kryssprodukt: public float [] normcrossprod( float[] A, float [] B){ float [] out = new float[3]; out[0] = A[1]*B[2] A[2] * B[1]; out[1] = A[2]*B[0]-A[0]*B[2]; out[2] = A[0]*B[2] A[1]*B[0]; if (normalize( out)) return out; else return null; Vi kan unngå håndarbeidet med å normalisere vektorer ved å skru på automatisk normalisering: ved gl.glenable(gl.gl_normalize); og gl.glnormal3fv(out); Leksjon 3, side 11

12 Lysegenskaper Av og på En OpenGL-implementasjon kan ha mer enn 8 forskjellige lyskilder. De vi bruker må vi gi egenskaper. Etter at de er gitt egenskaper må vi skru dem på eller av. Det gjør vi ved: gl.glenable(gl.gl_ligthn) gl.gldisable(gl.gl_lightn) n: nummer på lyskilden For at OpenGL skal utføre lysberegninger må vi også kalle: gl.glenable(gl.gl_ligthing) slås av ved: gl.gldisable(gl.gl_ligthing) Posisjon En lyskilde kan ha en bestemt posisjon i rommet eller den kan ha en retning, som om lyset kommer uendelig langt borte fra. Posisjonen settes ved: float [] position = {xf, yf, zf, wf ; w = 0: Lyset har retning (x,y,z) w = 1:(x,y,z) er lysposisjon gl.gllightfv(gl.gl_light0, GL.GL_POSITION, position); Default-verdier er (0,0,1,0), for lysposisjon, (0,0,-1,0), for lysretningen langs den neg. z-aksen. Leksjon 3, side 12

13 Lysegenskaper 2 Svekking av lys Intensiteten, I, på retningsbestemt lys som kommer fra en lyskilde i en gitt posisjon i rommet, I 0, kan i OpenGL svekkes ved en faktor f att : I = I 0 * f att dl = avstanden til lyskilde c 1 = konstant svekningskoeffisient c 2 = lineær svekningskoeffisient c 3 = kvadratisk svekningskoeffisient Default-verdier er c 1 = 1, c 2 = c 3 =0. Verdiene på c 1, c 2 og c 3 kan gis ved: gl.gllightf(gl.gl_light0,gl.gl_constant_attenuation,c 1 ) gl.gllightf(gl.gl_light0,gl.gl_linear_attenuation,c 2 ) gl.gllightf(gl.gl_light0,gl.gl_quadratic_attenuation,c 3 ) Leksjon 3, side 13

14 Lysegenskaper 3 Spotlights Retningsbestemt lys som kommer fra en lyskilde i en gitt posisjon i rommet, kan i OpenGL gis en avgrensning innenfor en kjegle med toppunkt i lyskilden. Vinkelen v mellom kjegleaksen og kjegleflaten kan i OpenGL gis ved; gl.gllightf(gl.gl_light0, GL.GL_SPOT_CUTOFF, v); v er mellom 0 og 90 grader. Default verdi på v er 90 grader. Default retning på kjegleaksen er nedover den negative z- aksen og med like stor spredning i alle retninger Retningen på spotlyset kan gis ved: float [] spotdir = { -1.0f, -1.0f, -1.0f // default verdier: {0.0f, 0.0f, -1.0f gl.gllightfv(gl.gl_light0, GL.GL_SPOT_DIRECTION, spotdir); Variasjon i lysintensitet innfor kjeglen, e, kan gis ved: gl.gllightf(gl.gl_light0, GL.GL_SPOT_EXPONENT, e); Leksjon 3, side 14

15 Belysningsmodeller 1 OpenGL belysningsmodeller kan settes vha fire ulike komponenter: Intensiteten på det globale bakgrunnslyset: float [] lmodel_ambient = { 0.2, 0.2, 0.2, 1.0 ; gl.gllightmodelfv(gl.gl_light_model_ambient, lmodel_ambient); Betraktningspunktet er lokalt eller uendelig langt borte gl.gllightmodeli(gl.gl_light_model_local_viewer, GL.GL_TRUE); Lysberegningen skal gjøres forskjellig for fram og baksiden av en flate gl.gllightmodeli(gl.gl_light_model_two_side, GL.GL_TRUE); Fargen på den direkte reflekterte lysstrålingen skal separeres fra fargen på bakgrunnslys og diffust lys, og legges på etter at texture-operasjoner er utført på flaten: gl.gllightmodeli(gl.gl_light_model_color_control,gl.gl_separate_specul AR_COLOR); Slår av separering av specular lys for videre texturfargeberegn: gl.gllightmodeli(gl.gl_light_model_color_control,gl.gl_single_color); Leksjon 3, side 15

16 Belysningsmodeller 2 I OpenGL bestemmes fargen/lysintensiteten på en pixel som følge av belysning fra alle de fire lystypene: Emittert lys (L e ), bakgrunnslys (L a ), diffust lys (L d ) og speilende/retningsbestemt lysstråling (L s ). I tillegg kommer det generelle bakgrunnslyset som ikke refererer til noen spesiell lyskilde (L g ). Totalt får vi: summert opp over alle n lyskildene. Dette tilsvarer den beregningen som skal skje når OpenGL bestemmer verdien i en pixel. Vi må dessuten huske at vi får et tilsvarende uttrykk for hver fargekomponent. Vinkelberegningene, skalarproduktene, settes til 0 dersom vinkelen mellom de to berørte vektorene er større enn 180 grader. Vektorene N, L, R og V blir indirekte bestemt ved at vi plasserer objekter, øyepunkt og lyskilder i rommet ved hjelp av de vanlige transformasjonene. Se slide 7. Leksjon 3, side 16

17 Programeksempel: Roterende belyst kube 1 /** void init() Called just AFTER the GL-Context is created. */ public void init(glautodrawable gldrawable) { GL gl = gldrawable.getgl(); float width = (float)getsize().width; float height = (float)getsize().height; // prepare ligthsource float [] ambient = {0.4f,0.4f,0.4f,1.0f ; float [] diffuse = {1.0f,1.0f,1.0f,1.0f ; float [] position = {1.0f,1.0f,2.0f,0.0f ; float [] lmodel_ambient = {0.4f,0.4f,0.4f,1.0f ; gl.glenable(gl.gl_light0); gl.glenable(gl.gl_lighting); gl.glenable(gl.gl_normalize); gl.gllightfv(gl.gl_light0, GL.GL_AMBIENT, ambient); gl.gllightfv(gl.gl_light0, GL.GL_DIFFUSE, diffuse); gl.gllightfv(gl.gl_light0, GL.GL_POSITION, position); gl.glshademodel(gl.gl_smooth); //Enables Smooth Color Shading (ikke flat/lik (Gl.GL_FLAT) gl.glclearcolor(0.9f, 0.9f, 0.9f, 0.0f); //This Will Clear The Background Color To Light Grey gl.glcleardepth(1.0); //Enables Clearing Of The Depth Buffer gl.glenable(gl.gl_depth_test); //Enables Depth Testing gl.glenableclientstate(gl.gl_color_array); // Enables color arrays gl.glenableclientstate(gl.gl_vertex_array); // Enables vertex arrays gl.glenableclientstate(gl.gl_normal_array); // Enables normal arrays gl.gldepthfunc(gl.gl_lequal); //The Type Of Depth Test To Do gl.glhint(gl.gl_perspective_correction_hint, GL.GL_NICEST); // Really Nice Perspective Calculations Leksjon 3, side 17

18 Programeksempel: Roterende belyst kube 2 // Vertex Array of the 8 Vertexes on the cube. static float [][] hp = {{-1f,-1f,1f, {-1f,1f,1f, {1f,1f,1f, {1f,-1f,1f, {-1f,-1f,-1f, {-1f,1f,-1f, {1f,1f,-1f, {1f,-1f,-1f; // Color Array, one color for each side of the cube static float [][] colors= {{1.0f, 0.0f, 0.0f, {0.0f, 1.0f, 1.0f, {1.0f, 1.0f, 0.0f, {0.0f, 1.0f, 0.0f, {0.0f, 0.0f, -1.0f, {1.0f, 0.0f, 1.0f; // NormalArray for one side of the cube float [] norm = new float[3]; public boolean normalize(float [] C){ // Normalizes a vector C float nc = (float)(math.sqrt( C[0]* C[0] + C[1]* C[1] + C[2]* C[2])); if (nc > f nc < f){ C[0] = C[0] / nc; C[1] = C[1] / nc; C[2] = C[2 ]/ nc; return true; else return false; public float [] normcrossprod( float[] A, float [] B){ // Calculates the cross-product of two vectors A and B // and normalize the result vector out ( surface normal ) float [] out = new float[3]; out[0] = A[1]*B[2] - A[2] * B[1]; out[1] = A[2]*B[0]-A[0]*B[2]; out[2] = A[0]*B[2] - A[1]*B[0]; if (normalize( out)) return out; else return null; Leksjon 3, side 18

19 Programeksempel: Roterende belyst kube 3 // Draw a polygonside between the points a,b,c og d on the cube public void polygon( int a, int b, int c, int d, GL gl) { //static float [][] hp = {{-1f,-1f,1f, {-1f,1f,1f, {1f,1f,1f, {1f,-1f,1f, {-1f,-1f,-1f, {-1f,1f,-1f, {1f,1f,-1f, {1f,-1f,-1f; float [] v1 = { hp[b][0]-hp[a][0], hp[b][1]-hp[a][1], hp[b][2]-hp[a][2]; // vector ab (v1) float [] v2 = { hp[d][0]-hp[a][0], hp[d][1]-hp[a][1], hp[d][2]-hp[a][2]; // vector ad (v2) norm = normcrossprod( v1, v2); // Calculates a surface normal from v1 and v2 on a cube side gl.glcolor3fv(colors[a],0); // Sets the color on the cubeside gl.glbegin(gl.gl_polygon); gl.glnormal3fv(norm); // Adress the surface normal to point a gl.glvertex3fv(hp[a],0); dersom ikke gl.glvertex3fv(); virker bruk (gl.glvertex3f(hp[a][0],hp[a][1],hp[a][2]); gl.glvertex3fv(hp[b],0); gl.glvertex3fv(hp[c],0); gl.glvertex3fv(hp[d],0); gl.glend(); // Draw the cube by calling polygon() The order of the points on the cube side ensure pos outward normals public void kube(gl gl){ polygon( 0, 4, 7, 3,gl); polygon( 4, 5, 6, 7,gl); polygon( 5, 4, 0, 1,gl); polygon( 1, 2, 6, 5,gl); polygon( 2, 1, 0, 3,gl); polygon( 3, 7, 6, 2,gl); Leksjon 3, side 19

20 Programeksempel: Roterende belyst kube 4 float rcube = 0.0f; public void drawglscene4(glautodrawable gldrawable) { GL gl = gldrawable.getgl(); gl.glclear(gl.gl_color_buffer_bit GL.GL_DEPTH_BUFFER_BIT); gl.glloadidentity(); glu.glulookat(3.0,2.0,3.0, 0.0,0.0,0.0, 0.0,1.0,0.0); gl.glrotatef(rcube, 1.0f,1.0f,0.0f); // Rotate The Cube On The X and Y axis kube(gl); // Calls drawing of the cube rcube -=0.30f; // Decrease The Rotation Angle For The cube // Purely a Java thing. Simple calls DrawGLScene once GL is initialized public void display(glautodrawable gldrawable) { GL gl = gldrawable.getgl(); //Set material, yellowish float amb[] = {0.3f,0.3f,0.0f,1.0f; float diff[] = {1.0f,1.0f,0.5f,1.0f; float spec[] = {0.6f,0.6f,0.5f,1.0f; float shine = 0.25f; gl.glmaterialfv(gl.gl_front,gl_ambient,amb); gl.glmaterialfv(gl.gl_front,gl_diffuse,diff); gl.glmaterialfv(gl.gl_front,gl_specular,spec); gl.glmaterialf(gl.gl_front,gl.gl_shininess,shine*128.0f); for(int i=0;i <1000; i++){ drawglscene4(gldrawable); gldrawable.swapbuffers(); gl.glflush(); // Calls DrawGLScene //Swap buffers // release GL Leksjon 3, side 20

Leksjon 3: Lys og materialer

Leksjon 3: Lys og materialer Lineær algebra med grafiske anvendelser http://www.aitel.hist.no/fag/_lag/ Leksjon 3: Lys og materialer Innledning side 2 Fjerning av skjulte flater side 2 Lystyper og tilhørende materialrespons side 3

Detaljer

RF5100 Lineær algebra Leksjon 10

RF5100 Lineær algebra Leksjon 10 RF5100 Lineær algebra Leksjon 10 Lars Sydnes, NITH 11. november 2013 I. LITT OM LYS OG FARGER GRUNNLEGGENDE FORUTSETNINGER Vi ser objekter fordi de reflekterer lys. Lys kan betraktes som bølger / forstyrrelser

Detaljer

Et enkelt rammeverk for kjøring av OpenGL-programmer i Java

Et enkelt rammeverk for kjøring av OpenGL-programmer i Java 1 Et enkelt rammeverk for kjøring av OpenGL-programmer i Java JOGL2 API og dokumentasjon kan lastes ned fra siden: http://www.aitel.hist.no/fag/_jva/forelesninger/grafikk/grafikk_h2015/nedlasting_og_installasjonsveiledning_jogl2.pdf

Detaljer

Leksjon G2: Transformasjoner

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

Detaljer

Leksjon 2: Transformasjoner

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

Detaljer

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

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

Detaljer

KONTINUASJONSEKSAMEN I EMNE TDT4230 VISUALISERING TIRSDAG 9. AUGUST 2005 KL LØSNINGSFORSLAG

KONTINUASJONSEKSAMEN I EMNE TDT4230 VISUALISERING TIRSDAG 9. AUGUST 2005 KL LØSNINGSFORSLAG Side 1 av 8 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for fysikk, informatikk og matematikk Institutt for datateknikk og informasjonsvitenskap KONTINUASJONSEKSAMEN I EMNE TDT430 VISUALISERING

Detaljer

UNIVERSITETET I OSLO

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

Detaljer

RF5100 Lineær algebra Leksjon 1

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 lars.sydnes@nith.no 93035685 Bakgrunn: Doktorgrad i Matematikk fra NTNU (2012), Siv.ing. Industriell

Detaljer

Visuell Programmering: Kom i gang med Processing

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

Detaljer

Universitetet i Agder Fakultet for teknologi og realfag LØSNINGSFORSLAG. Dato: 11. desember 2008 Varighet: 0900-1300. Antall sider inkl.

Universitetet i Agder Fakultet for teknologi og realfag LØSNINGSFORSLAG. Dato: 11. desember 2008 Varighet: 0900-1300. Antall sider inkl. Universitetet i Agder Fakultet for teknologi og realfag LØSNINGSFORSLAG Emnekode: Emnenavn: DAT2 Grafisk Databehandling Dato:. desember 28 Varighet: 9 - Antall sider inkl. forside 7 OPPGAVE. (2%) a) b)

Detaljer

LØSNINGSANTYDNING. HØGSKOLEN I AGDER Fakultet for teknologi. DAT 200 Grafisk Databehandling. Ingen. Klasse(r): 2DTM, 2DT, 2 Siving, DT

LØSNINGSANTYDNING. HØGSKOLEN I AGDER Fakultet for teknologi. DAT 200 Grafisk Databehandling. Ingen. Klasse(r): 2DTM, 2DT, 2 Siving, DT HØGSKOLEN I AGDER Fakultet for teknologi LØSNINGSANTYDNING EMNE: FAGLÆRER: DAT 2 Grafisk Databehandling Morgan Konnestad Klasse(r): 2DTM, 2DT, 2 Siving, DT Dato: 5.2.5 Eksamenstid, fra-til: 9. - 3. Eksamensoppgaven

Detaljer

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; } Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =

Detaljer

Leksjon 2: Transformasjoner

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

Detaljer

Kanter, kanter, mange mangekanter

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

Detaljer

OPPGAVE 5b og 8b Java Kode

OPPGAVE 5b og 8b Java Kode OPPGAVE 5b og 8b Java Kode public class Kant boolean behandlereturavbil() BehandleReturAvBil behandler = new BehandleReturAvBil(this); String regnr; int kmstand, tanknivaa; boolean erskadet; // 1: Få verdiene

Detaljer

Leksjon G2: Transformasjoner

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

Detaljer

Moving Objects. We need to move our objects in 3D space.

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

Detaljer

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer, bruker og telefonnummer Med

Detaljer

INF1000: Forelesning 6. Klasser og objekter del 1

INF1000: Forelesning 6. Klasser og objekter del 1 INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK 2 Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer navn, brukernavn og telefonnummer.

Detaljer

PG 4200 Algoritmer og datastrukturer Innlevering 1. Frist: 2.februar kl 21.00

PG 4200 Algoritmer og datastrukturer Innlevering 1. Frist: 2.februar kl 21.00 PG 4200 Algoritmer og datastrukturer Innlevering 1 Frist: 2.februar kl 21.00 Utdelt materiale: Alle filer som nevnes er inneholdt i zip-filen innlevering1.zip. Innlevering: Besvarelsen skal være i form

Detaljer

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4 Forelesning inf - Java 4 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I

Detaljer

Forelesning inf Java 4

Forelesning inf Java 4 Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette

Detaljer

Farger. Introduksjon. Skrevet av: Sigmund Hansen

Farger. Introduksjon. Skrevet av: Sigmund Hansen Farger Skrevet av: Sigmund Hansen Kurs: Processing Tema: Tekstbasert Fag: Matematikk, Programmering, Kunst og håndverk Klassetrinn: 8.-10. klasse, Videregående skole Introduksjon På skolen lærer man om

Detaljer

Ma Flerdimensjonal Analyse Øving 1

Ma Flerdimensjonal Analyse Øving 1 Ma1203 - Flerdimensjonal Analyse Øving 1 Øistein Søvik Brukernavn: Oistes 23.01.2012 Oppgaver 10.1 6. Show that the triangle with verticies (1, 2, 3), (4, 0, 5) and (3, 6, 4) has a right angle. z y x Utifra

Detaljer

Programmering grunnkurs TDAT1001: Grafikkdel. Introduksjon

Programmering grunnkurs TDAT1001: Grafikkdel. Introduksjon 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

Detaljer

d. Utviklingssteg for å utforme animasjonssekvenser:

d. Utviklingssteg for å utforme animasjonssekvenser: Oppgave 1: Generelt a. Logisk inndeling av inputdata: Locator En enhet for å spesifisere en koordinatposisjon. Stroke En enhet for å spesifisere et sett med koordinatposisjoner. String En enhet for å spesifisere

Detaljer

Kodetime for Nordstrand barneskole

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

Detaljer

Leksjon 6. Objekt. Evt. importsetninger. public class Klasse { Konstruktør. Objektmetoder. Innkapsling (private): set-og get-metoder

Leksjon 6. Objekt. Evt. importsetninger. public class Klasse { Konstruktør. Objektmetoder. Innkapsling (private): set-og get-metoder 6108 Programmering i Java Leksjon 6 Objekt Del 2: 6.4 6.5 Roy M. Istad 2015 Generelt oppsett av egendefinert klasse Eks: Student Evt. importsetninger public class Klasse { Objektvariabler - instansvariabler

Detaljer

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

INF100 Institutt for informatikk Universitetet i Bergen Øving 5 INF100 Institutt for informatikk Universitetet i Bergen Øving 5 Høst 2013 Mål: Bruk av objekter. Innlevering: Adventure.java, Spiller.java og Rom.jav pakket i en zip fil. Innleveringsfrist: Torsdag 10.

Detaljer

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

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

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson

Detaljer

Lokalt Koordinatsystem. Grunnleggende Grafikk Våren 2007. Transformasjoner, Matriser og Scenegraf

Lokalt Koordinatsystem. Grunnleggende Grafikk Våren 2007. Transformasjoner, Matriser og Scenegraf Lokalt Koordinatsstem Grunnleggende Grafikk Våren 27 Transformasjoner, Matriser og Scenegraf Arnt Roald Kristoffersen arntrk@hin.no D339 ITE 165 Grunnleggende Grafikk for Spillprogrammering og ITE153 Datamaskingrafikk

Detaljer

Norges Informasjonsteknologiske Høgskole

Norges Informasjonsteknologiske Høgskole Oppgavesettet består av 6 (seks) sider. Norges Informasjonsteknologiske Høgskole PG4200 Algoritmer og datastrukturer Side 1 av 6 Tillatte hjelpemidler: Ingen Varighet: 3 timer Dato: 6. august 2014 Fagansvarlig:

Detaljer

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 11. juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

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

Detaljer

IN2010: Algoritmer og Datastrukturer Series 2

IN2010: Algoritmer og Datastrukturer Series 2 Universitetet i Oslo Institutt for Informatikk S.M. Storleer, S. Kittilsen IN2010: Algoritmer og Datastrukturer Series 2 Tema: Grafteori 1 Publisert: 02. 09. 2019 Utvalgte løsningsforslag Oppgave 1 (Fra

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

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

Detaljer

Rekursjon. Binærsøk. Hanois tårn.

Rekursjon. Binærsøk. Hanois tårn. Rekursjon Binærsøk. Hanois tårn. Hvorfor sortering (og søking) er viktig i programmering «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til

Detaljer

Kapittel 4 - Fotorealistisk fremstilling... 3

Kapittel 4 - Fotorealistisk fremstilling... 3 11.12.2008 Kapittel 4... 1 DDS-CAD 6.5 Fotorealistisk fremstilling Kapittel Innhold... Side Kapittel 4 - Fotorealistisk fremstilling... 3 Perspektiv... 3 Rendere konturmodell... 4 Rendere sjattert - sanntid...

Detaljer

RF5100 Lineær algebra Leksjon 12

RF5100 Lineær algebra Leksjon 12 RF5100 Lineær algebra Leksjon 12 Lars Sydnes, NITH 26. november 2013 I. GAUSS-ELIMINASJON 2x + 3y + z = 1 2x + 5y z = 1 4x + 7y + 4z = 3 x + 3/2 y + 1/2 z = 1/2 x + 2z = 2 y z = 1 3z = 2 x + 2z = 2 y z

Detaljer

Fotorealistisk fremstilling... 3

Fotorealistisk fremstilling... 3 DDS-CAD 9 Fotorealistisk fremstilling Kapittel 4 1 Innhold Side Kapittel 4 Fotorealistisk fremstilling... 3 Perspektiv... 3 Rendere konturmodell... 4 Rendere sjattert - sanntid... 5 Materialer... 5 Teksturkobling...

Detaljer

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

EKSAMEN I EMNE TDT4230 VISUALISERING TIRSDAG 18. DESEMBER 2007 KL LØSNINGSFORSLAG

EKSAMEN I EMNE TDT4230 VISUALISERING TIRSDAG 18. DESEMBER 2007 KL LØSNINGSFORSLAG Side 1 av 10 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for fysikk, informatikk og matematikk Institutt for datateknikk og informasjonsvitenskap EKSAMEN I EMNE TDT40 VISUALISERING TIRSDAG

Detaljer

Løsnings forslag i java In115, Våren 1998

Løsnings forslag i java In115, Våren 1998 Løsnings forslag i java In115, Våren 1998 Oppgave 1 // Inne i en eller annen klasse private char S[]; private int pardybde; private int n; public void lagalle(int i) if (i==n) bruks(); else /* Sjekker

Detaljer

Bilder for Tekstur Mapping. Grunnleggende Grafikk Våren 2007

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

Detaljer

Løsnings forslag i java In115, Våren 1996

Løsnings forslag i java In115, Våren 1996 Løsnings forslag i java In115, Våren 1996 Oppgave 1a For å kunne kjøre Warshall-algoritmen, må man ha grafen på nabomatriseform, altså en boolsk matrise B, slik at B[i][j]=true hvis det går en kant fra

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

7) Radix-sortering sekvensielt kode og effekten av cache

7) Radix-sortering sekvensielt kode og effekten av cache ) Radix-sortering sekvensielt kode og effekten av cache Dels er denne gjennomgangen av vanlig Radix-sortering viktig for å forstå en senere parallell versjon. Dels viser den effekten vi akkurat så tilfeldig

Detaljer

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF3320 Metoder i grafisk databehandling og diskret geometri Eksamensdag: 29. november 2011 Tid for eksamen: 14.30 18.30 Oppgavesettet

Detaljer

6108 Programmering i Java. Leksjon 5. Tabeller. Roy M. Istad 2015

6108 Programmering i Java. Leksjon 5. Tabeller. Roy M. Istad 2015 6108 Programmering i Java Leksjon 5 Tabeller Roy M. Istad 2015 Hva er tabeller? Tabell (evt. array): Sammensetning av verdier i den samme datatypen, under ett navn i hurtigminnet. Gir rask og effektiv

Detaljer

Farger Introduksjon Processing PDF

Farger Introduksjon Processing PDF Farger Introduksjon Processing PDF Introduksjon På skolen lærer man om farger og hvordan man kan blande dem for å få andre farger. Slik er det med farger i datamaskinen også; vi blander primærfarger og

Detaljer

Oppgave 1. Oppgave 2. Høgskolen i Østfold Avdeling for informasjonsteknologi

Oppgave 1. Oppgave 2. Høgskolen i Østfold Avdeling for informasjonsteknologi Høgskolen i Østfold Avdeling for informasjonsteknologi Løsningsforslag til ny/utsatt eksamen i ITF20006 Algoritmer og datastrukturer 05.01.2018 Oppgave 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Detaljer

Rull-en-ball Introduksjon Unity PDF

Rull-en-ball Introduksjon Unity PDF Rull-en-ball Introduksjon Unity PDF Rull-en-ball Denne uka skal vi lage vårt første spill! Spillet går ut på å være en ball og samle inn kuber for å få poeng. Spillet er over når man har samlet inn alle

Detaljer

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

PG4200 Algoritmer og datastrukturer Forelesning 7

PG4200 Algoritmer og datastrukturer Forelesning 7 PG4200 Algoritmer og datastrukturer Forelesning 7 Lars Sydnes, NITH 19. mars 2014 I. TERMINOLOGI FOR TRÆR TRÆR Lister: Lineære Trær: Hierarkiske Modell / Språk: Bestanddeler: Noder, forbindelser. Forbindelse

Detaljer

Løsningsforslag til eksamen i INF1000 våren 2006

Løsningsforslag til eksamen i INF1000 våren 2006 Løsningsforslag til eksamen i INF1000 våren 2006 Oppgave 1 a) -1 false 7 b) 30 c) Verdien til j er: 4Verdien til k er: 3Verdien til n er: 7 d) Andre if-test er true Tredje if-test er true e) k = 4 k =

Detaljer

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse

Detaljer

Teksturering. Mer om Grafisk Databehandling. Et annet eksempel. Eksempel

Teksturering. Mer om Grafisk Databehandling. Et annet eksempel. Eksempel Teksturering Mer om Grafisk Databehandling Øker detaljgraden uten å øke antall grafiske primitiver. Grafiske primitiver brukes som bærere for bilder (f.eks. fotografier). INF2340 / V04 2 Eksempel Et annet

Detaljer

Farge Modeller RGB HSV HLS CMYK. Grunnleggende Grafikk Våren 2007. HSV eller HSB. RGB farge modell

Farge Modeller RGB HSV HLS CMYK. Grunnleggende Grafikk Våren 2007. HSV eller HSB. RGB farge modell Farge Modeller Grunnleggende Grafikk Våren 2007 Farge, Lys og Material RGB HSV HLS CMYK Arnt Roald Kristoffersen arntrk@hin.no D3390 ITE 1605 Grunnleggende Grafikk for Spillprogrammering og ITE1530 Datamaskingrafikk

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på

Detaljer

Socket og ServerSocket

Socket og ServerSocket Side 1 av 5, socket og klient-tjener, V. Holmstedt, HiO 2006 Dette dokumentet er revidert den 29.8.2006, kl:12:30. Det er foretatt rettelser i begge versjoner av klassen A_Server. Socket og ServerSocket

Detaljer

KONTINUASJONSEKSAMEN I EMNE TDT4230 VISUALISERING MANDAG 15. AUGUST 2011 KL LØSNINGSFORSLAG

KONTINUASJONSEKSAMEN I EMNE TDT4230 VISUALISERING MANDAG 15. AUGUST 2011 KL LØSNINGSFORSLAG Side 1 av 8 KONTINUASJONSEKSAMEN I EMNE TDT4230 VISUALISERING MANDAG 15. AUGUST 2011 KL. 09.00 13.00 LØSNINGSFORSLAG OPPGAVE 1 Parametriske kurver a) En eksplisitt eller implisitt funksjon i tre variable

Detaljer

2D Transformasjoner (s. 51 i VTK boken) Translasjon. Del 2 Grafisk databehandling forts. Rotasjon. Skalering. y x = x + d x, y = y + d y.

2D Transformasjoner (s. 51 i VTK boken) Translasjon. Del 2 Grafisk databehandling forts. Rotasjon. Skalering. y x = x + d x, y = y + d y. 2D Transformasjoner (s. i VTK boken) Translasjon Del 2 Grafisk databehandling forts. (, ) = + d, = + d På matriseform: d d (, ) P =, P =, T = d d P = P + T 24/2-3 IN229 / V3 / Dag 6 2 Skalering Rotasjon

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 1. desember 2010 Tid for eksamen: 14.00 18.00

Detaljer

a. Hva er de inverse transformasjonene avfølgende tre transformasjoner T, R og S: θ θ sin( ) cos( ) Fasit: 1 s x cos( θ) sin( θ) 0 0 y y z

a. Hva er de inverse transformasjonene avfølgende tre transformasjoner T, R og S: θ θ sin( ) cos( ) Fasit: 1 s x cos( θ) sin( θ) 0 0 y y z Kommentar: Svar kort og konsist. Husk at eksamen har tre oppgaver. Poengene for hver (del-) oppgave bør gi en indikasjon på hvor me tid som bør benttes per oppgave. Oppgave 1: Forskjellige emner (40 poeng)

Detaljer

INF1010 Sortering. Marit Nybakken 1. mars 2004

INF1010 Sortering. Marit Nybakken 1. mars 2004 INF1010 Sortering Marit Nybakken marnybak@ifi.uio.no 1. mars 2004 Dette dokumentet skal tas med en klype salt og forfatter sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

LØSNINGSANTYDNING EKSAMEN

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:

Detaljer

Løsningsforslag 2017 eksamen

Løsningsforslag 2017 eksamen Løsningsforslag 2017 eksamen Oppgave 1: O-notasjon (maks 8 poeng) 1. (i) O(n) gir 2 poeng, O(100n) gir 1 poeng (ii) O(n^2) gir 1 poeng (iii) O(n log n) gir 2 poeng 2. (i) er mest effektiv i henhold til

Detaljer

1 Hva er grafisk databehandling?

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é:

Detaljer

INF1000. Marit Nybakken 10. februar 2004

INF1000. Marit Nybakken 10. februar 2004 INF1000 Løkker Marit Nybakken marnybak@ifi.uio.no 10. februar 2004 Motivasjon En ting datamaskinen er veldig flink til er å gjøre den samme tingen mange mange ganger på rad. Oppgaver som skal utføres innebærer

Detaljer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 11.2 Korteste vei i en graf 11.2.1 Dijkstras metode En graf er et system med noder og kanter mellom noder. Grafen kalles rettet Notasjon Verdien

Detaljer

En algoritme for permutasjonsgenerering

En algoritme for permutasjonsgenerering Innledning La oss tenke oss at vi har en grunnskole-klasse på 25 elever der enkelte av elever er uvenner med hverandre. Hvis uvenner sitter nær hverandre blir det bråk og slåssing. Er det mulig å plassere

Detaljer

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et eksempel Klasser

Detaljer

EKSAMENSOPPGAVE I INF-1100

EKSAMENSOPPGAVE I INF-1100 Side 1 av 6 sider EKSAMENSOPPGAVE I INF-1100 Eksamen i: INF-1100 Innføring i programmering og datamaskiners virkemåte Eksamensdato: Onsdag 27. Februar 2013 Tid: Kl. 09:00 13:00 Sted: Aud.max. Tillatte

Detaljer

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor.

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor. 6-13 July 2013 Brisbane, Australia Norwegian 1.0 Brisbane har blitt tatt over av store, muterte wombater, og du må lede folket i sikkerhet. Veiene i Brisbane danner et stort rutenett. Det finnes R horisontale

Detaljer

Kapittel 14, Hashing. Tema. Definere hashing Studere ulike hashfunksjoner Studere kollisjonsproblemet 17-1

Kapittel 14, Hashing. Tema. Definere hashing Studere ulike hashfunksjoner Studere kollisjonsproblemet 17-1 Kapittel 14, Hashing Tema Definere hashing Studere ulike hashfunksjoner Studere kollisjonsproblemet 17-1 Hashing Hashing er en effektiv metode ved lagring og gjenfinning (søking) av informasjon Søkemetoder

Detaljer

Forelesning 1, 10.01: Geometri før Euklid

Forelesning 1, 10.01: Geometri før Euklid Forelesning 1, 10.01: Geometri før Euklid Antikk Geometri før Grekerne (Egypt, Kina, Babylonia) 1. er forhold mellom sirkelens omkretsen (den er lengde av sirkelpereferi) og diameteren, SIRKELEN = omkretsen

Detaljer

INNHOLD SAMMENDRAG GEOMETRI

INNHOLD SAMMENDRAG GEOMETRI INNHOLD GEOMETRI... 3 LINJE, STRÅLE OG LINJESTYKKE... 3 VINKEL... 3 STUMP, SPISS OG RETT VINKEL... 3 TOPPVINKLER... 4 NABOVINKLER... 4 SAMSVARENDE VINKLER... 4 OPPREISE EN NORMAL FRA ET PUNKT PÅ EN LINJE...

Detaljer

INF1000 Behandling av tekster

INF1000 Behandling av tekster INF1000 Behandling av tekster Marit Nybakken marnybak@ifi.uio.no 23. februar 2004 Tekster Vi kommer nesten aldri utenom å bruke tekststrenger i programmene våre, ikke minst fordi det nesten alltid skal

Detaljer

Forelesningsnotater SIF8039/ Grafisk databehandling

Forelesningsnotater SIF8039/ Grafisk databehandling Forelesningsnotater SIF839/ Grafisk databehandling Notater til forelesninger over: Kapittel 4: Geometric Objects and ransformations i: Edward Angel: Interactive Computer Graphics Vårsemesteret 22 orbjørn

Detaljer

Forelesning inf Java 5

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

Detaljer

Forelesning inf Java 5

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

Detaljer

IN1010 våren januar. Objektorientering i Java

IN1010 våren januar. Objektorientering i Java IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som

Detaljer

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)! Repetisjon: Binære søketrær Dagens plan: Rød-svarte trær (kap. 12.2) B-trær (kap. 4.7) bstrakte datatyper (kap. 3.1) takker (kap. 3.3) For enhver node i et binært søketre gjelder: lle verdiene i venstre

Detaljer

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1 Delkapittel 2.1 Plangeometriske algoritmer Side 1 av 7 Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1 2.1 Punkter, linjesegmenter og polygoner 2.1.1 Polygoner og internett HTML-sider kan ha

Detaljer

INF1000 : Forelesning 4

INF1000 : Forelesning 4 INF1000 : Forelesning 4 Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk Universitetet

Detaljer

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre Oppsummering Kort gjennomgang av klasser etc ved å løse halvparten av eksamen 2012. Klasser Interface Subklasser Klasseparametre Datastrukturer Hva er problemet? Oppgaven Emballasjefabrikken Renpakk skal

Detaljer

LO191D/LC191D Videregående programmering

LO191D/LC191D Videregående programmering LO191D/LC191D Videregående programmering Eksamen mai 2012 Løsningsforslag Oppgave 1 Klassen Destinasjon: // Oppgaven er uklar på hva som skal inn i klassen Destinasjon. // Her følger en minimumsutgave

Detaljer

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2 Delkapittel 9.2 Rød-svarte og 2-3-4 trær Side 1 av 16 Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2 9.2 Rød-svarte og 2-3-4 trær 9.2.1 B-tre av orden 4 eller 2-3-4 tre Et rød-svart tre og et

Detaljer

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4 Repetisjon: nesting av løkker Kort repetisjon av doble (nestede) løkker Mer om D-arrayer Introduksjon til D-arrayer Metoder Ole Christian Lingjærde Biomedisinsk forskningsgruppe Institutt for informatikk

Detaljer

LØSNINGSFORSLAG. Universitetet i Agder Fakultet for Teknologi og realfag. Dato: 03. desember 2009 Varighet: Antall sider inkl.

LØSNINGSFORSLAG. Universitetet i Agder Fakultet for Teknologi og realfag. Dato: 03. desember 2009 Varighet: Antall sider inkl. Universitetet i Agder Fakultet for Teknologi og realfag LØSNINGSFORSLAG Emnekode: Emnenavn: DAT2 Grafisk Databehandling Dato: 3. desember 29 Varighet: 9-3 Antall sider inkl. forside 8 Tillatte hjelpemidler:

Detaljer

INF{3 4}320 - Obligatorisk oppgave 3

INF{3 4}320 - Obligatorisk oppgave 3 INF{3 4}320 - Obligatorisk oppgave 3 Innleveringsfrist: 14. oktober 2003 (Revisjon 25. september 2003) I denne oppgaven skal vi utvide koden som ble laget for oblig2. I stedet for å tegne en enkel kube

Detaljer

Dagens tema: Sjekking

Dagens tema: Sjekking Dagens tema Dagens tema: Sjekking Navnebinding (obligatorisk oppgave 3) Biblioteket Logging Riktig bruk av navn (frivillig) Typesjekking (frivillig) Hele prosjektet Strukturen til kompilatoren vår f.pas

Detaljer

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer