Skip to content Skip to navigation

OpenStax-CNX

You are here: Home » Content » Transformacija pogleda

Navigation

Recently Viewed

This feature requires Javascript to be enabled.
 

Transformacija pogleda

Module by: Ljubiša Kocić. E-mail the author

Summary: 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.

Table 1
graphics1.jpg
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 xx size 12{x - {}} {}koordinatu, dok leva, vertikalna stranica predstavlja ekransku yy size 12{y - {}} {}koordinatu (Slika 2, desno).

Table 2
graphics2.jpg
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 XX size 12{X} {}i YY size 12{Y} {}. Koordinatni sistem (X,Y)(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)(X,Y) size 12{ \( X,Y \) } {} i ekranskih koordinata (x,y)(x,y) size 12{ \( x,y \) } {} dat linearnom vezom

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

pri čemu su a,e,d,fa,e,d,f size 12{a,e,d,f} {} realne konstante i pritom je a0,d0.a0,d0. 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 (X1,Y1)(X1,Y1) size 12{ \( X rSub { size 8{1} } ,Y rSub { size 8{1} } \) } {} i (X2,Y2)(X2,Y2) size 12{ \( X rSub { size 8{2} } ,Y rSub { size 8{2} } \) } {}, pri čemu, neka je X1<X2X1<X2 size 12{X rSub { size 8{1} } <X rSub { size 8{2} } } {} i Y1<Y2Y1<Y2 size 12{Y rSub { size 8{1} } <Y rSub { size 8{2} } } {} , što u stvari znači da je (X1,Y1)(X1,Y1) size 12{ \( X rSub { size 8{1} } ,Y rSub { size 8{1} } \) } {} njegovo donje levo, a (X2,Y2)(X2,Y2) 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 (x1,y1)(x1,y1) size 12{ \( x rSub { size 8{1} } ,y rSub { size 8{1} } \) } {} i (x2,y2)(x2,y2) size 12{ \( x rSub { size 8{2} } ,y rSub { size 8{2} } \) } {}, mogućne su dve situacije.

Table 3
graphics3.png
Sl. 3. Direktna i inverzna “window-to-viewport” transformacija
  1. Poznata je transformacija (1), tj. konstante a,e,d,fa,e,d,f size 12{a,e,d,f} {} i jedan od dva pravougaonika (window ili viewport). Tada iz (1) izračunavamo drugi.
  2. Poznati su window P={(X1,Y1),(X2,Y2)}P={(X1,Y1),(X2,Y2)} 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={(x1,y1),(x2,y2)}p={(x1,y1),(x2,y2)} 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) x1=aX1+e,x2=aX2+e,x1=aX1+e,x2=aX2+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. y1=dY1+f,y2=dY2+f,y1=dY1+f,y2=dY2+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 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 . 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) xy=a00dXY+ef,xy=a00dXY+ef, 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 , 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 . 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=(xe)/a,Y=(yf)/d,X=(xe)/a,Y=(yf)/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 . 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, aa size 12{a} {} i dd size 12{d} {} moraju biti različiti od 0 inače bi transformacija (1) bila loše definisana. Uslovi a0,d0a0,d0 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 aa size 12{a} {} ili dd size 12{d} {} ili pak istovremeno aa size 12{a} {} i dd 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,d0,a=0,d0, size 12{a=0,d <> 0,} {} slika degeneriše u duž koja se poklapa sa levom vertikalnom stranicom pravougaonika p. Ako je a0,d=0,a0,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),(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.

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

Content actions

Download module as:

Add module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks