Table of Contents
Koordináták felcserélés
A koordináták felcserélését közvetlenül elvégezhetjük a következő 2×2-es mátrix alkalmazásával:
$$ M = \left[\begin{matrix} 0 & 1 \\ 1 & 0 \\ \end{matrix}\right] $$
Ez a mátrix az alábbiak szerint működik:
$$ \left[\begin{matrix} 0 & 1 \\ 1 & 0 \\ \end{matrix}\right] \left[\begin{matrix} x \\ y \\ \end{matrix}\right] = \left[\begin{matrix} y \\ x \\ \end{matrix}\right] $$
Nagyítás és kicsinyítés
A nagyítás és kicsinyítés mátrixa az alábbi. Ha $s_x<1$ akkor az $x$ tengely irányába kicsinyítés fog történni, ha $s_x>1$ akkor az $x$ tengely irányába nagyítás. Az $s_y$ esetén is ugyanez a helyzet.
$$ M = \left[\begin{matrix} s_x & 0 \\ 0 & s_y \\ \end{matrix}\right] $$
Példa: nagyítsuk a síkban a pontokat a kétszeresére:
$$ M = \left[\begin{matrix} 2 & 0 \\ 0 & 2 \\ \end{matrix}\right] $$
Síkban eltolás
Az eltolás, vagy transzláció, egy geometriai objektum helyzetének megváltoztatása a síkon anélkül, hogy forgatnánk, méreteznénk, vagy torzítanánk azt. Egy pont, vagy egy objektum x,y koordinátáinak eltolásához $t_x$ és $t_y$ értékekkel: $x$ és $y$ tengelyek mentén, a következő transzformációs mátrixot használjuk:
$$ T = \left[ \begin{array}{cc|c} 1&0&t_x\\ 0&1&t_y\\ 0&0&1 \end{array} \right] $$
Ez a mátrix homogén koordinátákat használ, ami lehetővé teszi az eltolások, forgatások és más transzformációk kombinálását egyetlen műveletben. A transzformáció során egy pont P(x,y) homogén koordinátái P(x,y,1) lesznek, és az eltolás utáni koordináták a következőképpen számolhatók ki:
$$ \left[\begin{matrix} 0 & 1 & t_x\\ 1 & 0 & t_y\\ 0 & 0 & 1 \end{matrix}\right] \left[\begin{matrix} x \\ y \\ 1 \end{matrix}\right] = \left[\begin{matrix} x + t_x \\ y + t_y \\ 1 \end{matrix}\right] $$
Forgatás Mátrixszal, amikor a forgatási középpont nem az origóban van
Amikor egy pontot vagy objektumot szeretnénk 90 fokkal az óramutató járásával megegyezően elforgatni egy adott pont körül, a transzformációt három lépésre bonthatjuk:
- Eltolás, hogy a forgatási középpont az origóba kerüljön.
- Forgatás 90 fokkal az óramutató járása szerint.
- Visszatolás a forgatási középpont eredeti helyére.
Ezeket a lépéseket egyetlen 3×3-as transzformációs mátrixszal kombinálhatjuk, amely így néz ki:
- Előkészítés eltolással: $$ T_{eltolás} = \left[ \begin{array}{cc|c} 1&0&-x_c\\ 0&1&-y_c\\ 0&0&1 \end{array} \right] $$
- 90 fokos forgatás: $$ T_{forgatás} = \left[ \begin{array}{cc|c} 0&1&0\\ -1&0&0\\ 0&0&1 \end{array} \right] $$
- Visszatolás: $$ T_{visszatolás} = \left[ \begin{array}{cc|c} 1&0&x_c\\ 0&1&y_c\\ 0&0&1 \end{array} \right] $$
A teljes transzformációs mátrix, $ T_{teljes} = T_{visszatolás} * T_{forgatás} * T_{eltolás} $, a következőképpen számítható: (figyeljük meg hogy az egyes mátrixok fordított sorrendben vannak szorozva!)
$$T_{teljes} = \left[ \begin{array}{cc|c} 1&0&x_c\\ 0&1&y_c\\ 0&0&1 \end{array} \right] * \left[ \begin{array}{cc|c} 0&1&0\\ -1&0&0\\ 0&0&1 \end{array} \right] * \left[ \begin{array}{cc|c} 1&0&-x_c\\ 0&1&-y_c\\ 0&0&1 \end{array} \right]$$
Ami egyenlő:
$$T_{teljes} = \left[ \begin{array}{cc|c} 0&1&x_c - y_c\\ -1&0&y_c - x_c\\ 0&0&1 \end{array} \right]$$
Példa:
Tegyük fel, hogy szeretnénk 90 fokkal az óramutató járásával megegyezően elforgatni egy pontot (például $P(2,3)$) az $(1,1)$ pont körül. Ehhez az előbb leírt transzformációs mátrixokat fogjuk használni. Az egyszerűség kedvéért a példában szereplő értékeket közvetlenül beillesztjük a mátrixokba.
Előkészítés eltolással hogy a forgatási középpont $(-1, -1)$ legyen, azaz eltoljuk a pontot úgy, hogy a forgatási középpont az origóba kerüljön:
$$ T_{eltolás} = \left[ \begin{array}{ccc} 1 & 0 & -1 \\ 0 & 1 & -1 \\ 0 & 0 & 1 \end{array} \right] $$
90 fokos forgatás ($T_{forgatás}$), az origó körül:
$$ T_{forgatás} = \left[ \begin{array}{ccc} 0 & 1 & 0 \\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{array} \right] $$
Visszatolás ($T_{visszatolás}$), hogy a forgatási középpont visszakerüljön az eredeti $(1, 1)$ helyére:
$$ T_{visszatolás} = \left[ \begin{array}{ccc} 1 & 0 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 1 \end{array} \right] $$
A teljes transzformációs mátrix ($T_{teljes}$) kiszámítása:
$$ T_{teljes} = T_{visszatolás} * T_{forgatás} * T_{eltolás} $$
A számítás eredménye:
$$ T_{teljes} = \left[ \begin{array}{ccc} 0 & 1 & 0 \\ -1 & 0 & 2 \\ 0 & 0 & 1 \end{array} \right] $$
Most alkalmazzuk ezt a mátrixot a $P(2,3)$ pontra. A $P$ pontot kiterjesztjük egy homogén koordinátájú ponttá, így $P(2,3,1)$ lesz:
$$ \left[ \begin{array}{ccc} 0 & 1 & 0 \\ -1 & 0 & 2 \\ 0 & 0 & 1 \end{array} \right] * \left[ \begin{array}{c} 2 \\ 3 \\ 1 \end{array} \right] = \left[ \begin{array}{c} 3 \\ -2 + 2 \\ 1 \end{array} \right] = \left[ \begin{array}{c} 3 \\ 0 \\ 1 \end{array} \right] $$
Tehát, az eredeti $P(2,3)$ pont 90 fokkal való elforgatása az $(1,1)$ pont körül az új $(3,0)$ pontba transzformálja azt.
A forgatási mátrixok
A 3D-s forgatásokat forgatási mátrixokkal írhatjuk le. Ezek a mátrixok mutatják, hogyan változik egy pont koordinátája a forgatás során.
X tengely körüli forgatás
A következő képlet az X tengely körüli forgatási mátrixot mutatja, ahol \( \theta \) a forgatás szöge: (a forgatás iránya az óramutató járásával ellentétes)
$$ R_x(\theta) = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos(\theta) & -\sin(\theta) \\ 0 & \sin(\theta) & \cos(\theta) \end{pmatrix} $$
Y tengely körüli forgatás
A Y tengely körüli forgatás esetén a forgatási mátrix:
$$ R_y(\theta) = \begin{pmatrix} \cos(\theta) & 0 & \sin(\theta) \\ 0 & 1 & 0 \\ -\sin(\theta) & 0 & \cos(\theta) \end{pmatrix} $$
Z tengely körüli forgatás
Végül a Z tengely körüli forgatás mátrixa:
$$ R_z(\theta) = \begin{pmatrix} \cos(\theta) & -\sin(\theta) & 0 \\ \sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 1 \end{pmatrix} $$