Transformace ve 2D

Nejčastěji používané transformace souřadnic v rovině.

Body seznamu souřadnic vstup.txt (pořadí souřadnic $x$, $y$) přetransformujte a uložte do výstupního textového souboru s přesností souřadnic na dvě desetinná místa. Matici transformace uložte do textového souboru s plnou přesností výpočtu. Postup výpočtu uložte do souboru a uchovejte pro další použití.

Použijte transformaci:
  1. shodnostní s parametry:

    Vypočtené souřadnice uložte do souboru vystup_sh.txt. Transformační matici uložte do souboru tr_sh.txt a postup výpočtu do souboru tr_sh.m.

  2. podobnostní s parametry:

    Vypočtené souřadnice uložte do souboru vystup_po.txt. Transformační matici uložte do souboru tr_po.txt a postup výpočtu do souboru tr_po.m.

  3. afinní s parametry:

    Vypočtené souřadnice uložte do souboru vystup_af.txt. Transformační matici uložte do souboru tr_af.txt a postup výpočtu do souboru tr_af.m.

Pozn.: Pro pohledovou kontrolu transformace si můžete zobrazit několik vstupních a transformovaných bodů graficky (funkce plot).

Teorie

Nejčastěji používané transformace souřadnic v rovině (v homogenních souřadnicích).

Obecná transformace bodu $P[x,y,1]$ na bod $P'[X,Y,1]$:

$ \left( \begin{array}[c]{c} X \\ Y \\ 1 \end{array} \right) = \left( \begin{array}[c]{cccc} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ 0 & 0 & 1 \end{array} \right) \cdot \left( \begin{array}[c]{c} x \\ y \\ 1 \end{array} \right) $

$ \mathbf{P'} = \mathbf{A} \cdot \mathbf{P} $

Pozn.: Obecnou transformaci lze "složit" z elementárních transformací. Matice obecné transformace je součinem matic elementárních transformací. Matice inverzní transformace je inverzní maticí.

Elementární transformace

Posunutí

Posunutí souřadnicového systému o vektor $[t_x,t_y]$.

Matice posunutí $\mathbf{T}$ (translation):

$\mathbf{T}(t_x,t_y) = \left( \begin{array}[c]{ccc} 1 & 0 & t_x \\ 0 & 1 & t_y \\ 0 & 0 & 1 \end{array} \right) $

Rotace

Pootočení souřadnicového systému kolem počátku o úhel $\alpha$.

Matice rotace $\mathbf{R}$ (rotation):

$ \mathbf{R}(\alpha) = \left( \begin{array}[c]{ccc} \cos\alpha & -\sin\alpha & 0 \\ \sin\alpha & \cos\alpha & 0 \\ 0 & 0 & 1 \end{array} \right) $

Změna měřítka

Změna měřítka pro osu $x$ (koeficient $s_x$) a pro osu $y$ (koeficient $s_y$).

Matice změny měřítka $\mathbf{S}$ (scale):

$ \mathbf{S}(s_x,s_y) = \left( \begin{array}[c]{ccc} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{array} \right) $

Kombinace elementárních transformací

Matice kombinace transformací je součinem matic elementárních transformací (na pořadí násobení matic záleží!).

Shodnostní transformace

Pootočení a posun (zachovává měřítko i úhly; min. 2 identické body).

$\mathbf{A} = \mathbf{T}\cdot\mathbf{R}$

Podobnostní transformace

Pootočení, posun a změna měřítka stejná pro obě osy ($s_x = s_y$) (zachovává úhly; min. 2 identické body).

$\mathbf{A} = \mathbf{T}\cdot\mathbf{R}\cdot\mathbf{S}$

Afinní transformace

Pootočení, posun a změna měřítka ($s_x \neq s_y$) (min. 3 identické body)

$\mathbf{A} = \mathbf{T}\cdot\mathbf{R}\cdot\mathbf{S}$