Homogene Koordinaten

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Racine carrée bleue.svg
Dieser Artikel wurde auf der Qualitätssicherungsseite des Portals Mathematik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Mathematik auf ein akzeptables Niveau zu bringen.

Bitte hilf mit, die Mängel dieses Artikels zu beseitigen, und beteilige dich bitte an der Diskussion! (Artikel eintragen)

In der projektiven Geometrie werden homogene Koordinaten verwendet, um Punkte in einem projektiven Raum durch Zahlenwerte darzustellen und damit geometrische Probleme einer rechnerischen Bearbeitung zugänglich zu machen. Homogene Koordinaten wurden 1827 in dem Spezialfall baryzentrischer Koordinaten (oder Dreieckskoordinaten) von August Ferdinand Möbius eingeführt.

So können die Punkte des reellen projektiven dreidimensionalen Raumes (der übliche dreidimensionale euklidische Raum einschließlich der Punkte im Unendlichen) (y_1, y_2, y_3) durch vier homogene Koordinaten dargestellt werden (x_0, x_1, x_2, x_3) mit y_i=\frac {x_i}{x_0} (i = 1,2,3). Die Koordinaten mit x_0=0 entsprechen den Punkten im Unendlichen. Alle homogenen Koordinaten \lambda x = (\lambda x_0, \lambda x_1, \lambda x_2, \lambda x_3) mit \lambda ungleich null stellen denselben Punkt dar.

Darstellung durch homogene Koordinaten[Bearbeiten]

Punkte im n-dimensionalen projektiven Raum lassen sich durch Identifizierung der Punkte auf Geraden durch den Ursprung im (n+1)-dimensionalen Raum über dem Körper K konstruieren. Es sei x=(x_0,x_1,\dotsc,x_n) \in K^{n+1}\backslash\{0\} gegeben. Die Menge \{(\lambda x_0,\lambda x_1,\dotsc,\lambda x_n)|\lambda\in K\backslash\{0\}\} ist die Gerade durch 0 und x ohne den Ursprung und wird in homogenen Koordinaten durch [x_0:x_1:\dotsb:x_n] beschrieben. → Ausführlicher wird die Verwendung homogener Koordinaten im Hauptartikel „Projektives Koordinatensystem“ dargestellt.

Allgemein gilt für homogene Koordinaten, dass zugehörige Punkte P und \lambda P miteinander identifiziert werden (für ein \lambda \neq 0).

Homogene Matrizen[Bearbeiten]

Rotation, Skalierung und Scherung eines dreidimensionalen, räumlichen Objektes lassen sich je durch eine 3 \times 3-Matrix beschreiben, eine Translation des Objektes dagegen durch einen 3 \times 1-Vektor. Hinderlich ist dabei, dass die drei erstgenannten Operationen eine Matrizenmultiplikation erfordern, die Translation hingegen eine Vektoraddition.

Um eine Translation ebenfalls als Matrixoperation berechnen zu können, wird der Raum um eine weitere Dimension erweitert. Eine Translation im dreidimensionalen Raum lässt sich nun durch eine Matrizenmultiplikation mit einer 4 \times 4-Matrix beschreiben.

Die Transformation von kartesischen Koordinaten zu homogenen Koordinaten erfolgt durch:


  \left( x,y,z\right)^{T}
  \mapsto
  \left( x,y,z,1 \right)^{T}

Die Abbildung eines Punktes P_{x,y,z} von einem Koordinatensystem in ein anderes geschieht durch die Multiplikation mit der homogenen Matrix \underline{M}:


(x',y',z',w')^{T} = \underline{M}_{4 \times 4} 
	\cdot (x,y,z,w)^{T}

Aufgrund der Assoziativität von Matrizenmultiplikationen können mehrere aufeinanderfolgende Multiplikationen zu einer einzigen Gesamtmatrix \underline{M} zusammengefasst werden.

Die fehlende Kommutativität bedingt, dass die Reihenfolge der Objektmanipulationen von Bedeutung ist. Anschaulich lässt sich dies so interpretieren, dass es einen Unterschied macht, ob in einem lokalen Bezugssystem ein Objekt zuerst entlang einer Achse verschoben und dann im neuen lokalen Bezugssystem rotiert wird, oder ob ein Objekt zuerst rotiert und dann das Objekt in der gleichen Richtung des nun mitrotierten lokalen Bezugssystems in eine neue Richtung in Bezug auf Weltkoordinaten verschoben wird.

Eine Rücktransformation von homogenen Koordinaten in kartesische Koordinaten erlaubt es, auch die perspektivische Abbildung durch eine Matrix zu beschreiben:


\left( x',y',z',w'\right)^{T} 
  \mapsto
  \left( \frac{x'}{w'}, \frac{y'}{w'}, \frac{z'}{w'} \right)^{T} =
  (x'',y'',z'')^{T}

Die Koordinaten x'' und y'' können bereits als Bildschirmkoordinaten verwendet werden. z'' gibt die Distanz des transformierten Punktes vom virtuellen Bildschirm an und wird im Z-Buffer (Tiefenpuffer) gespeichert. Eine perspektivische Abbildung führt dazu, dass die Gesamtmatrix singulär wird und nicht mehr invertiert werden kann.

Wichtige elementare homogene Transformationsmatrizen[Bearbeiten]

Translation: \underline{T} =  
\begin{pmatrix}
  1 & 0 & 0 & t_{x} \\
  0 & 1 & 0 & t_{y} \\
  0 & 0 & 1 & t_{z} \\
  0 & 0 & 0 & 1
\end{pmatrix}
 \underline{T} \cdot (x,y,z,1)^T = (x+t_x, y+t_y, z+t_z,1)^T
Rotation um x-Achse: \underline{R_{x}} =  
\begin{pmatrix}
  1     & 0           & 0            & 0 \\
  0     & \cos \alpha & -\sin \alpha  & 0 \\
  0     & \sin \alpha & \cos \alpha  & 0 \\
  0     & 0           & 0            & 1
\end{pmatrix}
Rotation um y-Achse: \underline{R_{y}} =  
\begin{pmatrix}
  \cos \beta     & 0           & \sin \beta            & 0 \\
  0     & 1 & 0  & 0 \\
  -\sin \beta     & 0 & \cos \beta  & 0 \\
  0     & 0           & 0            & 1
\end{pmatrix}
Rotation um z-Achse: \underline{R_{z}} =  
\begin{pmatrix}
  \cos \gamma     &  -\sin \gamma  & 0 & 0\\
  \sin \gamma     & \cos \gamma   & 0 & 0 \\
  0     & 0       & 1           & 0 \\
  0     & 0       & 0           & 1
\end{pmatrix}
Skalierung: \underline{S} =  
\begin{pmatrix}
  s_{x} & 0     & 0     & 0 \\
  0     & s_{y} & 0     & 0 \\
  0     & 0     & s_{z} & 0 \\
  0     & 0     & 0     & 1
\end{pmatrix}
 \underline{S} \cdot (x,y,z,1)^T = (s_x \cdot x, s_y \cdot y, s_z \cdot z,1)^T
Perspektivische Projektion (auf XY-Ebene): \underline{P} =  
\begin{pmatrix}
  1	& 0     & 0     & 0 \\
  0     & 1     & 0     & 0 \\
  0     & 0     & 0     & 0 \\
  0     & 0     & \frac{1}{d} & 1
\end{pmatrix}
 \underline{P} \cdot (x,y,z,1)^T = ( x, y, 0, \tfrac{z+d}{d})^T
Orthogonale Projektion: \underline{P_{\mathrm{orth}, z=0}} =  
\begin{pmatrix}
  1	& 0     & 0     & 0 \\
  0     & 1     & 0     & 0 \\
  0     & 0     & 0     & 0 \\
  0     & 0     & 0     & 1 
\end{pmatrix}
 \underline{P_{\mathrm{orth}, z=0}} \cdot (x,y,z,1)^T = (x, y, 0, 1)^T

