Geometrické Geometrické transformácie a transformácie a premietanie premietanie
Jan 03, 2016
Geometrické transformácie a Geometrické transformácie a premietaniepremietanie
2D transformácie2D transformácie 1. Posunutie
2. Otočenie
2D transformácie2D transformácie 3. Škálovanie
4. Osová súmernosť (preklopenie)
2D transformácie2D transformácie 5. SkosenieSkosenie objektu si môžeme predstaviť tak, že jednu stranu objektu zafixujemea objekt potom „ťaháme” v smere, ktorý je so zafixovanou stranou rovnobežný.
2D transformácie 2D transformácie
1. Posunutie
Teraz si ukážeme, ako matematicky zapíšeme transformáciu jednéhobodu. Celý objekt transformujeme tak, že rovnako transformujeme každý jeho bod
(x,y) p=(px,py)
(x’,y’)
Posunutie matematicky zapíšeme jednoducho pripočítaním súradníc vektoraposunutia p k pôvodným súradniciam bodu:
x’=x+px
y’=y+py
2D transformácie2D transformácie 2. Otočenie
(x,y)
(x’,y’)
S=(Sx,Sy)
Otočenie okolo bodu (0,0) o uhol v proti smeru hodinových ručičiek:x’=x.cos - y.siny’=x.sin + y.cosOtočenie okolo bodu (0,0) o uhol v smere hodinových ručičiek:x’=x.cos + y.siny’=-x.sin + y.cosOtočenie okolo ľubovoľného bodu S=(Sx,Sy) o uhol :x’=(x-Sx).cos ± (y-Sy).sin + Sx
y’= (x-Sx).sin + (y-Sy).cos + Sy
±
xx’
y’
y
rx=r.cosy=r.sinx’=r.cos(+) =r.cos.cos-r.sin.siny’=r.sin(+) =r.sin.cos+r.cos.sin
22D transformácieD transformácie 3. Škálovanie
(x,y)
(x’,y’)
(x’,y’)
(x,y)
Pri škálovaní jednoducho vynásobíme súradnice x a y príslušnými koeficientami:x’=dx.xy’=dy.yKoeficienty dx a dy môžu byť aj záporné, vtedy bude výsledok navyše otočený alebo preklopený:
(x,y)(x’,y’)
dx<0
2D transformácie2D transformácie 4. Osová súmernosť (preklopenie)
(x’,y’)=(x,y)-2d.n(ak (x,y) leží v polrovine aX+bY+c0)
P=(x,y)-d.n (priemet (x,y) na priamku)aPx+bPy+c=0Px=x-da, Py=y-dba(x-da)+b(y-db)+c=0
aX+bY+c=0(x,y)
(x’,y’)
n=(a,b)
d
P=(Px,Py)
22 ba
cbyaxd
Vzorec pre preklopenie dostaneme posunutím bodu o vhodnú dlžku (-2d)v smere normály na os:
222'
ba
cbyaxaxx
222'
ba
cbyaxbyy
2D transformácie2D transformácie 5. Skosenie
(x3,y3)
(x2,y2)
(x1,y1)=(x1’,y1’)
(x3’,y3
’)(x2’,y2
’) (x1,y1)=(x1’,y1’)(x2,y2)(x3,y3)
(x3’,y3
’) (x2’,y2
’)
Pri skosení sa bod posunie v smere súradnicovej osi. Dĺžka posunutia závisí odvzdialenosti bodu od tejto osi.Skosenie v smere osi x:x’=x+dyy’=ySkosenie v smere osi y:x’=xy’=y+dx
3D3D transformácie transformácie 1. PosunutiePosunutie v 3D je analogické posunutiu v 2D:x’=x+px
y’=y+py
z’=z+pz 2. ŠkálovanieTakisto škálovanie je jednoduchým rozšírením 2D škálovania:x’=dx.xy’=dy.yz’=dz.z 3. Súmernosť podľa roviny aX+bY+cZ+d=0
2222'
cba
dczbyaxaxx
2222'
cba
dczbyaxbyy
2222'
cba
dczbyaxczz
3D transformácie3D transformácie 4. OtočenieV 3D môžeme bod alebo objekt otáčať okolo troch súradnicových osí a to vždy v smere alebo proti smeru hodinových ručičiek. Celkové otočenie potomdostaneme zložením týchto jednoduchších otočení.
Otáčanieproti smeru hodinových ručičiek
v smere hodinových ručičiek
okolo osi x
x’=x
y’=y.cos - z.sinz’=y.sin + z.cos
x’=x
y’=y.cos + z.sinz’=-y.sin + z.cos
okolo osi y
x’=x.cos - z.sin y’=y
z’=x.sin + z.cos
x’=x.cos + z.sin y’=y
z’=-x.sin + z.cos
okolo osi z
x’=x.cos - y.siny’=x.sin + y.cosz’=z
x’=x.cos + y.siny’=-x.sin + y.cosz’=z
3D transformácie3D transformácie 5. Skosenie
Skosenie v smere xy:x’=x+dxzy’=y+dyzz’=z
Skosenie v smere xz:x’=x+dxyy’=yz’=z+dzy
Skosenie v smere yz:x’=xy’=y+dyxz’=z+dzx
PremietaniePremietanie Premietanie je transformácia z n-rozmerného priestoru do m-rozmerného,kde m<n. V počítačovej grafike sa väčšinou jedná o premietanie z 3D do 2D
Na premietanie potrebujeme premietaciu plochu (priemetňu) a premietací lúč. Priemetňa je plocha, na ktorej chceme objekt zobraziť. Aj keď to býva najčastejšie rovina, vo všeobecnosti to môže byť plocha ľubovoľného tvaru. Premietací lúč je priamka, ktorá prechádza cez premietaný bod. Priemetbodu vznikne tým, že sa premietací lúč pretne s priemetňou.
premietacielúče
priemetňapriemety
PremietaniePremietanie
Rovnobežné premietanieRovnobežné premietanie Rovnobežné premietanie sa vyznačuje tým, že všetky premietacie lúče sú rovnobežné. Podľa toho, aký uhol zvierajú premietacie lúče s priemetňou, rozlišujemepravouhlé a kosouhlé premietanie. V počítačovej grafike sa takmer vždypoužíva pravouhlé premietanie.
pravouhlé premietanie kosouhlé premietanie
Rovnobežné premietanieRovnobežné premietanie Rovnobežné premietanie zachováva rovnobežnosť Veľkosť priemetu nezávisí od vzdialenosti premietaného objektu od priemetne Rovnobežné premietanie sa používa najmä v technických aplikáciách, kde jezachovanie rovnobežnosti výhodou
Rovnobežné pravouhlé premietanie do roviny xy sa matematicky vyjadrí takto: x’=x
y’=y z’=0
Rovnobežné pravouhlé premietanie do ľubovoľnej roviny:
222'
cba
dczbyaxaxx
222'
cba
dczbyaxbyy
222'
cba
dczbyaxczz
Perspektívne premietaniePerspektívne premietanie Pri perspektívnom (stredovom) premietaní vychádzajú všetky premietacie lúče z jedného bodu. Tento bod sa nazýva stred premietania. Pri tomto premietaní sa vo všeobecnosti nezachováva rovnobežnosť, pôvodnerovnobežné úšečky sa môžu zbiehať. Objekty, ktoré sú od stredu vzdialenejšie, budú po premietnutí menšie. Táto projekcia sa používa najmä v architektúre a všade, kde je potrebnérealistické zobrazenie, pretože vytvára obrazy podobné tým, ktoré vidí ľudské oko.
Perspektívne premietaniePerspektívne premietanie Podľa polohy priemetne vzhľadom na súradnicové osi rozlišujeme tri typyperspektívneho premietania:
Jednobodová perspektíva vzniká, ak priemetňa pretína len jednu súradnicovú os Pri dvojbodovej perspektíve priemetňa pretína dve súradnicové osi Pri trojbodovej perspektíve pretína priemetňa všetky tri súradnicové osi
Ak si predstavíme kváder, ktorý má steny rovnobežné so súradnicovými osami,tak v prípade jednobodovej perspektívy sa všetky zbiehajúce sa rovnobežky v ňom budú zbiehať do jedného bodu – úbežníka. Pri dvojbodovej perspektíve máme dva úbežníky a pri trojbodovej tri.
PerspektPerspektíívne premietanievne premietanie Teraz si odvodíme vzorec pre perspektívne premietanie na všeobecnúrovinu aX+bY+cZ+d=0.
Nech stred premietania má súradnice (Sx,Sy,Sz) a premietaný bod je (x,y,z)
(Sx,Sy,Sz)
(x,y,z)(x’,y’,z’)
L
Premietací lúč L má parametrické vyjadrenie:L=( x+(x-Sx)t, y+(y-Sy)t, z+(z-Sz)t )
Priemet má ležať v danej rovine a zároveň na priamke L, dosadením parametrického vyjadrenia do rovnice roviny dostaneme t:
)()()( zScySbxSa
dczbyaxt
zyx
PerspektPerspektívne premietanieívne premietanie Dosadením vypočítaného parametra t do parametrického vyjadrenia Ldostaneme vzorec pre perspektívnu projekciu:
)()()()('
zScySbxSa
dczbyaxSxxx
zyxx
)()()()('
zScySbxSa
dczbyaxSyyy
zyxy
)()()()('
zScySbxSa
dczbyaxSzzz
zyxz
Špeciálny a v počítačovej grafike najčastejšie používaný prípad je projekcia do roviny xy (z=0), kde stred premietania má súradnice (0,0,Sz), resp. projekcia do roviny z=dz so stredom (0,0,0):
)/(' zSxSx zz
)/(' zSySy zz
0'z
zxdx z /'
zydy z /'
zdz '
Pohľadová transformáciaPohľadová transformácia Ak chceme zobraziť nejakú scénu, musíme mať daných niekoľko údajov:
Súradnice všetkých objektov v scéne Pozíciu pozorovateľa (v počítačovej grafike sa používa namiesto pozorovateľa pojem kamera). Priemetňu, teda rovinu, do ktorej premietame Orientáciu (natočenie) kamery
Pozíciu kamery zadáme jednoducho súradnicami bodu, kde sa kameranachádza. Priemetňu zadáme bodom, cez ktorý prechádza a ďalej máme dve možnosti:
Zadáme normálový vektor Zadáme dvojicu uhlov pre rotáciu zo základnej polohy (0,0,nz) - tzv. zenit a azimut
zenit určuje otočenie v rovine yz vzhľadom na os z a má rozsah 0-180° azimut určuje otočenie v rovine xy vzhľadom na os x a má rozsah 0-360° Nakoniec zadáme otočenie kamery v rovine
rovnobežnej s priemetňou
y
x
z
azimut
zenit
PohPohľľadovadová transformáciaá transformácia Takéto nastavenie pohľadu si môžeme predstaviť ako fotografovanie:
najprv sa s fotoaparátom postavíme na určité miesto môžeme sa poobzerať dookola a nájsť najlepší pohľad (azimut) vyberieme si, či sa na scénu budeme pozerať rovno (zenit=90°), zhora (zenit=0°) alebo zdola (zenit=180°) nakoniec môžeme s fotoaparátom ešte otáčať (na šírku, na výšku, šikmo)
Pohľadová transformáciaPohľadová transformácia Objekty v scéne, pozícia kamery a priemetne sú vyjadrené v súradniciach,ktoré nazývame svetové. Svetové súradnice sú teda klasický súradnicový systém, ktorý si zvolí užívateľ a v ktorom prebieha modelovanie scény. Na premietanie je však vhodnejší iný súradnicový systém. Premietacia transformácia je najjednoduchšia, ak je priemetňou rovina xy, resp. rovinas ňou rovnobežná a stred má tvar (0,0,Sz) resp. (0,0,0). Zaveďme teda nový súradnicový systém, kde stred premietania bude počiatkom súradnicovej sústavy a osi budú dané normálovým vektorom priemetne a vektorom orientácie kamery. Takýto systém nazývame pohľadové súradnice.
http://www.cs.nps.navy.mil/people/faculty/capps/iap/class2/viewing/viewing.html
Pohľadová transformáciaPohľadová transformácia Pohľadová transformácia je transformácia zo svetových do pohľadových súradníc. Pred premietnutím teda urobíme pohľadovú tranformáciu a až potom príde na rad samotné premietanie.
Postup pri pohľadovej transformácii je nasledujúci: Posunutie, ktoré presunie pozíciu kamery do počiatku súradnicovej sústavy. Rotácia, ktorá otočí súradnicový systém tak, aby normálový vektor priemetne mal súradnice (0,0,nz), resp.
Otočenie okolo osi z o azimut v zápornom smere Otočenie okolo osi x o zenit v zápornom smere
Otočenie okolo osi z (v zápornom smere) o uhol, ktorý zodpovedá orientácii kamery.
Pri rovnobežnom premietaní postupujeme rovnako, tiež máme danú pozíciu kamery, aj keď premietacie lúče nevychádzajú z nej.
Pohľadový objemPohľadový objem Pri zobrazovaní scény nezobrazujeme všetky objekty, ktoré sa v scéne nachádzajú, ale len tie objekty alebo časti objektov, ktoré sú viditeľné a prepozorovateľa zaujímavé. Celú scénu teda orežeme tzv. pohľadovým objemom Pri stredovom premietaní má pohľadový objem tvar zrezaného ihlana. Hranice ihlana tvorí:
1. Zorný uhol – obyčajne 40°-60°. Bude to uhol pri vrchole ihlana. 2. Rovina „far” – táto rovina odstraňuje objekty, ktoré sú od kamerypríliš vzdialené. 3. Rovina „near” – touto rovinou môžeme odstrániť objekty, ktoré súpríliš blízko a bránia vo výhľade.
far
nearstred
Pohľadový objemPohľadový objem Pri rovnobežnom premietaní má pohľadový objem tvar kvádra. Jeho hranice tvorí:
Zorné pole Rovina far Rovina near
near
farkamera
Premietnutie scényPremietnutie scény
Celý proces zobrazenia scény pozostáva teda z týchto častí:
Pohľadová transformácia (transformácia do premietacej polohy)
Orezanie pohľadovým objemom
Premietnutie na priemetňu
Uvedený postup , najmä čo sa týka definície azimutu a zenitu, sa môže v rôznej literatúre a v rôznych softvéroch líšiť. Princíp však zostáva zachovaný.