5 Geometrijski algoritmi

Geometrijski algoritmi igraju važnu ulogu u mnogim oblastima, poput računarske grafike, projektovanja pomoću računara, projektovanju integrisanih kola visoke rezolucije (VLSI), robotike i baza podataka. U računarski generisanoj slici može biti na hiljade ili čak na milione tačaka, linija, trouglova, kvadrata ili krugova; slično, projektovanje računarskog čipa može da zahteva rad sa milionima elemenata koji se predstavljaju geometrijskim figurama. Sve ove primene zahtevaju obradu geometrijskih objekata. Pošto veličina ulaza za ove probleme može biti vrlo velika, veoma je značajno razviti što efikasnije algoritme za njihovo rešavanje.

Česta neugodna karakteristika geometrijskih problema je postojanje mnogih specijalnih slučajeva. Na primer, dve prave u ravni se seku u jednoj tački, sem ako su paralelne ili se poklapaju. Pri rešavanju problema sa dve prave, moraju se predvideti sva tri moguća slučaja. Složenije figure prouzrokuju pojavu mnogo većeg broja specijalnih slučajeva i o njima treba voditi računa. Obično se većina tih specijalnih slučajeva neposredno rešava, ali potreba da se oni uzmu u obzir čini ponekad konstrukciju geometrijskih algoritama vrlo iscrpljujućom. Mi ćemo ponekad ignorisati detalje koji nisu od suštinskog značaja za razumevanje osnovnih ideja algoritama, ali čitaocu savetujemo da razmotri rešavanje svakog od specijalnih slučajeva na koji se pri konstrukciji algoritma naiđe, kako bi se dobili algoritmi koji su u potpunosti ispravni.

Na početku ovog poglavlja razmotrićemo neke osnovne pojmove koji nam mogu biti od pomoći prilikom rešavanja različitih geometrijskih problema: korišćenjem orijentacije trojke tačaka možemo, na primer, utvrditi da li se dve duži seku ili ispitati da li je tačka unutar ili van datog trougla. Nakon toga ćemo razmotriti nekoliko fundamentalnih geometrijskih algoritama nad skupom tačaka u ravni — konstrukciju prostog mnogougla, ispitivanje da li tačka pripada prostom mnogouglu, kao i različite algoritme za konstrukciju konveksnog omotača skupa tačaka.