<< Chapter < Page Chapter >> Page >
Modul sadrzi elemente transformacije iz "svetskog" u "ekranski" koordinatni sistem i osnovne osobine ovih transformacija.

Transformacija pogleda

Na slici Euklidovašetnja (Les Promenades d'Euclide), belgijski umetnik Rene Magrit (Magritte) predstavlja nam obmanu oka koje perspektivu jednog pariskog bulevara gotovo ne razlikuje od konusnog oblika jedne srednjevekovne građevine.

Sl. 1. Rene Magrit, Euklidovašetnja , 1955, ulje na platnu (Minneapolis Institute of Arts)

Ovakve dvosmislenosti i druge obmanečula vida navode nas na traženje preciznog formalnog“jezika”kojim bi računskoj mašini preneli naše geometrijske ideje na jednoznačan način. Međutim, ova slika sadrži i“priču”upravo o onom optičko-geometrijskom odnosu o kome ovde raspravljamo i koji se zove transformacija pogleda . Naime, na Magritovoj slici rađenoj u tehnici ulje ne platnu, vidimo jedan veliki prozor nekog pariskog salona ispred koga stoji slikarski stafelaj na kome je tek završeno platno na kome se vidi deo pariskog pejzaža. Deo objektivne stvarnosti tako je verno prenet na platno da se više ne razlikuje od stvarnosti. Slikarsko platno možemo poistovetiti sa ekranom računara, a naslikano platno naštafelaju sa vidnim poljem koje se u grafici zove vjuport ( viewport ). Na pravougaonom polju vjuporta, umetnik predstavlja deo realnosti (bulevar i kulu) koji vidi kroz prozor. Ovaj prozor se u grafici zove svetski prozor ( world window ). Sada ostaje samo da slikarsko platno zamenimo ekranom računara.

Prvi korak u tom pravcu je definisanje“okvira”na ekranu računara u komećemo raditi i razvijati neki našprojekat. Taj se“okvir”zove se ekranski prozor i predstavljen je pravougaonikomčija donja stranica predstavlja ekransku x size 12{x - {}} {} koordinatu, dok leva, vertikalna stranica predstavlja ekransku y size 12{y - {}} {} koordinatu (Slika 2, desno).

Sl. 2.“Window-to-viewport”transformacija (transfrmacija pogleda)
U ekranski prozor smeštamo sliku koju obrađujemo. Format slike, po pravilu je manji od formata ekranskog prozora, i takodje po pravilu je i sam pravougaon. Taj novi, manji pravougaonik, koji sadrži sliku na kojoj radimo, je vjuport . Dakle, vjuport sadrži sliku koju obrađujemo i koja je transformisana slika neke realne scene iz fizičkog sveta. Okvir te realne slike, kaošto je većnaglašeno je svetski prozor ( world window ) a odgovarajuće koordinate, postavljene na analogan način kao i ekranske, zovu se svetske koordinate. Na Slici 2 (levo), svetske koordinate su označene sa X size 12{X} {} i Y size 12{Y} {} . Koordinatni sistem ( X , Y ) size 12{ \( X,Y \) } {} zove se svetski koordinatni sistem .

Na osnovu rečenog, možemo naslutiti da je potrebno, bilo preračunati svetske koordinate u ekranske, bilo obrnuto. Lako je ustanoviti da je odnos svetskih ( X , Y ) size 12{ \( X,Y \) } {} i ekranskih koordinata ( x , y ) size 12{ \( x,y \) } {} dat linearnom vezom

(1) x = aX + e , y = dY + f size 12{x= ital "aX"+e,~~y= ital "dY"+f} {} ,

pričemu su a , e , d , f size 12{a,e,d,f} {} realne konstante i pritom je a 0, d 0 . size 12{a<>0,~d<>0 "." } {} Ova transformacija je u računarskoj grafici poznata kao transformacija pogleda ili, preciznije window-to-viewport transformacija . Pravougaonik,čije su stranice paralelne ko­ordinatnim osama je potpuno definisan ukoliko poznajemo koordinate njegovog donjeg levog i gornjeg desnog temena. Dakle, svetski prozor je definisan sa dva uređena para ( X 1 , Y 1 ) size 12{ \( X rSub { size 8{1} } ,Y rSub { size 8{1} } \) } {} i ( X 2 , Y 2 ) size 12{ \( X rSub { size 8{2} } ,Y rSub { size 8{2} } \) } {} , pričemu, neka je X 1 < X 2 size 12{X rSub { size 8{1} }<X rSub { size 8{2} } } {} i Y 1 < Y 2 size 12{Y rSub { size 8{1} }<Y rSub { size 8{2} } } {} ,što u stvari znači da je ( X 1 , Y 1 ) size 12{ \( X rSub { size 8{1} } ,Y rSub { size 8{1} } \) } {} njegovo donje levo, a ( X 2 , Y 2 ) size 12{ \( X rSub { size 8{2} } ,Y rSub { size 8{2} } \) } {} gornje desno teme. Ako na sličan način obeležimo i donje levo tj. gornje desno teme vjuporta, tj. sa ( x 1 , y 1 ) size 12{ \( x rSub { size 8{1} } ,y rSub { size 8{1} } \) } {} i ( x 2 , y 2 ) size 12{ \( x rSub { size 8{2} } ,y rSub { size 8{2} } \) } {} , mogućne su dve situacije.

Sl. 3. Direktna i inverzna“window-to-viewport”transformacija
  • Poznata je transformacija (1), tj. konstante a , e , d , f size 12{a,e,d,f} {} i jedan od dva pravougaonika (window ili viewport). Tada iz (1) izračunavamo drugi.
  • Poznati su window P = { ( X 1 , Y 1 ) , ( X 2 , Y 2 ) } size 12{P= lbrace \( X rSub { size 8{1} } ,Y rSub { size 8{1} } \) , \( X rSub { size 8{2} } ,Y rSub { size 8{2} } \) rbrace } {} i viewport p = { ( x 1 , y 1 ) , ( x 2 , y 2 ) } size 12{p= lbrace \( x rSub { size 8{1} } ,y rSub { size 8{1} } \) , \( x rSub { size 8{2} } ,y rSub { size 8{2} } \) rbrace } {} . Tada se koeficijenti transformacije (1) izračunavaju iz sistema jednačina

(2) x 1 = aX 1 + e , x 2 = aX 2 + e , alignl { stack { size 12{x rSub { size 8{1} } = ital "aX" rSub { size 8{1} } +e,} {} #x rSub { size 8{2} } = ital "aX" rSub { size 8{2} } +e, {} } } {} tj. y 1 = dY 1 + f , y 2 = dY 2 + f , alignl { stack { size 12{y rSub { size 8{1} } = ital "dY" rSub { size 8{1} } +f,} {} #y rSub { size 8{2} } = ital "dY" rSub { size 8{2} } +f, {} } } {}

odakle se dobijaju koeficijenti window-to-viewport transformacije

a = x 2 x 1 X 2 X 1 , e = x 1 aX 1 = x 1 X 2 X 1 x 2 X 2 X 1 size 12{a= { {x rSub { size 8{2} } - x rSub { size 8{1} } } over {X rSub { size 8{2} } - X rSub { size 8{1} } } } ,``e=x rSub { size 8{1} } - ital "aX" rSub { size 8{1} } = { {x rSub { size 8{1} } X rSub { size 8{2} } - X rSub { size 8{1} } x rSub { size 8{2} } } over {X rSub { size 8{2} } - X rSub { size 8{1} } } } } {}

d = y 2 y 1 Y 2 Y 1 , f = y 1 dY 1 = y 1 Y 2 Y 1 y 2 Y 2 Y 1 . size 12{d= { {y rSub { size 8{2} } - y rSub { size 8{1} } } over {Y rSub { size 8{2} } - Y rSub { size 8{1} } } } ,``f=y rSub { size 8{1} } - ital "dY" rSub { size 8{1} } = { {y rSub { size 8{1} } Y rSub { size 8{2} } - Y rSub { size 8{1} } y rSub { size 8{2} } } over {Y rSub { size 8{2} } - Y rSub { size 8{1} } } } "." } {}

Primetimo da se transformacija (1) može napisati u matričnom obliku

(3) x y = a 0 0 d X Y + e f , size 12{ left ( matrix { x {} ##y } right )= left ( matrix {a {} # 0 {} ## 0 {} # d{}} right )` left ( matrix { X {} ##Y } right )+ left ( matrix {e {} ## f} right ),} {}

tako da se inverzna transformacija moze izračunati primenom inverzne matrice

X Y = a 0 0 d 1 x y e f , size 12{ left ( matrix { X {} ##Y } right )= left ( matrix {a {} # 0 {} ## 0 {} # d{}} right ) rSup { size 8{ - 1} } left lbrace left ( matrix { x {} ##y } right ) - left ( matrix {e {} ## f} right ) right rbrace ,} {}

tj.

X Y = 1 / a 0 0 1 / d x e y f . size 12{ left ( matrix { X {} ##Y } right )= left ( matrix {1/a {} # 0 {} ## 0 {} # 1/d{}} right )` left ( matrix { x - e {} ##y - f } right ) "." } {}

{}

Tako se najzad dobija

X = ( x e ) / a , Y = ( y f ) / d , size 12{X= \( x - e \) /a,~Y= \( y - f \) /d,} {} ili

X = X 2 X 1 x 2 x 1 x x 1 X 2 x 2 X 1 x 2 x 1 , Y = Y 2 Y 1 y 2 y 1 y y 1 Y 2 y 2 Y 1 y 2 y 1 . size 12{X= { {X rSub { size 8{2} } - X rSub { size 8{1} } } over {x rSub { size 8{2} } - x rSub { size 8{1} } } } x - { {x rSub { size 8{1} } X rSub { size 8{2} } - x rSub { size 8{2} } X rSub { size 8{1} } } over {x rSub { size 8{2} } - x rSub { size 8{1} } } } ,~Y= { {Y rSub { size 8{2} } - Y rSub { size 8{1} } } over {y rSub { size 8{2} } - y rSub { size 8{1} } } } y - { {y rSub { size 8{1} } Y rSub { size 8{2} } - y rSub { size 8{2} } Y rSub { size 8{1} } } over {y rSub { size 8{2} } - y rSub { size 8{1} } } } "." } {}

Direktna i inverzna transformacija prikazane su na Slici 3.

Naravno, a size 12{a} {} i d size 12{d} {} moraju biti različiti od 0 inače bi transformacija (1) bila loše definisana. Uslovi a 0, d 0 size 12{a<>0,d<>0} {} se zovu uslovi regularnosti , i pod tim uslovima transformacija (1) tj. (3) je regularna .

U slučaju da bilo a size 12{a} {} ili d size 12{d} {} ili pak istovremeno a size 12{a} {} i d size 12{d} {} budu = 0, transformacija je degenerisana . Degenerisana transformacija u ovom slučaju znači da slika pravougaonika P nije pravougaonik većgeometrijski objekat niže dimenzionalnosti. Tako, ako je a = 0, d 0, size 12{a=0,d<>0,} {} slika degeneriše u dužkoja se poklapa sa levom vertikalnom stranicom pravougaonika p. Ako je a 0, d = 0, size 12{a<>0,d=0,} {} pravougaonik P se preslikava u donju osnovu (dakle opet u duž), dok se u slučaju a = 0, d = 0, pravougaonik P preslikava u tačku ( e , f ) , size 12{ \( e,f \) ,} {} koja je u regularnom slučaju donje levo teme vjuporta p. Sva tri slučaja degenerisane transformacije prikazana su na Slici 4.

Sl. 4. Degenerisani slučajevi“window-to-viewport”transformacije

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Geometrijsko modeliranje. OpenStax CNX. Nov 06, 2007 Download for free at http://cnx.org/content/col10478/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Geometrijsko modeliranje' conversation and receive update notifications?

Ask