Seminarski radovi 2010/11 godina

 

 

Tema

Studenti

Prezentacija

Test primeri (.rar)

Konveksni omotač

 (red O(n2))

075/09 Marko Makarić

059/09 Jovana Bogdanović

226/09 Stajka Đenić

221/09 Tamara Zimonjić

Konveksni omotač.ppsx

Test

 

Konveksni omotač

 (red O(n log (n)))

044/09 Stefan Cerovina

316/10 Marko Milošević

109/09 Đorđe Rakonjac

149/09 Perica Trajkov

Konveksni omotač.ppt

Test

Delaunay-ova triangulacija poligona

008/09 Gligorov Vladimir

208/09 Stefan Janjić

137/09 Luka Lazić

066/09 Žana Mrdalj

Triangulacija.ppt

Test

Presek gomile linija

053/09 Petković Stefan

229/09 Sarić Srđan

282/09 Grujičić Ivan

088/09 Sanja Petrović

Presek gomile linija.pptx

Presek gomile linija.avi

Test

Presek linija i krugova

243/07 Miloš Bjeloš

153/07 Vladan Divnić

158/07 Miloš Kuveljić

Presek linija i krugova.pptx

Test

Teselacija ravni trouglovima, četvorouglovima

(i petouglovima)

078/09 Milica Mijailović

224/08 Lazar Mijailović

173/09 Dragan Tošić

230/09 Biljana Janković

Tesalacija ravni.ppsx

Test

Ojlerovi uglovi

030/09 Davor Grubač

075/09 Marija Ševković

105/09 Milan Jakovac

207/08 Đorđe Vlaisavljević

Ojlerovi uglovi.pptx

Test

Optičke osobine krivih drugog reda

069/08 Nemanja Sikimić

121/07 Nenad Matić

163/08 Uroš Veličković

137/07 Nikola Cvetković

Optičke osobine krivih II reda.pptx

Test

Svođenje krive drugog reda na kanonski oblik

153/09 Milica Ostojić

154/09 Nikola Veselinović

152/09 Nikola Živković

247/09 Marko Milosavljević

Svođenje krive drugog reda na kanonski oblik.pptx

 

Platonova tela

087/09 Nemanja Veljković

203/08 Nikola Nikolić

190/09 Igor Simović

219/09 Đorđe Simić

Platonova tela.ppt

Test

Presek dva trougla koji pripadaju istoj ravni

097/09 Uroš Mihailović

052/09 Branko Popović

002/09 Dragoslav Stojčić

242/09 Sava Gavran

Presek trouglova u ravni.ppt

Test

Presek dva trougla u prostoru

004/09 Petar Atanasovski

182/09 Andrija Miljković

012/09 Stevan Prodanović

045/09 Uroš Delić

Presek trouglova u prostoru.pdf

Test

Presek Bézier-ovih krivih

145/09 Nikola Nikolić

151/09 Aleksandar Jovanović

194/09 Sava Ilić

216/09 Nikola Maravić

Presek Bezierovih krivih.pptx

Test

Promena stepena Bézier-ove krive

036/09 Aleksandar Nedeljković

136/09 Tomica Brković

269/09 Milan Kosanović

Promena stepena Bezierove krive.ppt

Test

Svojstva Bézier-ove krive

175/07 Rastko Radinović

319/10 Aleksandar Popović

298/10 Miloš Milekić

373/06 Miloš Mitrović

Svojstva Bezierove krive.ppt

 

Inverzija u odnosu na krug

146/09 Nemanja Tošić

055/09 Saša Jekić

091/09 Dušan Mančić

150/09 Nebojša Ložnjaković

Inverzija u odnosu na krug.pptx

Test

Crtanje grafova (drveta) u ravni

157/09 Nemanja Janjić

160/09 Miloš Milaković

057/09 Katarina Batinić

Crtanje grafova.pptx

 

2D i 3D Bilijar

072/09 Dejan Knežević

253/09 Dragan Jovanović

203/09 Nemanja Jevtić

035/07 Andrea Kolaček

2D bilijar.ppt

Test

Fraktali – Hilbertova, Peanova i Kohova kriva

017/09 Nikola Stanković

008/09 Nikola Stanojević

