Lineární transformace 1995-2015 Josef Pelikán CGG MFF UK Praha pepca@cgg.mff.cuni.c http://cgg.mff.cuni.c/~pepca/ 1 / 28
Požadavk běžně používané transformace posunutí, otočení, většení/menšení, kosení,.. rovnoběžná i perspektivní projekce snadná a efektivní implementace výpočt se provádějí masově (běžně i 10 8 transformací najednou) vláštní úkon řetěení jednoduchých transformací, výpočet inverní transformace,... 2 / 28
Posunutí v rovině [d,d ] d d 3 / 28
Maticové transformace násobení vektoru souřadnic maticí prava kartéské souřadnice bodu [,] tvoří řádkový vektor transformační matice je čtvercová (v rovině má roměr 2 2) t11 t12 t t 21 22 4 / 28
Otočení v rovině kolem počátku R( ) cos sin sin cos 5 / 28
Zmenšení / většení v rovině s s s S( s, s ) 0 0 s 6 / 28
Zkosení v rovině b a Sh( a, b) 1 b a 1 7 / 28
Homogenní souřadnice jednotná repreentace afinních transformací transformace achovávající rovnoběžnost posunutí nele v kartéských souřadnicích repreentovat maticově nejpoužívanější neafinní transformace perspektivní transformace (projekce) repreentace složených transformací násobení matic (asociativita) 8 / 28
Algebraická motivace Přímka v rovině má souřadnice [a,b,c] (mnohonačné): a + b + c = 0, bod v rovině má souřadnice [,] (jednonačné). Úloha 1: hledání přímk [a,b,c] procháející dvěma danými bod [ 1, 1 ] a [ 2, 2 ]: a 1 + b 1 + c = 0 a 2 + b 2 + c = 0 soustava (1) 9 / 28
Algebraická motivace II Úloha 2: hledání bodu [,], ve kterém se protnou dvě dané přímk [a 1,b 1,c 1 ] a [a 2,b 2,c 2 ]: a 1 + b 1 + c 1 = 0 a 2 + b 2 + c 2 = 0 soustava (2) Soustava (1) má vžd (nekonečně mnoho) řešení, soustava (2) má řešení jen pokud není a 1 b 2 = a 2 b 1 10 / 28
Algebraická motivace Po roříření rovin o nevlastní bod a avedení homogenních souřadnic [,,w] budou obě předchoí úloh smetrické a soustava (2 ) bude vžd řešitelná: a 1 + b 1 + c w 1 = 0 a 2 + b 2 + c w 2 = 0 a 1 + b 1 + c 1 w = 0 a 2 + b 2 + c 2 w = 0 soustava (1 ) soustava (2 ) 11 / 28
Převod souřadnic Kartéské na homogenní: 1 Homogenní na kartéské (jen vlastní bod): w w 0 w w 12 / 28
Geometrická představa [uw,vw,w] w [,,w] [u,v,1] 1 [/w,/w,1] O rovina kartéských souřadnic (w = 1) 13 / 28
Homogenní transformační matice Posunutí ( translation ) T( t, t ) 1 0 0 0 1 0 t t 1 Otočení ( rotation ) kolem počátku R( ) cos sin 0 sin cos 0 0 0 1 Zmenšení / většení ( scale ) S( s, s ) s 0 0 0 s 0 0 0 1 14 / 28
Homogenní transformační matice II Zkosení ( shear ) a Sh( a, b) 1 0 1 0 b 0 0 1 Složené transformace: [,, w] T T T [,, w] T T T 1 2 3 1 2 3 Otočení o úhel kolem bodu [,]: R(,, ) T(, ) R( ) T(, ) 15 / 28
Transformace v průmětně souřadné sstém na výstupu Převod reálných souřadnic do souřadnic obraovaného okna: X int = round ( D + S * X f ) Y int = round ( D + S * Y f ) 16 / 28
Prostorové souřadnice levotočivý sstém ( right-handed ) pravotočivý sstém ( left-handed ) 17 / 28
Homogenní souřadnice 1 w w w w ( w 0) Maticová transformace: w w t t t t t t t t t t t t t t t t 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 18 / 28
Homogenní transformační matice Posunutí T( t, t, t ) 1 0 0 0 0 1 0 0 0 0 1 0 t t t 1 Zkosení Sh( a, b, c, d, e, f) 1 a b 0 c 1 d 0 e f 1 0 0 0 0 1 19 / 28
Homogenní transformační matice II Otočení kolem os R ( ) cos 0 sin 0 0 1 0 0 sin 0 cos 0 0 0 0 1 Otočení kolem os R ( ) cos sin 0 0 sin cos 0 0 0 0 1 0 0 0 0 1 20 / 28
Přenos polopřímk do os O s A M T( A) M Polopřímka je adána bodem A a směrovým vektorem s 1 T( A) 1. krok: přenesení bodu A do počátku 21 / 28
Přenos polopřímk do os s M T( A) R ( ) 1 M R ( ) T( A) 2. krok: otočení polopřímk do rovin (okolo os ) cos sin s s s s 2 2 s 2 2 s 22 / 28
Přenos polopřímk do os s M T( A) R ( ) R ( ) 1 M R ( ) R ( ) T( A) 3. krok: otočení polopřímk do os (okolo os ) cos sin s 2 2 2 s s s s 2 2 s 2 2 2 s s s 23 / 28
Aplikace transformace M M( A, s) T( A) R ( ) R ( ) 1 M( A, s) R ( ) R ( ) T( A) Otočení kolem dané os: R( A, s, ) M( A, s) R ( ) M( A, s) Zrcadlové převrácení podle dané rovin: Mirror( A, n) M( A, n) S( 11,, 1) M( A, n) 1 1 24 / 28
Výpočet inverní transformace 1. invere matice: M 1 2. po krocích: M A B C 1 T 1 1 1 1 M C B A 3. transpoice (ortonormální matice): R R pro ortonormální matici R (ortonormální jsou např. všechn rotační matice) 25 / 28
Převod mei souřadnými sstém O A u t s Souřadný sstém je adán svým počátkem A a trojicí vektorů s, t, u Cs M( A, u) Cs 1 1 M( A, u) 1. krok: přenesení polopřímk (A,u) do os 26 / 28
Převod mei souřadnými sstém t u s Cs( A, s, t, u) M( A, u) R ( ) 1 1 Cs( A, s, t, u) R ( ) M( A, u) cos sin 2. krok: totožnění os s a t (otočením kolem =u ) s M( A, u) s M( A, u) s M( A, u) s M( A, u) 27 / 28
Konec Další informace: J. Fole, A. van Dam, S. Feiner, J. Hughes: Computer Graphics, Principles and Practice, 201-227 Jiří Žára a kol.: Počítačová grafika, princip a algoritm, 73-84 28 / 28