Računarska grafika (RI5RG)
glavna >> domaći zadatak
Domaći zadatak (2003/04)

[Informacije] [Java2D] [OpenGL]

 

Informacije

Domaći zadatak se brani nakon položenog ispita, u istom ispitnom roku.
Termin za odbranu zakazuje se prilikom objavljivanja rezultata ispita.

Ocena se dobija sabiranjem poena ostvarenih na ispitu i poena ostvarenih na domaćem zadatku:

P = I + DZ

Maksimalni broj poena na ispitu (I) je 70. Maksimalni broj poena na domaćem zadatku (DZ) je:

  • u prvom (januarskom) roku: 40 = Java2D(20) + OpenGL(20)
  • u ostalim rokovima: 30 = Java2D(15) + OpenGL(15)

Ocena se dobija saglasno sledećoj tabeli:

Poeni (P)
[0 - 50]
[51 - 60]
[61 - 70]
[71 - 80]
[81 - 90]
[91 - ]
Ocena
5
6
7
8
9
10

Java2D

Studentima su ponuđena dva domaća zadatka iz oblasti Java2D, od kojih svako treba da samostalno uradi jedan, po izboru.

Zadatak A je obimniji i, studentima koji ga urade u potpunosti, biće priznat kao projekat ili semestralni rad, a urađene tačke a) i c) će se priznati kao domaći zadatak.

Postoji i mogućnost nadgradnje domaćih zadataka, sa ciljem da prerastu u projekat (zadatak B) ili diplomski rad (zadatak A). Nakon uspešne odbrane domaćeg zadatka, studenti zainteresovani za projekat ili diplomski rad mogu da se obrate predmetnom asistentu ili nastavniku.

 

  • Word dokument postavke zadatka,
  • Java datoteke simulatora
  • Word dokument uputstva za simulator

Postavka zadatka A

(a) Potrebno je projektovati aplikaciju za grafički unos šeme kombinacione mreže. Koristi se model mreže koji je opisan u postavci domaćeg zadatka iz OOS (2002/03). Potrebno je realizovati sledeće funkcionalnosti:

  • Centralni panel za slaganje elemenata mreže;
  • Element mreže. Novi element se na panel slaže u dva koraka: 1 – izbor elementa iz liste raspoloživih (definisanih) elemenata, 2 – postavljanje elementa na panel (prethodno je moguće dati element rotirati za 180); treba omogućiti i pomeranje/brisanje elemenata koji se već nalaze na panelu (šemi);
  • Proširiv skup kombinacionih elemenata. Proširiv znači da je moguće definisati nove elemente (jednostavne i složene) koji se naknadno mogu koristiti u šemama na isti način kao već postojeci elementi;
  • Definisanje podmreže. U toku crtanja mreže, moguce je na neki način izabrati podskup nacrtanih elemenata (opisivanjem pravougaonika ili selektovanjem pojedinačnih elemenata) i na ovaj način definisati podmrežu. Trenutno selektovani elementi treba da budu prikazani drugom bojom. Kad se definiše podmreža unutar tekuće mreže, njeni elementi se na glavnoj šemi zamenjuju blokom sa imenom mreže, a interna struktura se pamti na posebnom dijagramu;
  • Veze izmedu elemenata. Veze se formiraju crtanjem linije izmedu odgovarajucih pinova elemenata koji učestvuju u vezi. Nije potrebno realizovati algoritme za rutiranje linija, one mogu inicijalno da zauzimaju najkraću putanju između pinova koje povezuju. Ipak, potrebno je obezbediti da korisnik može ručno optimizovati putanje veza na sledeći način: klikom na jednu ili više tačaka veze, definišu se temena ("tačke lomljenja") čime od linije nastaje polilinija. Ovako definisana temena korisnik može pomerati i brisati po želji. Osim toga, korisnik može izabrati segment polilinije i zahtevati da taj segment bude vertikalan/horizontalan.

(b) Simulacija – kad se definišu svi elementi mreže, pristupa se simulaciji njenog rada:

  • Potrebno je na neki način prikazati trenutne vrednosti svih signala u kolu (oznakom iznad odgovarajuće žice ili bojom žice), dovoljno je koristiti tronivoski sistem (X01) za model električnog signala, kako je uostalom definisano i u priloženom modelu
  • Realizovati "merne elektrode". Postavljanjem elektrode na neku tačku kola, možemo pratiti vremenski oblik signala u toj tački na posebnom grafiku u toku izvršavanja simulacije. Moguće je postaviti više elektroda u mreži.
  • Osim prikazivanja na grafiku, rezultati simulacije za navedene signale se upisuju u odgovarajuće datoteke sa nazivom <ime_signala>.txt. Na ovaj način možemo da uporedimo vremenski oblik datog signala pre i posle topoloških izmena mreže čije efekte je potrebno proveriti.