005/09 Srđan Terzić

Fraktali.ppsx

Test

Afine transformacije ravni

108/09 Dragan Đurđević

104/09 Petar Blažić

238/09 Matei Stanču

Afine transformacije ravni.ppt

Test

Površina poligona u ravni i prostoru

041/10 Nebojša Muljava

148/09 Stana Obrenić

241/09 Jelena Mladenović

127/08 Filip Todorović

Površina poligona.ppsx

Test

 

 

Opisi tema

 

Konveksni omotač (red O(n2))

 

Literatura:

1.        http://poincare.matf.bg.ac.rs/~tijana/geometrija/seminarski/CTCG729738.zip strane 729-738 (engleski),

2.        http://www.cse.unsw.edu.au/~lambert/java/3d/hull.html

 

Težina: srednji

 

Opis seminarskog: Dato je n tačaka u ravni. Konveksni omotač tih tačaka je najmanji konveksan skup koji te tačke sadrži. Pokazuje se da je konveksni omotač zapravo poligon čija su temena neke od datih tačaka.

 

Zadatak je:

1.        Za datih n tačaka treba odrediti konveksni omotač algoritmom inkrementalnog tipa, složenosti reda O(n2), koji je opisan u literaturi

2.        Implementirati algoritam reda O(n3) sa predavanja

3.        Uporediti brzinu algoritama

povratak na vrh

 

 

Konveksni omotač (red O(n log (n)))

 

Literatura:

1.        http://poincare.matf.bg.ac.rs/~tijana/geometrija/seminarski/CG002010.zip strane 2-10 (engleski),

2.        http://www.cse.unsw.edu.au/~lambert/java/3d/hull.html

 

Težina: srednji-težak

 

Opis seminarskog: Dato je n tačaka u ravni. Konveksni omotač tih tačaka je najmanji konveksan skup koji te tačke sadrži. Pokazuje se da je konveksni omotač zapravo poligon čija su temena neke od datih tačaka.

 

Zadatak je:

1.         Za datih n tačaka treba odrediti konveksni omotač algoritmom inkrementalnog tipa, složenosti reda O(n log(n)), koji je opisan u literaturi.

2.         Implementirati algoritam reda O(n3) sa predavanja

3.         Uporediti brzinu algoritama

povratak na vrh

 

 

Delaunay-ova triangulacija poligona

 

Literatura:

1.         http://w3.jouy.inra.fr/unites/miaj/public/vigneron/cs4235/l10cs4235.pdf

 

Težina: srednji

 

Opis seminarskog:  Delunijeva triangulacija poligona (tačnije skupa tačaka ravni) je takva triangulacija da nijedno teme ne pripada nijednom trouglu te triangulacije. Moze se pokazati da se takvom triangulacijom maksimizira minimalni ugao svih trouglova. Tako se izbegavaju uski (tj. degenerisani) trouglovi.

 

Zadatak je:

1.        Implementirati neki algoritam za triangulaciju skupa od n tačaka

2.        Napraviti i nacrtati test primere

povratak na vrh

 

 

Presek gomile linija

 

 

Literatura:

1.         http://poincare.matf.bg.ac.rs/~tijana/geometrija/seminarski/CG019028.zip strane 19-28 (engleski),

 

Težina: srednji-težak

 

Opis seminarskog: Dato je n duži u  ravni. Potrebno je odrediti sve moguće preseke tih duži. Naravno, postoji trivijalan algoritam-presecati svake dve duži. Dosta bolji algoritam, reda O(n log(n)),  je opisan u literaturi i pripada algoritmima «čišćenja ravni» (en. plane sweep algorithm). Za realizaciju algoritma koristi se struktura drveta.

 

Zadatak je:

1.        Implemenirati trivijalni algoritam

2.        Implementirati algoritam reda O(n log(n)),

3.        Uporediti brzinu ta dva algoritma na primerima. Nacrtati primere.

povratak na vrh

 

 

Presek linija i krugova

 

Literatura:

1.        skripte, predavanja

 

Težina: lak

 

Opis seminarskog: Presek prave i kruga se lako određuje. Za presek dva kruga potrebno odrediti njihovu radikalnu osu.

 

Zadatak je:

