Børre Stenseth
Gamle eksamener > V 1996(p)

Prøveeksamen april 1996

Alle hjelpemidler tilgjenglige.
Tid for eksamen 4 timer
Oppgavesettet består av en sammenhengende oppgave med 6 deloppgaver. Det er mulig å løse alle oppgavene hver for seg, ved å forutsette de tidligere deloppgavene løst.
table

Oppgavene er rettet mot bruk av OpenGL og krever at det skrives programbiter som besvarelse. Det er viktig å konsenterere seg om de problemløsende bitene. Det har ingen hensikt å skrive komplette programmer med alle standardoperasjonene som er nødvendig for å inkludere OpenGL i Windows. Du kan forutsette at all initiering er gjort, at pixelformatet er definert, at det om nødvendig er satt opp palett og at det finnes en valgt tegneomgivelse (rendering context).

Oppgaven går ut på å dekke bord. Modellen skal programmeres i 3D (for ordens skyld).

Oppgave 1a

Skriv en funksjon

void Glass(GLfloat b,GLfloat h1,GLfloat h2,Glfloat h3,Glfloat v1,Glfloat v3)

som tegner ut et stetteglass. Parametrene brukes som angitt på figuren.

Alle lengdemål angis i cm og vinkler i grader. Dersom en av høydeangivelsene (h1,h2,h3) er negativ, ignoreres dennne delen av glasset. Vi kan derfor få former som:

fig1

fig2

Oppgave 1b

Skriv en funksjon:

BOOL  Bord (Glfloat r, Glint antall)

som dekker et rundt bord med radius r i cm for antall kuverter.

Hver kuvert skal bestå av et glass og en tallerken. Det skal stå to lysestaker med en avstand R/3 fra sentrum av bordet. Bestemmelse av avstander mellom glass og tallerken, mellom bordkant og tallerken osv., gjøres inne i rutina.

Du kan godt skrive litt pseudokode for ikke å bruke for lang tid på detaljer. Dersom det ikke er plass til å dekke bordet, returneres FALSE.

fig3

Du kan forutsette at følgende rutiner finnes:

  void SetGlassMateriale()
  void SetTallerkenMateriale()
  void SetLysestakeMateriale()
  void SetBordMateriale()
  

Oppgave 1c

Vi ønsker å gå rundt bordet og se mot bordets sentrum. Forklar hvordan du vil implementere dette. Angi konkret hvordan du vil sette og endre øyepunkt og synsretning.

Oppgave 1d

Forklar hvordan du vil modifisere funksjonen Bord for å implementere en lyskilde på toppen av hver lysestake.

Oppgave 1e

Forklar hva som skal til for at vi skal kunne tenne og slukke lysene ved å peke på dem og klikke. Angi, uten å skrive detaljer, hvilke endringer og tilføyelser som må gjøres i programmet.

Tenne og slukke lysene på bordet med høyre museknapp. Merk at programmet også tillater dette ved meny, og at også "taklyset" kan slås av og på. Lyskildene GL_LIGHT1 og GL_LIGHT2 brukes som kilder for lysestakene.

Oppgave 1f

Forklar, uten å programmere detaljer, hva som skal til for å legge en duk på bordet.

Forslag til løsning

Et program som dekker det meste er: solution.zip

Skrevet om til JOGL/NetBeans: https://svn.hiof.no/svn/psource/JOGL/roundtable

(Velkommen) Gamle eksamener>V 1996(p) (V 1996)