(c) Naravno, potrebno je omogućiti učitavanje i snimanje elemenata i šema u odgovarajuće tekstualne datoteke. Studentima se ostavlja sloboda da definišu format koji im odgovara.

Napomena:
Kandidati ne kreću "od nule", tj. biće im na raspolaganju već gotov simulator kombinacione mreže, koji mogu da iskoriste kao jezgro i da se koncentrišu na probleme vezane za grafički interfejs.
Grafički interfejs realizovanog simulatora (slika) je veoma primitivan - koriste se samo high-level komponente, kao što su paneli, oznake (labels), tasteri i radio-dugmad.


Slika 1: Izgled ekrana aplikacije simulatora


Slika 2: Primer izgleda aplikacije za grafički unos šema
(za istu mrežu kao na sl. 1)

 


Primeri uspešno realizovanog domaćeg zadatka
Autor: Vasiljević Mihailo

Postavka zadatka B

(a) Aplikacija za projektovanje proporcionalnih fontova pomocu ravnih i (parametarskih) krivih linija.

  • Aplikacija treba da omogući projektovanje određenog znaka (slovo, broj, ostali znakovi), i njegovo mapiranje tj. definisanje o kojem znaku je reč.
  • Drugi deo aplikacije je namenjen demonstraciji ovako definisanih fontova. Bira se font i veličina slova, a zatim se ona unose, pritiskom na odgovarajuće tastere na tastaturi.
  • Ako karakter koji odgovara pritisnutom tasteru još nema definisanu reprezentaciju, on se ignoriše.
  • Karakteri se predstavljaju kao popunjeni poligoni sa mogućim krivolinijskim stranicama i sa eventualnim upisanim poligonima-"rupama" (što zavisi od konkretnog znaka);
  • Ivice se interaktivno crtaju i definišu tako da ih je moguće naknadno editovati (pomeranjem, dodavanjem ili brisanjem karakterističnih tačaka);
  • Zadaje se boja popune karaktera, i iskošenje karaktera u pravcu x-ose;
  • Ostavlja se mogućnost i jednostavnije realizacije fonta. Umesto da se "krivolinijski" karakteri opišu parametarskim krivim linijama, moguće je koristiti i obične poligone (naravno, sa mnogo temena, da dobro aproksimiraju krivinu), ali tada je potrebno omogućiti i da se karakteri mogu ispisivati pod nekim zadatim uglom.

(b) Potrebno je omogućiti učitavanje i snimanje fontova u odgovarajuće tekstualne datoteke. Studentima se ostavlja sloboda da definišu format datoteke koji im odgovara.



Slika 3: Aplikacija za projektovanje fontova

 

OpenGL

Studentima su ponuđena dva domaća zadatka, od kojih svako treba da samostalno uradi jedan, po izboru. Postoji i mogućnost nadgradnje domaćih zadataka, sa ciljem da prerastu u projekat ili diplomski rad. Nakon uspešne odbrane domaćeg zadatka, studenti zainteresovani za projekat ili diplomski rad mogu da se obrate predmetnom asistentu ili nastavniku.

  • Word dokument postavke zadatka

 

Postavka zadatka A

(a) Simulacija letenja i borbe. Igrač upravlja letelicom oblika piramide (radi jednostavnosti, mogući su i komplikovaniji oblici), i bori se protiv drugog igrača ili protiv kompjutera koji ima na raspolaganju istu takvu letelicu. Arsenal oružja čine laser i nenavođena raketa, slično kao u legendarnoj igri "Elite" iz 1984.

