Wissen: Anwendungen der Matrizenrechnung

Autor: Dr. Volkmar Naumburger ❤️ Bedanken

Lösung von Gleichungssystemen

In Abschnitt Definition Determinanten wurde die Lösung linearer Gleichungssysteme mittels Determinanten hergeleitet. Dazu wurde die Cramersche Regel angewendet. Wie sich gezeigt hat ist dieses Verfahren jedoch recht aufwändig zu handhaben.

Mit den Mitteln der Matrizenrechnung kann ein anderer Lösungsweg angegeben werden, der allerdings nur dank der verfügbaren Matrizenprogramme auf dem Computer vorteilhaft realisierbar ist.

Es sei

\(\begin{array}{l}I. & {a_{11} }x + {a_{12} }y + {a_{13} }z = {c_1}\\II. & {a_{21} }x + {a_{22} }y + {a_{23} }z = {c_2}\\III. & {a_{31} }x + {a_{32} }y + {a_{33} }z = {c_3}\end{array}\) Gl. 208

das zu lösende Gleichungssystem, dann kann mit der Matrix

\( A = \left( {\begin{array}{*{20}{c} } { {a_{11} } }&{ {a_{12} } }&{ {a_{13} } }\\{ {a_{21} } }&{ {a_{22} } }&{ {a_{23} } }\\{ {a_{31} } }&{ {a_{32} } }&{ {a_{33} } } \end{array} } \right) \) Gl. 209

und den Spaltenvektoren

\(C = \left( {\begin{array}{*{20}{c} }{ {c_1} }\\{ {c_2} }\\{ {c_3} }\end{array} } \right)\) und \(X = \left( {\begin{array}{*{20}{c} }x\\y\\z\end{array} } \right)\) Gl. 210

das Gleichungssystem nach Gl. 208 wie folgt geschrieben werden

\(\left( {\begin{array}{*{20}{c} }{ {c_1} }\\{ {c_2} }\\{ {c_3} }\end{array} } \right) = \left( {\begin{array}{*{20}{c} }{ {a_{11} } }&{ {a_{12} } }&{ {a_{13} } }\\{ {a_{21} } }&{ {a_{22} } }&{ {a_{23} } }\\{ {a_{31} } }&{ {a_{32} } }&{ {a_{33} } }\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\\z\end{array} } \right)\) Gl. 211

oder

\(C = A \cdot X\) Gl. 212

Gesucht sind aber die Werte des Spaltenvektors X. D.h. Gl. 212 muss so umgeformt werden, dass X separiert wird. Dies wird erreicht, indem Gl. 212 auf beiden Seiten von links mit der Kehrwertmatrix von A multipliziert wird:

\({A^{ - 1} } \cdot C = {A^{ - 1} } \cdot A \cdot X\) Gl. 213

\({A^{ - 1} } \cdot C = I \cdot X = X\) Gl. 214

Diese Vorgehensweise erinnert sehr an die gewöhnliche Auflösung einer Gleichung nach einer unbekannten Variablen. Allerdings ist die Bildung einer Kehrwertmatrix ohne rechentechnische Hilfsmittel sehr aufwändig, so dass im allgemeinen Fall die Lösung linearer Gleichungssysteme mittels Determinanten schneller zum Ziel führt. Hingegen hat die Rechnung mit Matrizen den Vorteil, dass sie sehr gut formalisiert ist, folglich ideal für die Lösung mittels Computerprogrammen geeignet ist.

Beispiel:

Es sei das Gleichungssystem

\(\begin{array}{l}3x + 7y + 3z = 2\\\,\,x - \,\,\,\,y + 3z = 4\\3x + 2y + \,\,\,z = 1\end{array}\)

zu lösen. Die herkömmliche Lösung mit Determinanten ergibt

\( D = \left| { \begin{array}{*{20}{c}} 3&7&3 \\ 1&{- 1}&3 \\ 3&2&1 \end{array} } \right|; \qquad {D_x} = \left| { \begin{array}{*{20}{c} } 2&7&3\\4&{-1}&3 \\ 1&2&1 \end{array} } \right|; \qquad {D_y} = \left| { \begin{array}{*{20}{c} } 3&2&3\\1&4&3\\3&1&1 \end{array} } \right|; \qquad {D_z} = \left| { \begin{array}{*{20}{c} } 3&7&2\\1&{-1}&4\\3&2&1 \end{array} } \right| \)

