Geometrie/Afinní transformace souřadnic

Z Wikiknih

Přejít na: navigace, hledání

Geometrické transformace jsou jedněmi z nejčastěji používaných operací v počítačové grafice. Mezi afinní operace patří posunutí, otáčení, změna měřítka, zkosení a operace vzniklé jejich skládáním.

Obsah

[editovat] Vyjádření

Afinní transformace jsou vyjádřeny vztahem P' = P A, kde P je bodem, který transformujeme maticí A. Platí P' = [x' y' w'] = P A = [x y w] A. Matice A reprezentuje jednotlivé transformace, které mohou být i skládány.

Geometrické afinní transformace souřadnic nám umožňují bod P posunout, otočit nebo změnit jeho měřítko (týká se objektů, z těchto bodů složených).

Podrobnější rozepsání těchto transformací a jejich skládání viz níže.

[editovat] Afinní geometrické transformace souřadnic

[editovat] Posunutí

Transformace posunutí nebo také translace (move, translation) bodu P[X, Y] je určena vektorem posunutí

p = (XT,YT) = (X' - X,Y' - Y)

Aplikací této transformace na bod P získáme bod P' o souřadnicích

X' = X + XT
Y' = Y + YT

Maticové vyjádření transformace posunutí má pro homogenní souřadnice tvar


A_T=
\begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ X_T & Y_T & 1 \end{bmatrix}

Move02.svg

Obr.1: Posunutí - Červená křivka je výsledkem posunutí původní modré křivky o vektor a.

[editovat] Otáčení

Otáčením (rotation) bodu P kolem počátku soustavy souřadnic O=[0,0] o orientovaný úhel α získáme bod P' o souřadnicích

X' = Xcosα - Ysinα
Y' = Xsinα + Ycosα

Maticové vyjádření transformace otáčení má pro homogenní souřadnice tvar


A_R=
\begin{bmatrix} cos\alpha & sin\alpha & 0\\ -sin\alpha & cos\alpha & 0\\ 0 & 0 & 1 \end{bmatrix}

Rotate.svg

Obr.2: Otočení - Červená křivka je výsledkem otočení původní modré křivky o 1800.

[editovat] Změna měřítka

Změna měřítka (scale, zoom) je změnou velikosti objektu ve směru souřadnicových os. Pokud je absolutní hodnota koeficientu měřítkování v intervalu (0, 1), dochází ke zmenšení transformovaného objektu. Je-li absolutní hodnota koeficientu větší než jedna, dojde k prodloužení, je-li znaménko záporné, dochází k prodloužení či zmenšení v opačném směru.

Rovnice pro změnu měřítka bodu P mají tvar

X' = SxX
Y' = SyY

kde Sx je koeficient změny měřítka ve směru souřadnicové osy x a Sy je koeficient změny měřítka ve směru souřadnicové osy y.

Odpovídající transformační matice má pro homogenní souřadnice tvar


A_{S}=
\begin{bmatrix} S_x & 0 & 0\\ 0 & S_y & 0\\ 0 & 0 & 1 \end{bmatrix}

Scale.svg

Obr.3: Změna měřítka - Červená křivka je výsledkem zvětšení původní modré křivky, zelená pak jejím zmenšením.
Červená křivka: Scale X = Scale Y = 1,2
Zelená křivka: Scale X = Scale Y = 0,45

[editovat] Skládání transformací

Při postupném aplikování transformací na bod P záleží na pořadí, v jakém se transformace provádějí. Je rozdíl, jestliže bod posuneme a poté otočíme okolo počátku souřadnicového systému, nebo zda bod nejprve otočíme a poté provedeme transformaci posunutí. Transformaci vzniklou složením z více transformací lze vyjádřit jedinou maticí, kterou získáme postupným násobením matic, reprezentujících dílčí transformace. Protože záleží na pořadí transformací, záleží i na pořadí násobení matic. Jelikož používáme zápis P'=PA , musíme matice reprezentující jednotlivé transformace násobit zprava.

Platí, že pokud násobíme transformační matici, maticí k ní inverzní, dostaneme původní (netransformované) souřadnice. Jinak řečeno inverzní transformace je reprezentována inverzní maticí.

Příklad

Odvození transformační matice pro otáčení o úhel α okolo bodu R[xR ,yR]

Operaci provedeme následujícím způsobem: bod R nejprve přemístíme pomocí matice AM do počátku souřadnicového systému, poté provedeme otočení o úhel α pomocí matice AR a nakonec bod přemístíme zpět do původní polohy inverzní matice A-1M. Vše provedeme tak, že vytvoříme matici, která vznikne složením matic vyjadřujících všechny tři operace. Výsledná matice je součin 
A=A_MA_RA_M^{-1}
.

(Pozn. Výše uvedené vztahy a vzorce jsou vztaženy ke 2D. Jejich 3D verze jsou podobné a z nich lehce odvoditelné.)

[editovat] Autoři

Tento text vypracovali studenti Univerzity Palackého v Olomouci katedry Matematické informatiky jako zápočtový úkol do předmětu Počítačová geometrie.