Algoritmi za implementaciju odrezujućih ploha

Cohen–Sutherland

image

Cohen-Sutherland algoritam je algoritam koji se koristi u računalnoj grafici za odrezivanje linija. Algoritam dijeli dvodimenzionalni prostor u 9 dijelova, a trodimenzionalni prostor u 27 dijelova. Središnji dio ili regija je ono što će se iscrtati, a svi ostali dijelovi služe za traženje presjeka i odrezivanje linija.



Kao što je vidljivo na doljnoj slici prostor se dijeli na 9 dijelova, a samo onaj središnji je vidljiv. Svaka regija je identificirana s kodom od 4 bita. Svaki bit u kodu predstavlja istinu(1) ili laž(0).

  • Prvi bit postavljen na 1 - točka je lijevo od vidljivog prostora - x < xmin
  • Drugi bit postavljen na 1 - točka je desno od vidljivog prostora - x > xmax
  • Treći bit postavljen na 1 - točka je ispod vidljivog prostora - x < ymin
  • Četvrti bit postavljen na 1 - točka je iznad vidljivog prostora - y > ymax
image

Liang-Barasky

image

Liang-Barasky algoritam je algoritam koji se koristi u računalnoj grafici za odrezivanje linija. Algoritam koristi parametarsku jednadžbu pravca i u pomoć nejednakosti se traži presjek između linije koju treba odrezati u prostora koji odrezuje tu liniju. Mnogo je efikasniji od Cohen-Sutherland algoritma.



Na doljnoj slici prostor se dijeli na 9 dijelova isto kao i kod prethodnog algoritma, ali se preko parametarske jednadžbe pravca traži presjek sa svakom odrezujućom linijom u vidljivom prostoru. Na sljedećoj slici je vidljiva linija koja se odrezuje pomoću parametarske jednadžbe pravca.

image

Na slici ispod je vidljivo kako se uz pomoć parametara određuje gdje se točka nalazi.

image

Sutherland–Hodgman

image

Sutherland–Hodgman algoritam koristi razne oblike za odrezivanje linija. Dakle sve ono što se nalazi unutar tog oblika će biti prikazano, a ono što je izvan tog oblika se neće prikazati. To je vidljivo na slici dolje.




Prikaz kako Sutherland–Hodgman algoritam pomoću peterokuta odrezuje slovo W.

image