E K S A M E N. Universitetet i Agder Fakultet for fakultet for Teknologi og realfag. Grafisk Databehandling

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

LØSNINGSANTYDNING EKSAMEN

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

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

E K S A M E N S O P P G A V E

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

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

EKSAMEN I EMNE TDT4230 VISUALISERING FREDAG 10. DESEMBER 2010 KL LØSNINGSFORSLAG

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Computer Graphics with OpenGL

Steg 1: Canvas-elementet

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

CSS: Animasjon Nybegynner

EKSAMEN I EMNE TDT4195 BILDETEKNIKK ONSDAG 3. JUNI 2009 KL

EKSAMEN I EMNE TDT4195/SIF8043 BILDETEKNIKK ONSDAG 19. MAI 2004 KL

Steg 1: Animasjons-attributtet

Side 1 av 12

Forelesning Klasse T1A Side 1 av 11

JS: Partikkel-animasjon Nybegynner

EKSAMEN I EMNE TDT4230 VISUALISERING LØRDAG 10. DESEMBER 2005 KL

R1 eksamen høsten 2016

KONTINUASJONSEKSAMEN I EMNE TDT4195 BILDETEKNIKK ONSDAG 13. AUGUST 2008 KL

RF5100 Lineær algebra Leksjon 12

EKSAMEN / 6101N WebPublisering

UNIVERSITETET I OSLO

Forelesning Klasse T1A Side 1 av 10 OPPGAVE / RESULTAT

EKSAMEN I EMNE TDT4230 VISUALISERING MANDAG 12. DESEMBER 2011 KL LØSNINGSFORSLAG

Universitetet i Agder Fakultetet for teknologi og realfag Institutt for matematiske fag. Eksamen MA desember Lykke til!

I denne oppgaven skal du lære hvordan du kan flytte rundt på elementer og gjemme elementene bak andre elementer ved hjelp av CSS.

Inventor 10 Skill builder Animation - Inventor Studio

KONTINUASJONSEKSAMEN I EMNE TDT4230 VISUALISERING MANDAG 7. AUGUST 2006 KL LØSNINGSFORSLAG

Eksamen i Geometrisk Modellering

Geometri Mona Røsseland Nasjonalt senter for matematikk i Opplæringen Leder i LAMIS Lærebokforfatter, MULTI Geometri i skolen Geometri etter 4.

Eksamen i Geometrisk Modellering

Eksamen i Geometrisk Modellering

Forelesningsnotater SIF8039/ Grafisk databehandling

UNIVERSITETET I OSLO

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

"Dette skjer når jeg trykker på denne knappen" "Når jeg skriver i dette feltet, ser jeg at det andre forandrer seg"

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

UNIVERSITETET I OSLO

Eksamen R1, Våren 2015

DEL 1. Uten hjelpemidler. Oppgave 1 (5 poeng) Oppgave 2 (5 poeng) Oppgave 3 (3 poeng) Deriver funksjonene. En funksjon f er gitt ved

Javascript. Mer om layout

EKSAMEN I EMNE TDT4230 VISUALISERING LØRDAG 18. DESEMBER 2004 KL Løsningsforslag

Forelesningsnotater SIF8039/ Grafisk databehandling

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

ITF Eksamensform: Skriftlig (digital) Dato: 28/

Steg 1: En første animasjon

Hjelpemidler på Del 2 Alle hjelpemidler er tillatt, med unntak av Internett og andre verktøy som tillater kommunikasjon.

3D modul for syntetisk kalkulator

Analytisk geometri med dynamiske geometriverktøy

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

R1 eksamen høsten 2016 løsningsforslag

EKSAMEN Webpublisering

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

EKSAMEN Styring av romfartøy Fagkode: STE 6122

EKSAMENSOPPGAVE. Adm.bygget, rom K1.04 og B154 Ingen. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: JA / NEI Hvis JA: ca. kl.

Fotorealistisk fremstilling... 3

Tid: 3 timer Hjelpemidler: Vanlige skrivesaker, passer, linjal med centimetermål og vinkelmåler er tillatt. og setter f u ln

E K S A M E N. Universitetet i Agder Fakultet for fakultet for Teknologi og realfag. Dato: 7. Desember 2016 Varighet:

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet. Obligatorisk innlevering 1 i emnet MAT111, høsten 2016

TDT4195 Bildeteknikk

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: NEI

Eksamen R1 Høsten 2013