1.        Napisati funkciju za presek prave i kruga

2.        Napisati funkciju za presek dva kruga

3.        Napisati program koji učitava dva objekta iz fajla, odredjuje im presek, a zatim crta rezultat.

povratak na vrh

 

 

Teselacija ravni trouglovima, četvorouglovima (i petouglovima)

 

Literatura:

1.        http://library.thinkquest.org/16661/index2.html

2.        http://demonstrations.wolfram.com/AnyQuadrilateralCanTile/

3.        http://demonstrations.wolfram.com/AnyTriangleCanTile

 

Težina: srednji

 

Opis seminarskog: Teselacija (ili popločavanje) je razbijanje ravni podudarnim figurama (ili figurom). Postoji mnogo zanimljivih teselacija ravni (tražiti «tesselation» na images.google.com). Najjednostavnije su teselacije jednakostraničnim trouglovima, kvadratima i šestouglovima. Interesantno je da je moguca teselacija ravni i proizvoljnim trouglom i četvorouglom, što je cilj ovog seminarskog. Eventualni dodatni cilj je teselacija nekim petouglovima (nije moguća teselacija proizvoljnim petouglom).

 

Zadatak je:

1.         Implementirati algoritme za trougao i četvorougao.

2.         Nacrtati teselacije

3.         Eventualno uraditi teselaciju petouglom.

povratak na vrh

 

 

Ojlerovi uglovi

 

Literatura:

1.                    http://poincare.matf.bg.ac.rs/~tijana/geometrija/seminarski/GTCG847852.zip strane 847-852 (engleski),

 

Težina: srednji

 

Opis seminarskog: Poznato je da je svaka direktna izometrija prostora (tj. ona koja čuva orjentaciju), rotacija oko neke prave za neki ugao. Ojlerova teorema kaže da se svaka  direktna izometrija prostora može predstaviti kao kompozicija tri rotacije oko koordinatnih osa i to za uglove koje je moguće odrediti. Ovo ima velike primene u kompjuterskoj grafici, robotici....

 

Zadatak je:

1.        Za datu matricu proveriti da li je matrica izometrije i da li je direktna

2.        Ako jeste, treba joj naći Ojlerove dekompozicije

3.        Ilustrovati prethodno na primeru kocke: primeniti na kocku proizvoljnu izometriju (nacrtati kocku, osu rotacije i zarotiranu kocku), a zatim istu izometriju realizovati trima rotacijama (nacrtati odgovarajuće međupoložaje kocke).

povratak na vrh

 

 

Optičke osobine krivih drugog reda

 

Literatura:

