7 Transformace 2D Studijní cíl Tento blok je věnován základním principům transformací v rovinné grafice. V následujícím textu bude vysvětlen rozdíl v přístupu k transformacím u vektorového a rastrového obrazu. Dále budou popsány základní transformace posunutí, otočení, zkosení a změna měřítka, používané při zpracování především 2D vektorového obrazu. Jednotlivé transformace budou představeny pomocí explicitních vztahů i pomocí maticového vyjádření. Rovněž bude objasněna problematika složených transformací. Doba nutná k nastudování 3-4 hodiny Průvodce studiem Při studiu tohoto bloku se předpokládá, že student je seznámen se základy maticového počtu, zná základní postupy pro násobení matic, ovládá pojmy inverzní matice,. 7. Transformace objektů obecně Při zpracování grafických objektů je zapotřebí velmi často jednotlivé grafické objekty, případně i celý obraz, který je z jednotlivých objektů složen, určitým způsobem modifikovat. Týká se to především změny polohy objektů, jejich natočení vzhledem k jejich aktuální poloze, zvětšení či zmenšení vybraných částí obrazu, případně další lineární nebo i nelineární deformace. Obecně všechny tyto úpravy lze definovat jako transformace Transformace obecně je proces, při kterém dochází ke změně polohy, orientace nebo velikosti jednotlivých zobrazovaných objektů (geometrie objektů). Základní transformace lze rozdělit do následujících kategorií Transformace souřadnicového systému Projekce (v 3D) Lineární transformace KST/IPOGR - Petr Veselý
Pro provádění transformací souřadnicového systému existují v každém grafickém systému specializované funkce, jejichž aplikováním se změní veškerý následující grafický výstup, který je na příslušné zařízení dále zasílán. Projekce je specifickou transformací, která nemá v 2D grafice význam a podrobně vysvětlena bude v bloku, který se bude věnovat 3D grafice. V tomto textu bude pozornost zaměřena výhradně na lineární 2D transformace. Pro lineární transformace je charakteristická platnost následujících vztahů: Lineární transformace: T(v+w) = T(v) + T(w) T( v) = T(v) Pro některé lineární transformace NEEISTUJE opačná (inverzní transformace). 7.2 Vliv transformace na vektorovou a rastrovou grafiku Každá transformace je u každého obrazu aplikována na všechny jeho řídící body. U vektorové grafiky jsou řídící body zřejmé. Jsou to všechny body, pomoví nichž je daný objekt popsán. Např. pro úsečku je to její počáteční a koncový bod, u křivky to jsou její řídící body, pomocí nichž je křivka definována a jejichž počet je v závislosti na typu křivky různý. Pro mnohoúhleník jsou to všechny jeho vrcholy atd. U rastrové grafiky je řídícím (určujícím) bodem každý jednotlivý obrazový bod (pixel). U rastrové grafiky má smysl hovořit i o barvových transformacích (transformace barev). Transformacemi rastrového obrazu se bude podrobně zabývat blok a 2. Na následujícím obrázku je znázorněn rozdíl při aplikaci transformace otočení na vektorovou a rastrovou grafiku. KST/IPOGR -2 Petr Veselý
Obrázek : Transformace vektorové a rastrové grafiky 7.3 Transformace souřadnicového systému ezi transformace souřadnicového systému patří i záměna jednoho SS za jiný. Důvodem takové záměny nemusí být primárně změna výsledného obrazu, ale snaha o převedení všech zpracovávaných objektů do SS, ve kterém je například usnadněno jejich další zpracování. Tato transformace samozřejmě si vyžádá změnu některých hodnot, pomocí nichž je obraz definován. x r.cos( ) y r.sin( ) r x 2 y y arctg x 2 r Obrázek 2 - Změna kartézského a polárního SS nohem běžnější transformací SS je úprava vlastností daného SS. Jedná se o běžně používané globální nebo stránkové souřadnice. Zde se může jednat například o změnu velikosti nebo orientace zobrazení. Tímto způsobem je rovněž možno řešit přepočet mezi reálnými (světovými) souřadnicemi v nichž je celá scéna definována a mezi souřadnicemi zařízení (pixely), v nichž je scéna zobrazována na konkrétním výstupním zařízení. KST/IPOGR -3 Petr Veselý
Následující obrázek ukazuje konkrétní přepočet mezi uživatelskými (světovými) souřadnicemi (USS) a souřadnicemi zařízení (SSZ). Obrázek 3 Přepočet USS a SSZ 7.4 Způsoby zápisu transformací Existují dva zásadní (běžné používané) způsoby zápisu transformací. Jedna je to pomocí explicitních vztahů a dále je používáno maticové vyjádření. V následujícím výkladu je předpokládáno, že souřadnice bodu P = [x, y] se vlivem transformace upraví na P = [x, y ]. Explicitní vyjádření x' 3x y' x 2y Řádkový vektor (preferováno v literatuře o PG) x' y' x y P' P * * Sloupcový vektor (standardní matematický zápis) 3 x ' y' x y* 2 KST/IPOGR -4 Petr Veselý
x' x * y' y P' * P x' 3 y' x * 2 y atice představuje tzv. transformační matici, která charakterizuje danou transformaci. Dále v textu bude v případě maticového vyjádření používán výhradně způsob s řádkovým vektorem. 7.5 Lineární transformace ezi základní lineární transformace patří: posunutí otočení změna měřítka zrcadlení zkosení 7.5. Posunutí V případě této transformace se jedná o posunutí (move) polohy bodu P do bodu P o vektor p (, ) (, ). Tato transformace není vztažena k žádnému vztažnému bodu. KST/IPOGR -5 Petr Veselý
KST/IPOGR -6 Petr Veselý Explicitní výpočet souřadnic P aticové vyjádření posunutí 7.5.2 Otočení Tato základní transformace řeší otočení (rotate) bodu P kolem počátku souřadnicového systému O=[,] o orientovaný úhel. Transformace otočení je vždy vykována vzhledem k určitému vztažnému bodu. Explicitní výpočet souřadnic P cos sin sin cos aticové vyjádření otočení cos sin sin cos R cos sin sin cos R Specifický případ otočení okolo jiného bodu, než je počátek SS, lze řešit složenou transformací: posunutí otočení zpětné posunutí.
7.5.3 Zkosení Zkosení (shear) je transformace udávaná koeficientem míry zkosení SHx ve směru osy x, respektive SHy ve směru osy y. Transformace zkosení je vždy vykována vzhledem k určitému vztažnému bodu. Explicitní výpočet souřadnic P SH SH aticové vyjádření otočení Sh SH SH 7.5.4 Změna měřítka KST/IPOGR -7 Petr Veselý
Transformace provede úpravu velikosti (scale) objektu ve směru jedné nebo obou os souřadnicového systému o koeficient Sx, Sy. Dle hodnoty příslušného koeficientu se jedná v dané směru o: S (,) ----> zmenšení objektu S > ----> zvětšení objektu V případě, že je S<, dochází ke změně měřítka v opačném směru. Transformace zkosení je vždy vykována vzhledem k určitému vztažnému bodu. Explicitní výpočet souřadnic P S x S y aticové vyjádření změny měřítka S S S Pojmy k zapamatování Transformace, lineární transformace, transformační matice, skládání transformací, vektor souřadnic Otázky na procvičení. Jaké jsou základní 2D grafické lineární transformace? 2. Co je to transformační matice? 3. Jaký je vztah mezi transformačním a explicitním vyjádřením transformací? 4. Co je to inverzní transformace? 5. Kdy ji lze provést? 6. Jak se realizuje složená transformace? 7. Jaký je rozdíl mezi transformací vektorového a rastrového obrázku? 8. Jak se řeší symetrie pomocí transformací? 9. Jak se řeší otočení okolo libovolného bodu v rovině?. Jaký rozměr má transformační matice ve 2D? KST/IPOGR -8 Petr Veselý
Odkazy a další studijní prameny Žára, J., eneš,., Felkel, P. oderní počítačová grafika. Computer Press, rno, 998. ISN 8-7226-49-9. Foley, Van D. Computer Graphics. Principles and Practice. ddison-wesley, 99. KST/IPOGR -9 Petr Veselý