KONTINUASJONSEKSAMEN I EMNE TDT4195 BILDETEKNIKK LØRDAG 15. AUGUST 2009 KL LØSNINGSFORSLAG - GRAFIKK

UNIVERSITETET I OSLO

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

Fakultet for lærerutdanning og internasjonale studier

EKSAMEN. Informasjon om eksamen. Emnekode og -navn: ITD37018 Anvendt Robotteknikk. Dato og tid: , 3 timer. Faglærer: Haris Jasarevic

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

EKSAMEN. Algoritmer og datastrukturer

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

EKSAMEN I EMNE TDT4195 BILDETEKNIKK TORSDAG 9. JUNI 2011 KL

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksempel på løsning. Sentralt gitt skriftlig eksamen MAT1008 Matematikk 2T Eksamen Bokmål

Norges Informasjonsteknologiske Høgskole

NHB101 1 Natur, helse og bevegelse

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Oppgave 1 (Etter forelesning 31/8) Gå gjennom nettsiden arngren.net og list opp alle problemene du ser. Både i funksjonalitet/bruk og i koden bak.

TENK TECH SUMMERCAMP BYGG DIN EGEN NETTSIDE

CSS-formatering: stilark med kommentarer

Algoritmer og datastrukturer Kapittel 2 - Delkapittel 2.1

Eksempeloppgåve/ Eksempeloppgave Desember 2007

EKSAMEN med løsningsforslag

Norges Informasjonstekonlogiske Høgskole

R2 eksamen høsten 2017 løsningsforslag

Leksjon G2: Transformasjoner

EKSAMENSOPPGAVE I FYS-1001

Eksamen 1T, Høsten 2012

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

Eksamen R2, Va ren 2014

Ressurser. OpenCV documentation: Eigen documentation : C++: Image Watch: An image debugger plug-in for Visual Studio

MAT 110A - VÅR 2001 OBLIGATORISK OPPGAVESETT

EKSAMEN. GIS og kart

Transkript:

Universitetet i Agder Fakultet for fakultet for Teknologi og realfag E K S A M E N Emnekode: Emnenavn: DAT200 Grafisk Databehandling Dato: 23. November 2016 Varighet: 0900-1300 Antall sider inkl. forside 8 Tillatte hjelpemidler: Merknader: Skrivesaker Oppgavenes vekting er angitt i overskrift på hver oppgave. 1

OPPGAVE 1. (12%) NB: Du får + 1 poeng for riktig svar, - ½ poeng for feil svar. (Skriv besvarelsen inn på eget ark sammen med resten av besvarelsen.) Angi om du er enig(ja) eller uenig(nei) i følgende utsagn: a) En B-Spline interpolerer sine kontrollpunkt og approksimerer sine knutepunkter. b) Ved bruk av lyspenn så fikk man mulighet for å angi posisjoner på datamaskinen. c) Z-buffer algoritmen (Dybdebufferalgoritmen) er en objektpresisjonsalgoritme («objekt precicion») for fjerning av skjulte flater. d) Fordelen med C 1 kontinuitet i forhold til G 1 kontinuitet er at kurven blir glattere og får bedre egenskaper i forhold til f. eks luft- og vannmotstand. e) En perspektivisk projeksjon fører til at fjerne ting blir forholdsvis større enn nære ting. f) Når man har en "Binary Space Partitioning Tree"-representasjon av en solid, er det en enkel sak å gjennomføre fjerning av skjulte linjer og flater fra alle posisjoner i rommet. g) Dersom høyde/bredde forholdet er ulikt i overføringen fra et vindu til en skjermport («ViewPort») risikerer vi at sirkler blir ellipser når vi ser modellen på en dataskjerm. h) En isometrisk projeksjon har et projeksjonsplan som skjærer aksene i lik avstand fra origo. i) Ved bruk av "antialiasing" oppnås en raskere gjengivelse av linjer på en dataskjerm. j) Sutherland Hodgman sin klippingsalgoritme kan kun anvendes for kvadratiske klippeområder. k) Et matt materiale har specular refleksjon over at større område enn et blankt materiale. l) Vi bruker homogene koordinater fordi det letter arbeidet ved uttegning av sirkler. Ja Nei 2

