4. Ravnina, tijelo

26 KB
Lab4.zip

ZADATAK VJEŽBE

Osmisliti koncept izgradnje trodimenzionalnog tijela i algoritam za ispitivanje odnosa tijela i točke u prostoru. Tijelo je određeno specifičnim pravilima: gornji i donji poligon su međusobno paralelni i sastavljeni od n vrhova, a između njih nalazi se plašt s m katova formiranih od n četverokuta.

KONCEPTUALNO RJEŠENJE

Redoslijed točaka u poligonima mora biti dogovorno određen u smjeru kazaljke na satu, gledano izvan tijela. To nam omogućava da jednostavno ispitamo odnos točke i tijela koristeći skalarni produkt točke i ravnine. Za svaki poligon izračunavamo koeficijente ravnine na kojoj on leži primjenom sljedećih formula na prve tri točke poligona:

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)

Definiranjem tijela na ovakav način, znamo da je točka izvan tijela ako je skalarni produkt točke i svake ravnine veći od nule, odnosno ako je svaka od tih ravnina "iznad" točke ili točno na njoj. Ustanovi li se da postoji neka ravnina koja je "ispod" točke, zaključujemo da je točka izvan tijela.

PROGRAMSKO OSTVARENJE

Osnovne parametre tijela – broj katova i broj vrhova na svakom katu – čuvamo u globalnim varijablama:

int m, n;

Točke vrhova pohranjene su u poljima, u kojima svaka ima svoj indeks:

float x[], y[], z[];

Grupiranjem tih točaka određeni su poligoni. Svaki poligon je, u biti, niz točaka, odnosno njihovih indeksa. Čuvamo ih u sljedećem dvodimenzionalnom polju:

int p[][];

gdje prvi indeks određuje poligon, a drugi određuje indeks točke. Time je svaki poligon potpuno i jednoznačno određen. Prvi poligon, s indeksom nula, je donji osnovni poligon, a zadnji poligon, s indeksom n · m + 1 je gornji osnovni poligon.

UPUTE ZA KORIŠTENJE

Program se pokreće s jednim parametrom, kojim je zadana ulazna datoteka:

Lab4.exe ulaz.txt

Nakon pokretanja, program izračunava odnos zadane točke i zadanog tijela i ispisuje informaciju korisniku na zaslon.

Format ulazne datoteke je slijedeći: u prvom redu trebaju biti zadani parametri n i m, zatim za svaki vrh tijela koordinate x, y i z. Na kraju su navedene koordinate ispitne točke.

Primjer ulazne datoteke:

4 3

50 50 0
-50 50 0
-50 -50 0
50 -50 0
50 50 30
-50 50 30
-50 -50 30
50 -50 30
45 45 60
-45 45 60
-45 -45 60
45 -45 60
25 25 160
-25 25 160
-25 -25 160
25 -25 160

0 0 161

i izlaz kojeg program daje za te podatke:

Ante Radman, Laboratorijske vježbe iz Računalne grafike, šk. godina 2003/2004.