User Tools

Site Tools


tanszek:oktatas:muszaki_informatika:transzformacio

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:

  1. Eltolás, hogy a forgatási középpont az origóba kerüljön.
  2. Forgatás 90 fokkal az óramutató járása szerint.
  3. 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} $$

tanszek/oktatas/muszaki_informatika/transzformacio.txt · Last modified: 2024/03/26 19:11 by knehez