1.  skripte (http://alas.matf.bg.ac.rs/~vsrdjan/files/geometrija5.pdf)

 

Težina: lak

 

Opis seminarskog: Elipsa, hiperbola i parabola imaju takozvane optičke osobine. Kod elipse i hiperbole svetlosni zrak koji izlazi iz jedne žiže elipse prolazi kroz drugu žižu (eliptički bilijar).

Kod parabole svetlosni zrak koji izlazi iz žiže se odbija paralelno osi parabole.

 

Zadatak je:

1.        Za dati pravc a odrediti jednačinu zraka i odbijenog zraka (za slučaj svake od krivih)

2.        Za dati prirodan broj n odrediti kako će izgledati elipsa sa svetlosnim zrakom nakon n odbijanja

3.        Nacrtati slike koje ilustruju navedene optičke osobine (za slučaj svake od krivih)

povratak na vrh

 

 

Svođenje krive drugog reda na kanonski oblik

 

Literatura:

1.        skripte (http://alas.matf.bg.ac.rs/~vsrdjan/files/geometrija5.pdf)

 

Težina: srednji

 

Opis seminarskog: Poznato je da se svaka kriva drugog reda izometrijskim transformacijama (rotacija, translacija i refleksija) može svesti na kanonski oblik.

 

Zadatak je:

1.         Odrediti  formule rotacije, translacije i eventualno refleksije kojima  se kriva svodi na kanonski oblik

2.         Odrediti kanonski oblik krive i koja je kriva u pitanju

3.         Nacrtati datu krivu, originalni koordinatni sistem kao i koordinatne sisteme dobijene nakon rotacije, translacije i refleksije.

povratak na vrh

 

 

Platonova tela

 

Literatura:

1.        skripta (http://alas.matf.bg.ac.rs/~vsrdjan/files/geometrija7.pdf)

2.        http://en.wikipedia.org/wiki/Platonic_solid

 

Težina:  lak-srednji

Opis seminarskog:   Platonova tela (ili pravilni poliedri) su poliedri čija je svaka strana pravilan poligon sa jednakim brojem temena i čije svako teme sadrži jednak broj ivica. Postoji tačno pet platonovih tela (tetraedar, kocka, oktaedar, dodekaedar i ikosaedar). Ako se svakoj pljosni Platonovog tela pridruži težište te pljosni, dobijaju se temena dualnog tela. Tako su dualni: tetraedar sam sebi, kocka i oktaedar,  dodekaedar i ikosaedar.

 

Zadatak je:

1.         Iz datih fajlova učitati koordinate temena i pljosni Platonovih tela

2.         Za dato telo izračunati dualno telo

3.         Nacrtati projekciju tela sa mogućošću rotacije oko koordinatnih osa.

povratak na vrh

 

 

Presek dva trougla koji pripadaju istoj ravni

 

Literatura:

1.         skripte (http://demonstrations.wolfram.com/TheIntersectionOfTwoTriangles/)

 

Težina: lak

 

Opis seminarskog:  Dva trougla u ravni mogu da se seku na različite načine: da se ne seku, da im presek bude tačka, duž, trougao, četvorougao...

 

Zadatak je:

1.        Napisati funkciju koja za data dva trougla vraća njihov presek

2.        Napraviti test primere za sve moguće slučajeve

3.        Nacrtati rezultat

povratak na vrh

 

Presek dva trougla u prostoru

 

Literatura:

1.         skripte (http://demonstrations.wolfram.com/Intersecting3DTriangles/)

 

Težina: lak-srednji

 

Opis seminarskog:  Dva trougla u prostoru mogu da se seku na različite načine: da se ne seku, da im presek bude tačka, duž, (a ako pripadaju istoj ravni i trougao, četvorougao...)

 

Zadatak je:

1.         Napisati funkciju koja za data dva trougla vraća njihov presek

2.         Napraviti test primere za sve moguće slučajeve

3.         Nacrtati rezultat koristeci projekciju na ravan

povratak na vrh

 

 

Presek Bézier-ovih krivih

 

Literatura: 

1.          http://www.tsplines.com/technology/edu/CurveIntersection.pdf (engleski)

2.         http://poincare.matf.bg.ac.rs/~tijana/geometrija/bezier/bezier-podela.html

 

Težina:  srednji

 

Zadatak je:

1.         Napisati funkciju  int PodelaKrive(Tacka* tniz,int n,float u,Tacka* niz1,Tacka* niz2) koja deli datu Bézier-ovu krivu n-tog reda praveći rez u tački B(u) za dato u. Argumenti funkcije su niz kontrolnih tačaka  tniz dužine n+1>2 i realna vrednost 0<u<1. Funkcija treba da upiše u nizove niz1 i niz2 nove kontrolne tačke Bézier-ovih krivih.  Funkcija vraća 0 ako je došlo do greške, a 1 inače.

2.         Napisati program koji traži sve tačke preseka dve Bézier-ove krive koristeći standardni algoritam Bézier-ove podele. 

3.         Nacrtati obe Bézier-ove krive, njihove konveksne omotače i tačke preseka.

povratak na vrh

 

 

Promena stepena Bézier-ove krive

 

Literatura:

1.        http://poincare.matf.bg.ac.rs/~tijana/geometrija/bezier/bezier-promena_stepena.html

Težina:  srednji

 

Zadatak je:

1.         Napisati funkciju int PodelaKrive(Tacka* ktacke,int n,Tacka* niz1,Tacka* niz2) koja deli datu Bézier-ovu krivu n-tog reda  oderđenu svojim kontrolnim tačkama na dva jednaka dela. Funkcija treba da upiše u nizove niz1 i niz2 nove kontrolne tačke Bézier-ovih krivih.  Funkcija vraća 0 ako je došlo do greške, a 1 inače.

2.         Napisati funkciju int PovecajStepen(Tacka* ktacke,int n,int m,Tacka* niz) koja povećava stepen Bézier-ove krive za m. Funkcija treba da upise u niz nove kontrolne tačke.

3.         Napisati program koji datu Bézier-ovu krivu krivu n-tog stepena oderđenu svojim kontrolnim tačkama deli na dva jednaka dela, a zatim povećava stepen prvog dela krive za m, a drugog dela za k.

4.         Nacrtati početnu krivu i njen konveksni omotač, a zatim i konveksni omotač nove krive.

povratak na vrh

 

 

Svojstva Bézier-ove krive

 

Literatura: 

1.        http://poincare.matf.bg.ac.rs/~tijana/geometrija/bezier/bezier-pomeranje_kontrolnih_tacaka.html

 

Težina:  lak

 

Zadatak je:

Napisati program koji ilustruje promenu oblika Bézier-ove krive pri promeni položaja kontrolnih tačaka. Korisnik zadaje krivu nizom kontrolnih tačaka, a zatim bira kontrolnu tačku i translira je za neki vektor. Program treba da nacrta početnu Bézier-ovu krivu i njen konveksni omotač, a zatim i svaku novu krivu dobijenu translacijom neke kontrolne tačke.

povratak na vrh

 

 

Inverzija u odnosu na krug

 

Literatura:

1.        http://mathworld.wolfram.com/Inversion.html

2.        Lopandic, od strane 201 (http://poincare.matf.bg.ac.rs/~zlucic/LopandicGeometrija.pdf)

 

Težina: lak-srednji

 

Opis seminarskog: Inverzija u odnosu na krug je preslikavanje ravni koje dati krug preslikava na sebe, unutrašnjost kruga slika u njegovu spoljašnjost i obrnuto. Inverzija slika prave i  krugove te ravni opet u prave i krugove. Naime, ako objekat koji preslikavamo sadrži centar inverzije (centar kruga), tada se on slika u pravu, u suprotnom se slika u krug.

 

Zadatak je:

1.         Napisati funkciju koja realizuje inverziju u odnosu na krug sa centrom (0,0) i poluprečnikom r.

2.         Napisati funkciju koja za datu pravu ili krug određuje njenu sliku u inverziji

3.         Napisati funkciju koja crta kružni luk (kome su dati centar i krajnje tačke)

4.         Za dati trougao odrediti sliku u inverziji (to je trougao koji se sastoji od kružnih lukova)

5.         Napraviti test primere i nacrtati

povratak na vrh

 

 

Crtanje grafova (drveta) u ravni

 

Literatura: 

1.         http://poincare.matf.bg.ac.rs/~tijana/geometrija/seminarski/tree_drawing.pdf

 

Težina: lak-srednji

 

Opis seminarskog: Drvo je graf koji nema ciklusa i kada se nacrta upravo tako i izgleda. Struktura drveta dobro je poznata: sastoji se od čvorova i listova koji su povezani granama.  Problem crtanja grafova, specijalno drveta, u ravni je relativno jednostavan ako nam nije vazno kako crtež izgleda. Ipak, minimalan je zahtev da se grane grafa ne seku, da bi taj crtež bio iole upotrebljiv.

 

Zadatak je:

1.        Napisati funkciju koja dati graf crta u ravni (koristiti Algoritam 1 iz literature)

2.        Napraviti test primere

povratak na vrh

 

 

2D i 3D Bilijar

 

Literatura:

1.        Skripte, predavanja

2.        http://demonstrations.wolfram.com/PoolShot/

3.        http://demonstrations.wolfram.com/PoolShot3D/

 

Težina: lak-srednji

 

Opis seminarskog: U 2D slucaju pretpostavljamo da nam je dat pravougaonik ivica a i b, čije je levo donje teme tačka (0,0). Sa tačke (x0,y0) koja pripada pravougaoniku u pravcu p ispaljujemo kuglu koja se odbija od jedne ivice, pa od druge ivice... kao na bilijarskom stolu. U 3D slučaju slično, samo je umesto pravougaonika dat kvadar.

 

Zadatak je:

1.        Napisati funkciju koja za datu tačku, pravac i broj n, crta putanju kugle nakon n odbijanja (2D).

2.        Napisati funkciju koja za datu tačku, pravac i broj n, crta putanju kugle nakon n odbijanja (3D).

3.        Napraviti test primere i crteže. U 3D slucaju zarotirati objekte, pa ih projektovati.

povratak na vrh

 

 

Fraktali – Hilbertova, Peanova i Kohova kriva

 

Literatura:

1.        http://en.wikipedia.org/wiki/Fractal

2.        http://en.wikipedia.org/wiki/Hilbert_curve#Computer_implementations_of_the_drawing_algoritms

3.        http://www.cut-the-knot.org/do_you_know/hilbert.shtml

4.        http://www.compuphase.com/hilbert.htm

5.        http://www.cut-the-knot.org/Curriculum/Calculus/NoLimit.shtml

6.        http://mathworld.wolfram.com/KochSnowflake.html

 

Težina: lak-srednji

 

Opis seminarskog: Fraktali su „sebi slični“ likovi, odnosno likovi kojima kad uvećamo deo dobijamo oblik nalik polaznom. Fraktalne strukture su veoma česte u prirodi, te su važne u mnogim granama nauke i umetnosti.

Hilbertova i Peanova kriva su poznate kao neprekidne krive koje ispunjavaju ceo kvadrat, tako da „na neki način imaju dimenziju i jedan (jer su krive) i dva (jer popunjavaju deo ravni)“.

 

Zadatak je:

1.        Napraviti popularan prikaz (predavanje) fraktala (fractals) i  krivih koje popunjavaju ravan (plane filling curves), sa slikama. Koristiti materijal sa Interneta.

2.        Napraviti funciju koja crta Hilbertovu, Peanovu i Kohovu krivu (ili bar dve od njih) zadatog reda.

povratak na vrh

 

 

Afine transformacije ravni

 

Literatura:

1.        predavanja,

2.        skripta (http://alas.matf.bg.ac.rs/~vsrdjan/files/geometrija2.pdf)

 

 

Težina: lak

 

Opis seminarskog:   Afino preslikavanje  ravni je određeno sa tri para odgovarajućih tačaka ABC i A’B’C’u proizvoljnom položaju. Afino preslikavanje preslikava krugove u elipse, paralelne prave u paralelne prave (zato, recimo, preslikava kvadrat u paralelogram). Afino preslikavanje čuva razmeru (pa recimo slika središte duži u središte duži, i težište trougla u težište trougla), ali ne čuva dužine, uglove (pa samim time i pojam ortocentra, središta upisanog i opisanog kruga).

 

Zadatak je

1.        Za dva data trougla ABC i A’B’C’odrediti jednačine afinog preslikavanja koje slika jedan u drugi

2.        Odrediti (i nacrtati) opisani i upisani krug trougla ABC i slike tih krugova.

3.        Za dati paralelogram A’B’C’D’ odrediti elipsu koja je u njega upisana, a koja dodiruje strane paralelograma u njihovom središtu (uputstvo: preslikati paralelogram na pogodan kvadrat)

povratak na vrh

 

 

Površina poligona u ravni i prostoru

 

Literatura:

1.        http://poincare.matf.bg.ac.rs/~tijana/geometrija/seminarski/GTCG816822.zip  strane 816-822 (engleski)

 

Težina: lak-srednji

 

Opis seminarskog: Neka je dat poligon u ravni (ne obavezno konveksan). Ako je poligon trougao tada se njegova površina računa pomoću vektorskog proizvoda. Interesantno je da se za proizvoljan poligon u ravni z=0 ova formula lako uopštava. Ako poligon ne pripada ravni z=0, situacija je komplikovanija, ali ne mnogo.

 

Zadatak je:

1.        Implementirati funkciju za površinu proizvoljnog poligona u ravni z=0.

2.        Implementirati funkciju za površinu poligona ako on pripada proizvoljnoj ravni – koristeći normalu te ravni.

3.        Implementirati funkciju za površinu poligona ako on pripada proizvoljnoj ravni – koristeći koordinatni sistem relativan datoj ravni.

4.        Uporediti poslednja dva rezultata i nacrtati slike

povratak na vrh