Uvod
Trodimenzionalno tijelo je određeno geometrijskim i topološkim podacima. Geometrijski podaci su koordinate vrhova Vi(xi
yi zi hi),
gdje je i=1,...,n. Topološke podatke čini povezanost vrhova, odnosno
popisi koji određuju površinu, poligone i bridove, te pripadne vrhove.
Tijelo se sastoji od poligona (gdje svaki poligon ima barem 3
nekolinearna vrha) određenih vrhovima u redoslijedu kazaljke na satu,
kada su vrhovi gledani izvan tijela. Svaki poligon "leži" na jednoj
ravnini određenoj sa tri nekolinerarne točke (vrha):
Vi-1=(xi-1 yi-1 zi-1 hi-1),
Vi =(xi yi zi hi ),
Vi+1=(xi+1 yi+1 zi+1 hi+1).
Implementacija vježbe
Sama implementacija vježbe sastoji se od
JAVA appleta za unos vrhova konveksnog
tijela, odabir točke u prostoru, te provjere da li se ta točka nalazi
unutar ili izvan tijela. Tijelo je sastavljeno od katova. Između katova
se automatski stvaraju poligoni (četverokuti), tako da se tijelo
sastoji od dva n-terokuta (gornji i donji) i niza četverokuta. Time je
znatno olakšan posao određivanja topologije tijela. Sve što korisnik
mora učiniti je unijeti vrhove tijela po katovima, tj. prvo n vrhova
za prvi kat, n za drugi, ..., n za zadnji sve u istom smjeru. Preporuka
je prvo vidjeti primjer, pokušati mijenjati koordinate vrhova te tek
potom krenuti u samostalno definiranje cijelog tijela.
Nakon određivanje topologije tijela određuju se jednadžbe (koeficijenti) ravnina Ri svih poligona prema slijedećoj formuli:
A = (y2-y1)(z3-z1)-(z2-z1)(y3-y1)
B = -(x2-x1)(z3-z1)+(z2-z1)(x3-x1)
C = (x2-x1)(y3-y1)-(y2-y1)(x3-x1)
D = -x1A - y1B - z1C
Nakon određivanje jednadžbe ravnina možemo
odrediti da li je odabrana točka V unutar ili izvan zadanog konveksnog
poligona prema slijedećem pravilu:
ako postoji i takav da V Ri < 0, gdje je i indeks bilo koje ravine,
uz uvjet da su vektori normala ravina usmjereni u unutrašnost tijela točka V je izvan tijela
U konkretnoj implementaciji uvjet je V Ri > 0 zbog činjenice da su sve normale usmjerene izvan tijela.
Za potrebu programa napravljene su i dva razreda Tocka i Ravnina.
Demonstracija: