KONSTRUKTIVNA GEOMETRIJA
SA SLOBODNO OBLIKOVANIM OBJEKTIMA



UVOD
O KONSTRUKTIVNOJ
GEOMETRIJI
POSTUPCI PRIKAZA
ELEMENTI POVRŠINE
OKTALNA STABLA
ISPITIVANJE
UNUTAR-IZVAN
UZORKOVANJE RUBOVA
IMPLEMENTACIJA
 


Konstruktivna geometrija čvrstih tijela je široko korišten način gradnje i prikaza trodimenzionalnih tijela. U začecima, konstruktivna geometrija je bila fokusirana na gradnju tijela jednostavnim primitivima kao što su kugle, kocke, valjci, stošci i slično, međutim, u novije vrijeme sve se više koriste netrivijalni oblici proizvoljne forme. Jedan od razloga popularnosti konstruktivne geometrije je mogućnost dodavanja uvijek novih elemenata u tijelo, koje se obavlja krajnje jednostavno. Toj jednostavnosti najviše pridonosi CSG zapis u obliku stabla. Listovi stabla su tada primitivni oblici (ili čak i složenija tijela), a ostali čvorovi su operacije na objektima.

Koriste se tri osnovne operacije:

  • unija

  • razlika

  • presjek

Izgradnja tijela se obavlja od listova stabla prema korijenu, ali tako da se na svakoj sljedećoj razini koristi rezultat dobiven na nižoj razini.

Programski je vrlo jednostavno realizirati strukturu ovakvog stabla. Za jezik C možemo pisati:

typedef struct _csgtree
{
     Operator op;
     Object3D primitive;
     struct _csgtree *left;
     struct _csgtree *right;
}

čime se tvori struktura jednog čvora stabla. Osnovni elementi su pokazivači na lijevi i desni čvor-dijete, te operator koji se koristi na čvorovima-djeci ili 3D objekt, ako je riječ o listu stabla.

Problem kod konstruktivne geometrije je određivanje rezultata operacija na tijelima tj. određivanje dijela tijela koji treba pripadati novome objektu, a koji ne. Ako se koriste jednostavni objekti, određivanje rezultata će se obavljati bacanjem zrake. Postupak predviđa bacanje guste mreže zraka kroz sve objekte. Zraka na svome putu može ne sjeći objekt, sjeći ga u jednoj točci ili ga probadati u najmanje dvije točke. Kada se za jednu zraku nađu sve točke presjeka sa objektima, ovisno o operaciji zadanoj za objekte pristupa se odabiranju dijela presjeka koji se zadržava i onoga koji se odbacuje. Pogodnost ovakvog postupka je u tome što je moguće lako implementirati algoritam spuštanja po stablu i računanja presjecišta.

 

ZEMRIS   FER  e-mail