Program obavezno treba da podrži sledeće mogućnosti:

  • Teren. Teren iznad kojeg se odvija borba je krajnje pojednostavljen i predstavljen u vidu kvadratne mreže (širina X dužina).
  • Kontrola letelice. Letelica treba da ima sledeće kontrole: uspinjanje, poniranje, rotacija oko ose u pravcu kretanja, u smeru kretanja kazaljke na satu, i u suprotnom smeru. Takođe, moguće je menjati brzinu letenja u intervalu [vmin, vmax].
  • Kokpit letelice. Na sredini ekrana treba da se nalazi nišan (? ili sličnog oblika). Dejstvo lasera je trenutno i označava se sa četiri linije koje polaze iz uglova ekrana i spajaju se u centru nišana. Raketa je predstavljena kao kvadar. Posle ispaljivanja kreće se ka cilju određenom brzinom (koja je veća od maksimalne brzine broda). Kad izađe iz okvira bojnog polja, nestaje.
  • Pogledi. Jedna kamera treba da se nalazi unutar letelice (pogled iz kokpita). Druga treba da se nalazi iza letelice i da gleda napred. Treća kamera može slobodno da se kreće po terenu (x, y i z sloboda) i da se fokusira na jednu ili drugu letelicu.
  • Izgled letelice. Spoljni izgled letelice treba da se bira između žičnog modela (wireframe), modela neprozirnog monolitno obojenog tela (solid) i modela neprozirnog tela sa teksturom (texture).
  • Osvetljenje. Tačkasti izvor svetlosti moguće je pomerati na jednu od pozicija na uglovima bojnog polja na visini H ili na trenutnu poziciju kamere (efekat "rudarske lampe"). Osim toga, postoji i ambijentalno osvetljenje čiji je intenzitet moguće menjati.

Takođe, program može da podrži i sledeće mogućnosti:

  • Poboljšani izgled terena (teksture, definisanje reljefa kao triangularne mreže).
  • Detekcija kolizije-udara (collision detection) – detekcija pogotka lasera, udara rakete/letelice u letelicu ili letelice u tle.
  • Veštačka inteligencija kompjuterskog pilota. U osnovnoj varijanti za jednog igrača mogla bi mu se zadati neka definisana putanja sa slučajnim odstupanjima, a u proširenjima zadatka (projekat/semestralni rad) treba definisati neki algoritam za borbu.
  • Treba omogućiti da se opisi letelica mogu čitati iz tekstualnih (ili XML) datoteka.

(b) Prilikom pokretanja aplikacije učitavaju se opisi letelica i dimenzije terena.



Primeri uspešno realizovanog domaćeg zadatka
Autor: Vasiljević Mihailo

Postavka zadatka B

(a) Aplikacija za demonstraciju mogućnosti trodimenzionalne grafike i OpenGL-a. Aplikacija treba na ubedljiv način da prikaže elementarne i kombinovane transformacije, da bi se mogla koristiti u nastavi.

Program obavezno treba da podrži sledeće mogućnosti:

  • Objekti. Modeli trodimenzionalnih objekata mogu biti žični (wireframe), neprozirni (solid) ili sa nalepljenom teksturom. Opis objekta se učitava iz datoteke.
  • Transformacije. Moguće je zadati bilo koju od elementarnih transformacija, ili proizvoljnu složenu 3D transformaciju. Tekuća matrica transformacije objekta treba da bude prikazana na posebnom panelu na ekranu aplikacije.
  • Lokalni koordinatni sistem objekta. Ose LKS objekta (desni pravougaoni KS) mogu da se prikažu/uklone pritiskom na dugme.
  • Izvođenje transformacije. Prilikom izvođenja transformacije, "zatamnjeni" objekat (ili wireframe verzija objekta) ostaje na starom položaju, a objekat se iscrtava na novom položaju.
  • Kamera. Interaktivno se može menjati rastojanje kamere od objekta, a kamera je uvek fokusirana na objekat.
  • Osvetljenje. Tačkasti izvor svetlosti se nalazi na trenutnoj poziciji kamere (efekat "rudarske lampe"). Osim toga, postoji i ambijentalno osvetljenje čiji je intenzitet moguće menjati.
  • Animacija. Da bi aplikacija imala što bolja edukativna svojstva, transformacija ne treba da se izvrši trenutno (kao što je to uobičajeno), već da se prikazuje animacija koja prevodi objekat iz stare u novu poziciju.

Takođe, program može da podrži i sledeće mogućnosti:

  • Interaktivno skaliranje objekta. Transformacija skaliranja se može zadati i uključivanjem odgovarajućeg alata i zatim akcijama miša nad objektom.
  • Režim pokretnog objekta. Zadaje se brzina kretanja objekta duž sve tri ose njegovog koordinatnog sistema, kao i brzina njegove rotacije oko sve tri ose. Ove vrednosti mogu se menjati interaktivno u toku izvršavanja aplikacije.
  • Snimanje "filma". Pravi se dnevnik događaja kretanja objekta koje se kasnije može učitati i reprodukovati.

(b) Prilikom pokretanja aplikacije učitava se opis objekta i tekstura.