Daraus folgen nach Anwendung der Cramerschen Regel:

\( x = \frac{ { {D_x} } }{D} = 0,12; \qquad y = \frac{ { {D_y} } }{D} = - 0,28 \quad \text{ und } \quad z = \frac{ { {D_z} } }{D} = 1,2 \)

Unter Anwendung der Matrizenrechnung wird die Lösung folgendermaßen berechnet: Die entsprechenden Matrizen ergeben sich zu

\( A = \left( {\begin{array}{*{20}{c} } 3&7&3 \\ 1&{- 1}&3 \\ 3&2&1 \end{array} } \right) \quad \text{ und } \quad C = \left( {\begin{array}{*{20}{c} }2\\4\\1\end{array} } \right) \)

und die gesuchte Lösung

\( C = A · X \quad \text{ also } \quad X = {A^{-1} } · C \)

Die Kehrwertmatrix wurde in einem früheren Beispiel schon berechnet:

\( {A^{-1} } = \frac{1}{ {50} } \left( { \begin{array}{*{20}{c} } { - 7}&{ - 1}&{24} \\ 8&{-6}&{-6} \\ 5&{15}&{-10} \end{array} } \right) \)

Nun ist nur noch die Multiplikation auszuführen

\(\left( {\begin{array}{*{20}{c} }x\\y\\z\end{array} } \right) = \frac{1}{ {50} }\left( {\begin{array}{*{20}{c} }{ - 7}&{ - 1}&{24}\\8&{ - 6}&{ - 6}\\5&{15}&{ - 10}\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }2\\4\\1\end{array} } \right) = \frac{1}{ {50} }\left( {\begin{array}{*{20}{c} }{ - 14 - 4 + 24}\\{16 - 24 - 6}\\{10 + 60 - 10}\end{array} } \right) = \left( {\begin{array}{*{20}{c} }{0,12}\\{ - 0,28}\\{1,2}\end{array} } \right)\)

q.e.d.

Geometrische Transformationen

In einem n-dimensionalen Raum werden Punkte als n-dimensionale Spaltenvektoren dargestellt. Geometrische Transformationen befassen sich nun damit, diese Vektoren (oder Mengen solcher) zu manipulieren. Geometrische Transformationen können auf vier Grundoperationen zurückgeführt werden (Abbildung 20).

Geometrische Transformationen Grundoperationen Abbildung 20

Im Folgenden soll untersucht werden, welche Matrizenoperationen diese Transformationen abbilden können.

Transformationen in 2D

Transformationen im zweidimensionalen Raum unterscheiden sich nicht grundsätzlich von solchen im 3D-Raum. Da aber die Betrachtungsweise im zweidimensionalen Raum anschaulicher ist, werden alle Transformationen zunächst im 2D-Raum erörtert. Ein Punkt in der Fläche wird durch seine Koordinaten bestimmt:

\(P = \left( {\begin{array}{*{20}{c} }x\\y\end{array} } \right) = {\left( {\begin{array}{*{20}{c} }x&y\end{array} } \right)^T}\) Gl. 215

Bisweilen wird zur Kennzeichnung eines Spaltenvektors auch die transponierte Schreibweise benutzt, weil diese Schreibweise platzsparend ist.

Elementare Transformationen

Translation

Die Translation ist dadurch gekennzeichnet, dass zu den Koordinaten des Punktes P Verschiebungswerte hinzugefügt werden:

\(\begin{array}{l}x' = x + {t_x}\\y' = y + {t_y}\end{array}\) Gl. 216

oder in Matrizenschreibweise:

\(P' = P + T = \left( {\begin{array}{*{20}{c} }x\\y\end{array} } \right) + \left( {\begin{array}{*{20}{c} }{ {t_x} }\\{ {t_y} }\end{array} } \right)\) Gl. 217

Skalierung

Bei der Skalierung erfolgt eine Multiplikation der Koordinaten des Punktes mit einem richtungsbezogenen Faktor:

\(\begin{array}{l}x' = {s_x} \cdot x\\y' = {s_y} \cdot y\end{array}\) Gl. 218

oder in Matrizenschreibweise:

\(P' = S \cdot P = \left( {\begin{array}{*{20}{c} }{ {s_x} }&0\\0&{ {s_y} }\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\end{array} } \right)\) Gl. 219

Beachte, dass die Wirkung der Skalierung abhängig ist vom Ort des Punktes. Ein weiter vom Nullpunkt entfernter Punkt wird absolut stärker beeinflusst als ein Punkt in der Nähe des Koordinatenursprungs. Siehe dazu Abbildung 20, Skalierung: der Punkt P1 wird weniger stark verrückt als der Punkt P3.

Scherung

Die Scherung kann auf einen einzelnen Punkt nicht sinnvoll angewendet werden, vielmehr wird sie auf Ensembles von Punkten angewandt. Daher wird für die folgende Betrachtung vorausgesetzt, dass ein Objekt aus mindestens zwei Punkten gebildet wird, wovon ein Punkt im Koordinatenursprung liege. Die Scherung ist ebenfalls richtungsabhängig:

\(\begin{array}{l}x' = x + {a_x} \cdot y\\y' = {a_y} \cdot x + y\end{array}\) Gl. 220

oder in Matrizenschreibweise:

\( P' = Sh \cdot P = \left( {\begin{array}{*{20}{c} } 1&{ {a_x} } \\ { {a_y} }&1 \end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} } x \\ y \end{array} } \right) \) Gl. 221

Durch die Einführung der Scherungskoeffizienten ax bzw. a y bleibt die Linien­parallelität des gescherten Objektes erhalten, wohingegen Winkel und Längen beeinflusst werden. Die Werte für a x bzw. ay entsprechen den Tangenswerten der jeweiligen Scherungswinkel a und b:

\(\begin{array}{l}{a_x} = \tan (\alpha )\\{a_y} = \tan (\beta)\end{array}\) Gl. 222

Wird die Scherungsoperation auf den Punkt im Ursprung angewendet, bleibt dies ohne Wirkung, da x = y = 0 sind.

Sonderfälle

a) Scherung parallel zur x-Achse

\(P' = Sh \cdot P = \left( {\begin{array}{*{20}{c} }1&{ {a_x} }\\0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\end{array} } \right)\) Gl. 223

b) parallel zur y-Achse

\(P' = Sh \cdot P = \left( {\begin{array}{*{20}{c} }1&0\\{ {a_y} }&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\end{array} } \right)\) Gl. 224

Scherung parallel zur x-Achse und y-Achse Abbildung 21

Rotation

Die Rotation ist dadurch gekennzeichnet, dass der Punkt bei gleichbleibendem Abstand vom Ursprung um einen bestimmten Winkel entlang eines Kreises mit einem Radius, der genau diesem Abstand entspricht, verschoben wird:

\(\begin{array}{l}x' = x \cdot \cos \phi - y \cdot \sin \phi \\y' = x \cdot \sin \phi + y \cdot \cos \phi \end{array}\) Gl. 225

oder in Matrizenschreibweise:

\(P' = R \cdot P = \left( {\begin{array}{*{20}{c} }{\cos \phi }&{ - \sin \phi }\\{\sin \phi }&{\cos \phi }\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\end{array} } \right)\) Gl. 226

Eigenschaften

  • Translation, Rotation und jegliche Kombination von beiden Transformationen erhalten Längen und Winkel von 2D-Objekten (körpererhaltende Transformation).
  • Skalierung, Scherung und deren Kombinationen erhalten die Linienparallelität, aber keine Winkel und Längen von 2D-Objekten.

Homogene Koordinaten

Elementare Transformationen

Für eine geschlossene Bearbeitung von Transformationsaufgaben ist von Nachteil, dass die Translation auf einer Addition und alle anderen Transformationen auf der Multiplikation von Matrizen beruhen. Durch das Hinzufügen einer weiteren, virtuellen Koordinate kann dieser Mangel behoben werden. Wird dies in geeigneter Weise getan (siehe Rändern, Abschnitt Rändern von Determinanten) bleibt der Wert der Matrix bekanntlich unverändert.

Am Beispiel der Translation wird dies deutlich:

\( P' = P + T = \left( {\begin{array}{*{20}{c} }x\\y\end{array} } \right) + \left( {\begin{array}{*{20}{c} }{ {t_x} }\\{ {t_y} }\end{array} } \right) \qquad \Rightarrow \qquad P' = \left( {\begin{array}{*{20}{c} }1&0&{ {t_x} }\\0&1&{ {t_y} }\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\\1\end{array} } \right) \) Gl. 227

Wird das Matrixprodukt ausgeführt, entsteht exakt das Gleichungssystem von Gl. 216. Die letzte Zeile wird dabei unberücksichtigt gelassen.

\( P' = \left( {\begin{array}{*{20}{c} }1&0&{ {t_x} }\\0&1&{ {t_y} }\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\\1\end{array} } \right) = \left( {\begin{array}{*{20}{c} }{1 \cdot x + 0 \cdot y + {t_x} \cdot 1}\\{0 \cdot x + 1 \cdot y + {t_y} \cdot 1}\\{0 \cdot x + 0 \cdot y + 1 \cdot 1}\end{array} } \right) = \left( {\begin{array}{*{20}{c} }{x + {t_x} }\\{y + {t_y} }\\1\end{array} } \right) \) Gl. 228

Alle anderen Transformationen werden nach dem gleichen Prinzip erweitert:

Skalierung:

\(P' = S \cdot P = \left( {\begin{array}{*{20}{c} }{ {s_x} }&0&0\\0&{ {s_y} }&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\\1\end{array} } \right)\) Gl. 229

Scherung:

\(P' = Sh \cdot P = \left( {\begin{array}{*{20}{c} }1&{ {a_x} }&0\\{ {a_y} }&1&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\\1\end{array} } \right)\) Gl. 230

Rotation:

\(P' = R \cdot P = \left( {\begin{array}{*{20}{c} }{\cos \phi }&{ - \sin \phi }&0\\{\sin \phi }&{\cos \phi }&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\\1\end{array} } \right)\) Gl. 231

Ein weiterer Vorteil der homogenen Matrizen liegt darin, dass alle multiplikativ verknüpften Transformationen, bevor die eigentliche Multiplikation mit dem Punktvektor erfolgt, vorbereitend ausgeführt werden können. Damit wird sehr viel Rechenaufwand und Zeit gespart, wenn viele Punkte auf die gleiche Weise transformiert werden sollen.

Beispiel 1:

Gegeben sei der Punkt P(1;2). Dieser sei zunächst um eine Einheit parallel zur y-Achse in Richtung Koordinatenursprung zu verschieben und anschließend um einen Winkel von 90° zu rotieren. Die Lösung sieht demnach so aus:

Rotation um 90° um Koordinatenursprung

\(P' = R · T · P = \left( {\begin{array}{*{20}{c} }0&{ - 1}&0\\1&0&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }1&0&0\\0&1&{ - 1}\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\\1\end{array} } \right)\)

Bei der Aneinanderfügung der Faktoren ist immer die richtige Reihenfolge – von rechts nach links - zu beachten! Zunächst werden die beiden Transformationsmatrizen multipliziert:

\(P' = R · T · P = \left( {\begin{array}{*{20}{c} }0&{ - 1}&1\\1&0&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }x\\y\\1\end{array} } \right)\)

Mit x=1 und y=2 ergibt sich der transformierte Punkt zu

\(P' = R · T · P = \left( {\begin{array}{*{20}{c} }0&{ - 1}&1\\1&0&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }1\\2\\1\end{array} } \right) = \left( {\begin{array}{*{20}{c} }{ - 1}\\1\\1\end{array} } \right)\)

Beispiel 2:

Ein Rechteck, das durch die Punkte P1(0;0), P2(0;2), P3(1;2) und P4(1;0) gegeben ist, soll parallel der x-Achse um 45° geschert werden. Mit a=45° und b=0° werden ax=tan(45°)=1 und ay=tan(0)=0. Folglich gilt:

\( Sh = \left( {\begin{array}{*{20}{c} }1&1&0\\0&1&0\\0&0&1\end{array} } \right) \)

Daraus ergeben sich die neuen Punkte:

\( P1' = Sh \cdot P1 = \left( {\begin{array}{*{20}{c} }1&1&0\\0&1&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }0\\0\\1\end{array} } \right) = \left( {\begin{array}{*{20}{c} }0\\0\\1\end{array} } \right) \\ P2' = Sh \cdot P2 = \left( {\begin{array}{*{20}{c} }1&1&0\\0&1&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }0\\2\\1\end{array} } \right) = \left( {\begin{array}{*{20}{c} }2\\2\\1\end{array} } \right) \)

\(P3' = Sh \cdot P3 = \left( {\begin{array}{*{20}{c} }1&1&0\\0&1&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }1\\2\\1\end{array} } \right) = \left( {\begin{array}{*{20}{c} }3\\2\\1\end{array} } \right) \\ P4' = Sh \cdot P4 = \left( {\begin{array}{*{20}{c} }1&1&0\\0&1&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }1\\0\\1\end{array} } \right) = \left( {\begin{array}{*{20}{c} }1\\0\\1\end{array} } \right)\)

Scherung eines Bildes im Koordinatensystem

Inverse Transformationen

Bestimmte Aufgaben machen die Umkehrung von Transformationsschritten (siehe Ähnlichkeitstransformation 4.6.2 e) notwendig. Dies ist zum Beispiel der Fall, wenn ein Objekt, das sich nicht im Ursprung befindet, nur um sich selbst rotiert werden soll. Damit keine Positionsveränderung des Objektes bei der Rotation erfolgt, wird die Rotation um sich selbst in drei Schritten vorgenommen. Im ersten Schritt wird das Objekt in den Ursprung verschoben, im zweiten rotiert und im dritten Schritt an seinen Ausgangsort zurück verschoben.

Umkehroperationen werden durch die Bildung des Kehrwertes der Ausgangsmatrix ausgeführt. So gelten für die

Translation:

\( T = \left( { \begin{array}{*{20}{c} }1&0&{ {t_x} }\\0&1&{ {t_y} }\\0&0&1\end{array} } \right) \quad \Rightarrow \quad {T^{ - 1} } = \left( { \begin{array}{*{20}{c} } 1&0&{ - {t_x} } \\ 0&1&{ -{t_y} } \\ 0&0&1\end{array} } \right) \) Gl. 232

Skalierung:

\( S = \left( {\begin{array}{*{20}{c} } { {s_x} }&0&0 \\ 0&{ {s_y} }&0 \\ 0&0&1\end{array} } \right) \quad \Rightarrow \quad {S^{ - 1} } = \left( {\begin{array}{*{20}{c} } \frac{1}{s_x} & 0 & 0 \\ 0 & \frac{1}{s_y} & 0 \\ 0 & 0 & 1 \end{array} } \right) \) Gl. 233

Scherung:

Nach Gl. 199 (Inverse Matrix) wird die Kehrwertbildung wie folgt ausgeführt:

\(S{h^{ - 1} } = {\left( {\begin{array}{*{20}{c} }1&{ {a_x} }&0\\{ {a_y} }&1&0\\0&0&1\end{array} } \right)^{ - 1} } = \frac{1}{ {\det (Sh)} } \cdot {\left( {\begin{array}{*{20}{c} }{ {A_{11} } }&{ {A_{12} } }&{ {A_{13} } }\\{ {A_{21} } }&{ {A_{22} } }&{ {A_{23} } }\\{ {A_{31} } }&{ {A_{32} } }&{ {A_{33} } }\end{array} } \right)^T}\) Gl. 234

wobei

\(\det (sh) = 1 \cdot \left| {\begin{array}{*{20}{c} }1&{ {a_x} }\\{ {a_y} }&1\end{array} } \right| = 1 - {a_x} \cdot {a_y}\) und

\(\left( {\begin{array}{*{20}{c} }{ {A_{11} } }&{ {A_{12} } }&{ {A_{13} } }\\{ {A_{21} } }&{ {A_{22} } }&{ {A_{23} } }\\{ {A_{31} } }&{ {A_{32} } }&{ {A_{33} } }\end{array} } \right) = \left( {\begin{array}{*{20}{c} }1&{ - {a_y} }&0\\{ - {a_x} }&1&0\\0&0&{1 - {a_x}{a_y} }\end{array} } \right)\) damit

\( Sh = \left( {\begin{array}{*{20}{c} }1&{ {a_x} }&0\\{ {a_y} }&1&0\\0&0&1\end{array} } \right) \quad \Rightarrow \quad S{h^{ - 1} } = \frac{1}{ {1 - {a_x}{a_y} } } \cdot \left( { \begin{array}{*{20}{c} } 1&{ - {a_x} }&0 \\ {-{a_y} }&1&0 \\ 0&0&{1 - {a_x}{a_y} } \end{array} } \right) \) Gl. 235

Rotation:

\( R = \left( {\begin{array}{*{20}{c} }{\cos \phi }&{ - \sin \phi }&0\\{\sin \phi }&{\cos \phi }&0\\0&0&1\end{array} } \right) \quad \Rightarrow \quad { R^{-1} } = \left( { -\begin{array}{*{20}{c} } {\cos \phi }&{\sin \phi }&0 \\ {\sin \phi }&{\cos \phi }&0 \\ 0&0&1 \end{array} } \right) \) Gl. 236

Beispiel:

Gegeben seien die Punkte P1(1;2) und P2(3;2) eines Objektes, das um einen Winkel von -90° (also im Uhrzeigersinn) um seinen Mittelpunkt zu rotieren ist. Der Mittelpunkt des Objektes liegt im Punkt PM(2;2).

Lösung:

Zunächst sind die Punkte P1 und P2 so zu verschieben, dass der Mittelpunkt des Objektes in den Ursprung verlegt wird:

\(T = \left( {\begin{array}{*{20}{c} }1&0&{ - 2}\\0&1&{ - 2}\\0&0&1\end{array} } \right)\)

dann kann die Rotation um 90° erfolgen

\(R \cdot T = \left( {\begin{array}{*{20}{c} }0&1&0\\{ - 1}&0&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }1&0&{ - 2}\\0&1&{ - 2}\\0&0&1\end{array} } \right)\)

schließlich wird das Objekt an seinen ursprünglichen Ort zurück verschoben:

\({T^{ - 1} } \cdot R \cdot T = \left( {\begin{array}{*{20}{c} }1&0&2\\0&1&2\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }0&1&0\\{ - 1}&0&0\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }1&0&{ - 2}\\0&1&{ - 2}\\0&0&1\end{array} } \right) = \left( {\begin{array}{*{20}{c} }0&1&0\\{ - 1}&0&4\\0&0&1\end{array} } \right)\)

Daraus folgen nunmehr die neuen Koordinaten der gesuchten Punkte:

\(P1' = {T^{ - 1} } \cdot R \cdot T \cdot P1 = \left( {\begin{array}{*{20}{c} }0&1&0\\{ - 1}&0&4\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }1\\2\\1\end{array} } \right) = \left( {\begin{array}{*{20}{c} }2\\3\\1\end{array} } \right)\) und \(P2' = {T^{ - 1} } \cdot R \cdot T \cdot P2 = \left( {\begin{array}{*{20}{c} }0&1&0\\{ - 1}&0&4\\0&0&1\end{array} } \right) \cdot \left( {\begin{array}{*{20}{c} }3\\2\\1\end{array} } \right) = \left( {\begin{array}{*{20}{c} }2\\1\\1\end{array} } \right)\)

Rotation mittels Matrix

3D-Transformationen

Grundsätzlich gelten für 3D-Operationen die gleichen Betrachtungen wie für 2D. Auch hier ist die Anwendung der homogenen Koordinaten angebracht, da auch hier die Vereinheitlichung der Operationen mit nur einem Matrix-Komplex ökonomische Vorteile hat. Dennoch: es gibt Unterschiede in der Betrachtung der 2D- und 3D-Transformationen. Die wichtigsten Unterschiede sind:

a) die Rotation in 2D, die sich auf eine Rotation um den Ursprung reduzieren ließ, ist in 3D nunmehr eine zusammengesetzte Operation um die Achsen des dreidimensionalen Raumes und

b) 3D-Objekte sind auf einem 2D-Bildschirm nicht direkt darstellbar.

Orientierung

Für die Orientierung im Raum ist es zweckmäßig, mit einem System von Richtungsvorgaben zu arbeiten. Als Gedankenstütze verwende man die Rechte-Hand-Regel:

Rotationen um eine der Achsen werden als positiv angesehen, wenn sie den in der folgenden Abbildung gezeigten Orientierungen folgen.

Orientierung Matrix Abbildung 22

Die verwendeten Bezeichnungen stammen aus der Schifffahrt: Die z-Achse entspricht dabei dem Mast eines Seglers und die x-Achse verläuft parallel zum Schiffsrumpf in Fahrtrichtung. Bezeichnungen sind Gier, Roll und Nick.

Bezeichnungen Schifffahrt: Gier, Roll und Nick Abbildung 23

Transformationen

Im homogenen Koordinatensystem werden dreidimensionale Objekte durch vierzeilige Spaltenvektoren bzw. Transformationen durch 4x4-Matrizen dargestellt. Analog zu den Transformationen in 2D werden die Transformationen

Translation:

\( T = \left( {\begin{array}{*{20}{c} }1&0&0&{ {t_x} }\\0&1&0&{ {t_y} }\\0&0&1&{ {t_z} }\\0&0&0&1\end{array} } \right) \quad \text{ bzw. } \quad {T^{ - 1} } = \left( {\begin{array}{*{20}{c} }1&0&0&{ - {t_x} }\\0&1&0&{ - {t_y} }\\0&0&1&{ - {t_z} }\\0&0&0&1\end{array} } \right) \) Gl. 237

Skalierung:

\( S = \left( {\begin{array}{*{20}{c} }{ {s_x} }&0&0&0\\0&{ {s_y} }&0&0\\0&0&{ {s_z} }&0\\0&0&0&1\end{array} } \right) \quad \text{ bzw. } \quad {S^{ - 1} } = \left( {\begin{array}{*{20}{c} }{\frac{1}{ { {s_x} } } }&0&0&0\\0&{\frac{1}{ { {s_y} } } }&0&0\\0&0&{\frac{1}{ { {s_z} } } }&0\\0&0&0&1\end{array} } \right) \) Gl. 238

Scherung:

Die Scherung erfolgt in 3D nicht mehr entlang einer Achse sondern einer Fläche, die durch zwei Achsen aufgespannt wird. Da es drei solche Flächen gibt, sind auch drei elementare Scherungen möglich:

\( S{h_{xy} } = \left( {\begin{array}{*{20}{c} }1&0&{ {a_x} }&0\\0&1&{ {a_y} }&0\\0&0&1&0\\0&0&0&1\end{array} } \right) \quad S{h_{yz} } = \left( {\begin{array}{*{20}{c} }1&0&0&0\\{ {a_y} }&1&0&0\\{ {a_z} }&0&1&0\\0&0&0&1\end{array} } \right) \quad S{h_{xz} } = \left( {\begin{array}{*{20}{c} }1&{ {a_x} }&0&0\\0&1&0&0\\0&{ {a_z} }&1&0\\0&0&0&1\end{array} } \right) \) Gl. 239

Wobei Shxy eine Scherung parallel zur xy-Ebene (Abbildung 24), Shyz eine Scherung parallel zur yz-Ebene und Shxz eine Scherung parallel zur xz-Ebene bedeuten.

Scherung parallel zur xy-Ebene Abbildung 24

Rotation:

Auch bei der Rotation haben sich die Verhältnisse verkompliziert. In 3D gibt es ebenfalls drei elementare Rotationen um die einzelnen Achsen des Koordinatensystems:

\( {R_z} = \left( { \begin{array}{*{20}{c} } {\cos \alpha }&{ -\sin \alpha }&0&0 \\ {\sin \alpha }&{\cos \alpha}&0&0 \\ 0&0&1&0 \\ 0&0&0&1 \end{array} } \right) \) Gl. 240

Die Rotation um die z-Achse entspricht der 2D-Rotation um den Ursprung, in den die z-Achse projiziert vorgestellt werden kann.

\({R_x} = \left( {\begin{array}{*{20}{c} }1&0&0&0\\0&{\cos \beta }&{ - \sin \beta }&0\\0&{\sin \beta }&{\cos \beta }&0\\0&0&0&1\end{array} } \right)\) Gl. 241

\( {R_y} = \left( {\begin{array}{*{20}{c} }{\cos \gamma }&0&{\sin \gamma }&0\\0&1&0&0\\{ - \sin \gamma }&0&{\cos \gamma }&0\\0&0&0&1\end{array} } \right) \) Gl. 242

Rz ist die Rotation um den Winkel a um die z-Achse, Rx die Rotation um den Winkel b um die x-Achse und Ry die Rotation um den Winkel g um die y-Achse (Abbildung 25).

Rotation um den Winkel Abbildung 25

Betrachtung von 3D-Objekten

Die einfachste Darstellung eines 3D-Objektes auf eine 2D-Oberfläche ist die Projektion des 3D-Objektes auf die xy-Ebene. Mit anderen Worten: Das Objekt wird im 3D-Raum korrekt in allen Koordinaten berechnet. Anschließend werden nur die x- bzw. y-Koordinaten dargestellt.

Abbildung 26 zeigt einen Würfel (die Vorderseite ist durch zwei sich kreuzende Linien gekennzeichnet). Der Würfel wurde vor der Darstellung in der xy-Ebene um die x-Achse (-11,25°) und die y-Achse (22,5°) rotiert. Dabei entsteht, wie die Abbildung zeigt, ein räumliches Gebilde, das aber nicht perspektivisch verzerrt ist. Das entspricht nicht den Sehgewohnheiten und wird daher als unnatürlich empfunden.

Darstellung Würfel in xy-Ebene Abbildung 26

Eine verbesserte Darstellung ergibt sich mit der Einführung einer perspektivischen Verzerrung des Objektes. Die Erfahrung lehrt, dass die Perspektive vom Blickwinkel und der Entfernung des Beobachters vom Objekt abhängig ist. Dem wird durch die Einführung eines „Kamerastandortes“ und einer „Kamerabrennweite“ Rechnung getragen. Der Kamerastandort ist parallel zur z-Achse verschiebbar (Distance d). Sollten auch Winkelvariationen gewünscht sein, werden diese den jeweiligen Rotationswinkeln des Objektes additiv zugeschlagen.

Das ist erlaubt, da Kamerabewegung und Objektbewegung relativ zueinander erfolgen und es dem Beobachter nicht möglich ist, beide Bewegungen voneinander zu trennen. Für die abstandsrichtige Darstellung eines Objektes ist also die Translation des Objektes parallel zur z-Achse genügend:

\( D = \left( {\begin{array}{*{20}{c} }1&0&0&0\\0&1&0&0\\0&0&1&d\\0&0&0&1\end{array} } \right) \) Gl. 243

Komplexer ist die perspektivisch bedingte Verzerrung des Objektes in der Tiefe. Offenbar verjüngt sich das wahrgenommene Objekt mit zunehmender Entfernung vom Betrachter. Das hat seine Ursache darin, dass im Auge des Betrachters Höhe und Breite eines Objektes winkelproportional auf der Netzhaut abgebildet werden:

Betrachter, Bildebene und wahrgenommene Objekthöhe Abbildung 27

Nach Abbildung 27 ergibt sich die wahrgenommene Objekthöhe h´ aus dem Verhältnis von Brennweite f zu Objektentfernungz multipliziert mit der wirklichen Objekthöhe h:

\( h':h = f:z \) Gl. 244

In der Metrizenwelt stellt sich diese Operation als eine Skalierung des Objektes dar, die von der Objekttiefe z abhängt:

\( s(z) = \frac{f}{z} \) Gl. 245

D.h. zunächst wird das Objekt einschließlich der vom Kamerastandort herrührenden Verschiebung in der Tiefe berechnet. Dann kann die Tiefe z jedes Objektpunktes getrennt bestimmt werden, die wiederum zu einer individuellen Skalierung gemäß Gl. 245 führt:

\( S = \left( {\begin{array}{*{20}{c} } {s(z)} & 0 & 0 & 0 \\ 0 & {s(z)} & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} } \right) \) Gl. 246

Anschließendes Ausmultiplizieren der Vektoren mit der Skalierungsmatrix führt dann zum Endergebnis:

Würfel in xy-Ebene mit Skalierungsmatrix Abbildung 28

Abbildung 28 zeigt das gleiche Objekt wie in Abbildung 26, allerdings aus einer Entfernung von 10 Einheiten bei einer Brennweite von ebenfalls 10 Einheiten.

  Schreib uns deine Hinweise