3D Tijelo



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:


Napisao Andro Galinović