prev up inhalt next

Homogene Koordinaten

Um auch die Translation durch eine Matrixmultiplikation ausdrücken zu können, muß das Konzept der homogenen Koordinaten eingeführt werden. Dabei wird unserem Objektraum eine Dimension hinzugefügt, es werden aber weiterhin 2D-Objekte repräsentiert und dargestellt.

Ein Punkt $P=(x,y)$ hat die homogenen Koordinaten $(x_{h} \; y_{h} \; w)^T$ mit $w \neq 0$ und

\begin{eqnarray*}
x_h&=&x \cdot w\\
y_h&=&y \cdot w
\end{eqnarray*}



Beispiel:
Das homogene Koordinatentripel $(6 \; 8 \; 2)^T$ gehört zum Punkt $P =(3, 4)$. Derselbe Punkt hat die homogenen Koordinaten $(3 \; 4 \; 1)^T$. D.h. jeder Punkt $P=(x,y)$ repräsentiert eine ganze Ursprungsgerade im 3D-Raum.

Der Richtungsvektor $\vec{r}$, der vom Ursprung zum Punkt $R = (x, y)$ führt, hat die homogenen Koordinaten $(x\; y \;0)^T$.


Abbildung 6.6: Punkt $(3,4)$ und Richtungsvektor $(3, 4)^T$

Die Transformationen Translation, Skalierung und Rotation werden nun als $3 \times 3$-Matrizen realisiert. Zusammengesetzte Transformationen ergeben sich durch Matrix-Multiplikation.

Translation


\begin{displaymath}
\left( \begin{array}{c} x' \\ y' \\ 1 \end{array} \right)
:=...
...left( \begin{array}{c} x+t_x \\ y+t_y \\ 1 \end{array} \right)
\end{displaymath}

Skalierung


\begin{displaymath}
\left ( \begin{array}{c} x' \\ y' \\ 1 \end{array} \right )
...
...array}{c} x \cdot s_x \\ y \cdot s_y \\ 1 \end{array} \right )
\end{displaymath}

Rotation


\begin{displaymath}
\left ( \begin{array}{c} x' \\ y' \\ 1 \end{array} \right )
...
...n (\beta ) + y \cdot \cos (\beta ) \\
1 \end{array} \right )
\end{displaymath}

Für die Auswertung einer zusammengesetzten Transformation

Beispiel für zusammengesetzte Transformation:
Rotation bzgl. $(3, 5)$ um $60^{\circ}$

Matrix für Translation um $(-3, -5)$ lautet

\begin{displaymath}
A=
\left(
\begin{array}{rrr}
1.0000000 & 0.0000000 & -3.000...
...000000\\
0.0000000 & 0.0000000 & 1.0000000
\end{array}\right)
\end{displaymath}

Matrix für Rotation um $60^{\circ}$ lautet

\begin{displaymath}
B =
\left(
\begin{array}{rrr}
0.5000000 & -0.8660254 & 0.00...
...000000\\
0.0000000 & 0.0000000 & 1.0000000
\end{array}\right)
\end{displaymath}

Matrix für Translation um $(3, 5)$ lautet

\begin{displaymath}
C =
\left(
\begin{array}{rrr}
1.0000000&0.0000000 & 3.000000...
....0000000\\
0.0000000&0.0000000 & 1.0000000
\end{array}\right)
\end{displaymath}

Matrix für gesamte Transformation lautet

\begin{displaymath}
D = C \cdot B \cdot A =
\left(
\begin{array}{rrr}
0.5000000...
...80762\\
0.0000000 & 0.0000000 & 1.0000000
\end{array}\right)
\end{displaymath}


prev up inhalt next