TEORIE K M2A+ULA
ROVINNÉ PŘETVOŘENÍ
Rovinné přetvoření Rovinné přetvoření, neboli, jak se také často nazývá, geometrická transformace je vlastně lineární zobrazení v prostoru s nějakou soustavou souřadnic. Jde v něm o přepočet souřadnic v rámci tohoto zobrazení. Budeme se zabývat jen situací ve 2D. Zde lze najít několik základních typů rovinného přetvoření, při kterých se úsečka zobrazuje na úsečku: Posunutí (translace) Otáčení (rotace) Změna měřítka (scale, zoom) Zkosení (shear) Souměrnost Každé obecné rovinné přetvoření lze převést na kombinaci těchto uvedených.
Posunutí (translace) Posunutí je určeno vektorem posunutí = ( , ). Pozor, u obou složek vektoru nejde o mocninu, ale o vyjádření toho, že jde o složku vektoru p. Bod = ( , ) se zobrazí na bod = ( , ) takto: = + = + = + Posunutí nelze v kartézské soustavě reprezentovat maticově. Důvodem je, že hodnoty složek vektoru posunutí se pouze přičítají bez násobení hodnotou jakékoli jiné souřadnice. Lze to však udělat v homogenních souřadnicích, kdy zavádíme navíc jednu doplňkovou dimenzi, která je použita jako pracovní a obvykle vyjadřuje rovnici 1 = 1. Pak lze psát: = ( , , 1), = ( , , 1) 1 0 = 0 1 1 0 0 1 1 Totéž lze vyjádřit i řádkově 1 0 0 1) 0 1 0 ( 1) = ( 1 A ještě jednou totéž v maticovém tvaru se zavedením matice soustavy 1 0 ( , )= 0 1 ( ) = ( , ) , 0 0 1
∀ ∃
1
TEORIE K M2A+ULA
ROVINNÉ PŘETVOŘENÍ
Otáčení (rotace) Otáčení kolem počátku Otáčení bodu kolem počátku je určeno orientovaným úhlem otočení . Bod = ( , ) se zobrazí na bod = ( , ) takto (odvození těchto vzorců je uvedeno na konci tohoto textu): = cos − sin = sin + cos To lze vyjádřit maticově cos −sin = sin cos Matice soustavy je cos −sin ( )= sin cos Celé zobrazení v maticovém tvaru ( ) = ( )
Otáčení kolem obecného bodu Otáčení kolem obecného bodu = ( , ) o orientovaný úhel otočení se provádí rozkladem na elementární transformace. Při tom je důležité zachovat správné pořadí skládání: 1. Celý transformovaný objekt posuneme tak, aby bod byl v počátku soustavy 2. Otočíme objekt o úhel 3. Posuneme zpětně celý transformovaný objekt tak, aby bod byl na původním místě Vzhledem k tomu, že pro posunutí jsme museli zavést doplňkovou dimenzi, rozšíříme výše uvedenou matici ( ) o tuto doplňkovou dimenzi také, abychom mohli celou akci vyjádřit maticově v homogenních souřadnicích. Bude tedy = ( , , 1), = ( , , 1) 1
cos = sin 0
cos ( ) = sin 0
−sin cos 0
−sin cos 0
( ) = ( )
Celé otočení kolem obecného bodu = ( , ( , , )= ( Celý postup dokumentuje série obrázků ∀ ∃
0 0 1
0 0 1
1
) můžeme nyní vyjádřit takto , ) ∙ ( ) ∙ (− , − ) 2
TEORIE K M2A+ULA
ROVINNÉ PŘETVOŘENÍ
Změna měřítka (scale, zoom) Změna měřítka je změna velikosti objektu ve směru souřadnicových os. Bod = ( , ) se zobrazí na bod = ( , ) takto: = = Zde je koeficient změny měřítka ve směru osy a je koeficient změny měřítka ve směru osy . To můžeme maticově vyjádřit takto: 0 = 0 Matice soustavy je 0 , = 0 Celé zobrazení v maticovém tvaru ( ) = ,
Potřebujeme-li vyjádřit totéž v homogenních souřadnicích s přidanou doplňkovou dimenzí, pak = ( , , 1), = ( , , 1) =
1 ,
0 0 =
( ) =
∀ ∃
0
0 0 1
0 0 0
0 ,
0
1
0 0 1
3
TEORIE K M2A+ULA
ROVINNÉ PŘETVOŘENÍ
Zkosení (shear) Změna měřítka je změna velikosti objektu ve směru souřadnicových os. Bod = ( , ) se zobrazí na bod = ( , ) takto: = + ℎ = + ℎ Zde ℎ je koeficient míry zkosení ve směru osy a ℎ je koeficient míry zkosení ve směru osy . To můžeme maticově vyjádřit takto: 1 ℎ = ℎ 1 Matice soustavy je 1 ℎ ℎ , = ℎ 1 Celé zobrazení v maticovém tvaru ( ) = ℎ ℎ , ℎ Potřebujeme-li vyjádřit totéž v homogenních souřadnicích s přidanou doplňkovou dimenzí, pak = ( , , 1), = ( , , 1) 1
1 ℎ 0
=
ℎ ℎ , ℎ
Souměrnost
=
ℎ 1 0
1 ℎ 0
( ) = ℎ ℎ ,
0 0 1
ℎ 1 0
1
0 0 1
Souměrnost je zvláštní případ změny měřítka (absolutní hodnota koeficientů je rovna jedné) v důsledku spojená se změnou znamének některých souřadnic. Středová souměrnost Jde o souměrnost podle počátku. Zde = −1, = −1 Bod = ( , ) se zobrazí na bod = ( , ) takto: = =− = =− Zde je koeficient změny měřítka ve směru osy a je koeficient změny měřítka ve směru osy . To můžeme maticově vyjádřit takto: = ∀ ∃
−1 0 0 −1
4
TEORIE K M2A+ULA
ROVINNÉ PŘETVOŘENÍ
Matice soustavy je =
Celé zobrazení v maticovém tvaru
−1 0 0 −1
( ) = Potřebujeme-li vyjádřit totéž v homogenních souřadnicích s přidanou doplňkovou dimenzí, pak = ( , , 1), = ( , , 1) =
1
=
−1 0 0 0 −1 0 0 0 1
−1 0 0 0 −1 0 0 0 1
( ) =
1
,
Souměrnost podle osy Jde o souměrnost podle osy. V tomto konkrétním případě = 1, = −1 Bod = ( , ) se zobrazí na bod = ( , ) takto: = = = =− Zde je koeficient změny měřítka ve směru osy a je koeficient změny měřítka ve směru osy . To můžeme maticově vyjádřit takto: =
Matice soustavy je
=
Celé zobrazení v maticovém tvaru
1 0 0 −1 1 0
0 −1
( ) = Potřebujeme-li vyjádřit totéž v homogenních souřadnicích s přidanou doplňkovou dimenzí, pak = ( , , 1), = ( , , 1) 1
1 = 0 0
1 = 0 0
0 0 −1 0 0 1
( ) = ∀ ∃
0 0 −1 0 0 1
1
5
TEORIE K M2A+ULA
ROVINNÉ PŘETVOŘENÍ
Souměrnost podle osy Jde o souměrnost podle osy. V tomto konkrétním případě = −1, =1 Bod = ( , ) se zobrazí na bod = ( , ) takto: = = = =− Zde je koeficient změny měřítka ve směru osy a je koeficient změny měřítka ve směru osy . To můžeme maticově vyjádřit takto: =
Matice soustavy je
=
Celé zobrazení v maticovém tvaru
−1 0 0 1
−1 0 0 1
( ) = Potřebujeme-li vyjádřit totéž v homogenních souřadnicích s přidanou doplňkovou dimenzí, pak = ( , , 1), = ( , , 1) 1
−1 0 = 0 1 0 0 =
Odvození vzorce pro otáčení
−1 0 0 1 0 0
( ) =
0 0 1
0 0 1
1
Chceme odvodit vztahy pro otáčení kolem počátku. = cos − sin = sin + cos Odvození je snadné při převedení na duální úlohu. Bod ponecháme na svém místě a otočíme souřadné osy proti směru úhlu otáčení (původní souřadný systém je vyznačen se šikmými osami, systém po otočení má osy rovnoběžné se stranami papíru). Dostaneme situaci na obrázku. Oranžovo bledě modrý obdélník je pravoúhlý se stranami a . U něj jsou vyznačeny shodné úhly . Z vlastností funkcí sinus a cosinus jsou odvozeny velikosti modrých a červených úseček. Pomocí odčítání a sčítání již přímo dostáváme hodnoty souřadnic po otočení.
∀ ∃
6