Beispiel[Bearbeiten]

Die Rotation um einen Punkt Q{(t_{x},t_{y},t_{z})} und eine perspektivische Abbildung mit dem Abstand d zwischen Betrachterauge und Projektionsebene kann durch eine einzige Matrix \underline{M} beschrieben werden. Zuerst wird der Ursprung des lokalen Koordinatensystems in den Punkt Q mittels \underline{T}^{-1} verschoben. Danach erfolgt die Rotation \underline{R}. Anschließend wird das Koordinatensystem wieder in den anfänglichen Ursprung zurückverschoben mittels \underline{T}. Die perspektivische Abbildung erfolgt durch \underline{P}. Zusammengefasst entsteht dabei die Matrix 
\underline{M} = 
\underline{P} \cdot 
\underline{T} \cdot 
\underline{R} \cdot 
\underline{T}^{-1}
, wobei die Matrizen von links operieren, also von rechts nach links nacheinander auf einen ganz rechts stehenden Ortsvektor angewandt werden.

Anwendungen[Bearbeiten]

Homogene Koordinaten erlauben die Darstellung von affinen Transformationen durch eine Multiplikation des Koordinatenvektors mit Matrizen in einfacher Weise. Zum Beispiel lässt sich eine Skalierung und anschließende Verschiebung aller Punkte x einer 2D-Ebene

x_{\text{transformed}} = \underline{M}_{2 \times 2} 
	\cdot x + b

in homogenen Koordinaten

{x'}_{\text{transformed}} = \underline{M}'_{3 \times 3} 
	\cdot {x'}

linear ausdrücken (M' enthält hier b), indem das Problem in einen um eine Dimension höheren Raum transformiert wird (wie etwa auch bei der projektiven Geometrie). Inhomogene Gleichungssysteme werden so homogen und können mit anderen Methoden oder effizienteren Algorithmen gelöst werden.

Homogene Koordinaten dienen häufig zur Umrechnung von Koordinatensystemen. Um Rundungsfehler zu vermeiden und Berechnungsaufwand massiv zu reduzieren, ist es vorteilhaft, mehrere aufeinander folgende Matrixtransformationen (Translation, Drehung, Streckung, Scherung) zu einer einzigen Transformationsmatrix zusammenzufassen.

Die Seitenbeschreibungssprache PostScript beispielsweise erlaubt es, das Koordinatensystem zu verschieben und zu rotieren. Solche Transformationen können von einem PostScript-Interpreter wie z. B. Ghostscript oder der Drucker-Software am einfachsten über homogene Koordinaten gehandhabt werden.

Auch in der 3D-Computergrafik wird dies beispielsweise genutzt, um sehr schnell die Koordinaten der Stützpunkte (Vertices) von Dreiecksnetzen aus dem Koordinatensystem eines virtuellen Objektes abhängig von der Bewegung einer virtuellen Kamera in aktuelle Bildschirmkoordinaten umzurechnen. Computergrafik-Schnittstellen wie OpenGL und DirectX arbeiten mit homogenen Koordinaten und führen die Berechnungen weitgehend in der Grafikkarte aus, wenn diese das unterstützt.

In der Robotik lassen sich hintereinanderliegende Achsen durch Verkettung ihrer zugehörigen homogenen Matrizen beschreiben. Hierfür wird als Standardverfahren die Denavit-Hartenberg-Transformation angewandt.

Literatur[Bearbeiten]

  • Albrecht Beutelspacher, Ute Rosenbaum: Projektive Geometrie. 2. Auflage. Vieweg, Wiesbaden 2004, ISBN 3-528-17241-X.
  • C. E. Springer: Geometry and Analysis of Projective Spaces. San Francisco und London, 1964.
  • Frank Klawonn: Grundkurs Computergrafik mit Java. Die Grundlagen verstehen und einfach umsetzen mit Java 3D. 3. Auflage. Vieweg+Teubner, Wiesbaden 2010, ISBN 978-3-8348-1223-0.