OPPGAVE 2. TRANSFORMASJONER (20%) For hver underoppgave a)-d) skriv ned en matrise med homogene koordinater som gjør nevnte transformasjon. Vis matrisene for både 2D- og 3D-transformasjoner der det gir mening. a) Lag et objekt fire ganger så stort b) Reduser x-retningen med 50% og øk y-retningen med 50%. c) Roter et objekt 90 grader om x-aksen. d) Vi har to koordinatsystem A og B: Sett opp de transformasjonene som er nødvendige for å overføre geometri fra koordinatsystem B til koordinatsystem A. e) Når vi arbeider med rotasjoner og skifte av koordinatsystem så kan vi av og til utnytte egenskapen at en matrise er spesiell ortogonal. Hva betyr det og hvordan kan dette anvendes? OPPGAVE 3. FARGER, SKULTE FLATER, SOLIDER OG INTENSITETER (20%) a) Hvorfor må vi anvende to forskjellige fargemodeller når farger skal vises på papir og på skjerm? b) Hva heter den mest brukte algoritmen for fjerning av skjulte linjer og flater? c) Forklar virkemåten til algoritmen i b) og angi om den har noen svakheter. d) Hva forstår vi med en Octree-representasjon av et 3D objekt? e) I figuren nedenfor er det vist en kule med 3 forskjellige algoritmer for intensitetsbestemmelse. De tre algoritmene er konstant intensitet, Gouraud Shading og Phong Shading. Hvilken algoritme hører til hvilket bilde? A: B: C: 3

OPPGAVE 4. KURVER, KLIPPING OG PROJEKSJONER (24%) Gitt følgende kontrollpolygon: a) Tegn av kontrollpolygonet og skisser en kubisk Bèzier-kurve i polygonet b) Tegn av kontrollpolygonet og skisser en kubisk uniform B-spline-kurve i polygonet. c) Nevn de vesentligste forskjellene mellom kubiske Bèzierkurver og uniforme kubiske B- splineskurver. d) Hvordan kan vi sikre oss at vi får en sammenhengende kontinuerlig (G1 kontinuitet) Bèzierkurve når vi skal knytte sammen to Bèzier-kurvesegmenter? e) Forklar grunnprinsippet for Sutherland-Hodgman sin polygonklippingsalgoritme. f) Regn ut projeksjonen av punktet (20,30,40) ned i x-y-planet når projeksjonspunktet er i (0,0,- 50). OPPGAVE 5. 3D-Studio (10%) Vi skal modellere deler av et satellittanlegg til bobil (Se figurer nedenfor). 4

a) Forklar kort og prinsipielt hvordan du vil gå frem i 3D-Studio for å modellere selve parabolen til satellittanlegget samt de 4 boltehodene som du kan se i parabolflaten. Ta dine egne antagelser dersom du er usikker på formen på objektene. b) Hvilke materiale vil du velge i 3D Studio Max for henholdsvis parabolen og boltene og forklar hvordan du vil få frem teksten og logoen på parabolen? OPPGAVE 6. Three.js (14%) Vi skal nå laste inn og animere (deloppgave b nedenfor) parabolanlegget fra oppgave 5 i Three.js. Den består av følgende 4 deler: Parabol (Selve parabolen som reflekterer signalene samt dens innfestning til fundamentet), Hodet (Den enheten som tar imot signalene. Inkluderer også armen som hodet er festet i) Fundament (Den delen som hodet og parabolen er koblet til) Plate (Den delen som fundamentet er forbundet til som er festet fast til bobilen). Når parabolen brukes kan både Parabol, Hodet og Fundamentet rotere slik at rett posisjon kan innstilles i forhold til satellitten som man ønsker å finne. a) Når man skal eksportere objekter fra 3D Studio Max til Three.js er det en del ting man bør passe på å gjøre før man eksporterer objektene. Kan du angi noen viktige ting som man bør gjøre på forhånd før man gjennomfører eksporten? b) Vi vil nå ha muligheten for å bevege parabolen slik at den kan stilles inn i en posisjon der den kan ta imot signalene fra en satellitt. Tegn i diagrams-form det treet, med nødvendige forklaringer, som skal til for å danne et bevegelig parabolanlegg med lyssetting og kamera. Bruk følgende elementer i scene-grafen (treet) når denne skal tegnes: Scene Gruppe - node Mesh Camera Lys 5

Vedlegg 1 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>pyramide</title> <script type="text/javascript" src="three.js"></script> <script type="text/javascript" src="stats.js"></script> <script type="text/javascript" src="dat.gui.js"></script> <script type="text/javascript" src="colladaloader.js"></script> <style> body { /* set margin to 0 and overflow to hidden, to go fullscreen */ margin: 0; overflow: hidden; </style> </head> <body> <div id="stats-output"> </div> <!-- Div which will hold the Output --> <div id="webgl-output"> </div> <!-- Javascript code --> <script type="text/javascript"> // once everything is loaded, we run our Three.js stuff. function init() { var stats = initstats(); // create a scene, that will hold all our elements such as objects, // cameras and lights. var scene = new THREE.Scene(); var branchgroup = new THREE.Object3D(); // create a camera, which defines where we're looking at. var camera = new THREE.PerspectiveCamera(45, window.innerwidth / window.innerheight, 0.1, 1000); // create a render and set the size var renderer = new THREE.WebGLRenderer(); renderer.setclearcolor(new THREE.Color(0xEEEEEE, 1.0)); renderer.setsize(window.innerwidth, window.innerheight); renderer.shadowmapenabled = true; // create helper axes var axes = new THREE.AxisHelper(5); scene.add(axes); // create the ground plane var planegeometry = new THREE.PlaneGeometry(20, 20); var planematerial = new THREE.MeshPhongMaterial({color: 0xffffff); var plane = new THREE.Mesh(planeGeometry, planematerial); plane.receiveshadow = true; // rotate and position the plane 6

plane.rotation.x = -0.5 * Math.PI; plane.position.x = 0; plane.position.y = -5; plane.position.z = 0; // add the plane to the scene scene.add(plane); var blad1 = createobject("blad.dae", "test"); var blad2 = createobject("blad.dae", "blad2"); var blad3 = createobject("blad.dae", "blad3"); var fundament = createobject("fundament.dae", "fundament"); branchgroup.add(fundament); // Connect the blades and add the Windmill to the scene blad3.rotatez(2 * Math.PI / 3); blad2.rotatez(2 * Math.PI / 3); blad1.add(blad2); blad2.add(blad3); branchgroup.add(blad1); scene.add(branchgroup); // position and point the camera to the center of the scene camera.position.x = 17; camera.position.y = 17; camera.position.z = 17; camera.lookat(scene.position); // add subtle ambient lighting var ambientlight = new THREE.AmbientLight(); //var ambientlight = new THREE.AmbientLight(color,0.1); //ambientlight.color.setrgb( r * intensity, g * intensity, b * intensity ); var intensity = 0.2; ambientlight.color.setrgb(1 * intensity, 1 * intensity, 1 * intensity); scene.add(ambientlight); // add spotlight for the shadows var spotlight = new THREE.SpotLight(); spotlight.color.setrgb(1, 1, 1); spotlight.position.set(20, 80, 20); spotlight.castshadow = true; spotlight.angle = Math.PI / 50; spotlight.shadowmapwidth = 1024; spotlight.shadowmapheight = 1024; //spotlight.shadowmapsize=[1024,1024]; spotlight.lookat(scene); scene.add(spotlight); // add the output of the renderer to the html element document.getelementbyid("webgl-output").appendchild(renderer.domelement); // call the render function var step = 0; var controls = new function () { this.rotationspeed = 0.02; this.zoom = 7; this.angle = 0; ; var gui = new dat.gui(); gui.add(controls, 'rotationspeed', 0, 0.5); gui.add(controls, 'zoom', 2, 100); gui.add(controls, 'angle', 0, 360); var angle = 0; 7

var radius = 7; render(); function createobject(objfile, objname) { var container = new THREE.Object3D(); var loader = new THREE.ColladaLoader(); var mesh = new THREE.Mesh; loader.load(objfile, function (result) { mesh = result.scene.children[0].children[0].clone(); mesh.scale.set(0.1, 0.1, 0.1); mesh.castshadow = true; mesh.name = objname; container.add(mesh); ); return container; function render() { stats.update(); // rotate the Windmill blades around its center blad1.rotation.z += controls.rotationspeed; angle = controls.angle * Math.PI / 180; radius = controls.zoom; camera.position.x = radius * Math.cos(angle); camera.position.z = radius * Math.sin(angle); camera.position.y = radius; camera.lookat(scene.position); // render using requestanimationframe requestanimationframe(render); renderer.render(scene, camera); function initstats() { var stats = new Stats(); stats.setmode(0); // 0: fps, 1: ms // Align top-left stats.domelement.style.position = 'absolute'; stats.domelement.style.left = '0px'; stats.domelement.style.top = '0px'; document.getelementbyid("stats-output").appendchild(stats.domelement); return stats; window.onload = init; </script> </body> </html> 8