Benutzer-Werkzeuge

Webseiten-Werkzeuge


bilder_rotieren

Dies ist eine alte Version des Dokuments!


Bilder Rotieren

Dieser Abschnitt zeigt wie sich Bilder um einen beliebigen Winkel φ (sprich PHI) rotieren lassen. Rotation (lat. rotatio: Drehung)

Dieser Abschnitt ist noch nicht komplett fertiggestellt.

Grad- und Bogenmaß

Wenn Bilder um einen Winkel $\varphi$ gedreht (rotiert) werden sollen, muss beachtet werden, dass das rotierte Bild eventuell größer als das originale Bild werden kann.

FIXMEFIXME
Das originale Bild ist hier Quadratisch FIXME.Das Bild wurde um 45° Grad gegen den Uhrzeigersinn gedreht.Damit das komplette Bild sichtbar ist muss es jetzt FIXME groß sein.
  • Wenn Bilder gedreht werden, ist das Drehzentrum in der Regel der Mittelpunkt des Bildes
  • Der wichtigste Parameter bei der Rotation ist der Drehwinkel $\varphi$. Die Drehung erfolgt gegen den Uhrzeigersinn
  • In Java (i.a. in allen Programmiersprachen) werden die Drehwinkel nicht in Grad, sondern in Rad angegeben. Es gilt 360° = 2 $\pi$ rad. Winkel werden also nicht im Gradmaß, sondern im Bogenmaß verwendet.

Für die Umrechnung vom Gradmaß in das Bogenmaß gilt die Beziehung: \begin{equation} \frac{360° }{\text{Winkel im Gradmaß}} == \frac{2 \pi}{\text{Winkel im Bogenmaß}} \end{equation}

Die Transformationsgleichung für die Rotation

Bei der Rotation wird jeder Bildpunkt P(x|y) des Originalbildes in einen neuen Bildpunkt P´(x|y) überführt.

  • mit altem Bildpunkt P( $p_x$ | $p_y$ ) bezeichnen wir die Bildpunkte des originalen Bildes.
  • mit neuem Bildpunkt P' ( $p\prime_x$ | $p\prime_y$ ) werden die transformierten Bildpunkte bezeichnet (P´ lies P Strich).

Gesucht ist eine Transformation, die ausgehend von dem alten Bildpunkt, sowie dem gewünschen Drehwinkel, einen neuen Bildpunkt berechnet.

\begin{equation} \left(\begin{array}{}p\prime_x\\p\prime_y\end{array}\right) = R(\varphi)\cdot \left(\begin{array}{}p_x\\p_y\end{array}\right) \end{equation}

  • in Wortenneuer Bildpunkt = Transformation $R(\varphi)$ · alter Bildpunkt
  • $R(\varphi)$ ist die sogenannte Transformationsmatrix um den Winkel $\varphi$

Transformationsgleichungen

Wir werden an dieser Stelle die Transformation gleich angeben und anschließend an einem Beispiel zeigen, wie man mit ihr arbeitet. Eine Herleitung dieser Gleichungen ist weiter unten angegeben. Die gesuchten Transformationsgleichungen sind:

\begin{equation} \color{blue}{p\prime_x} = cos(\varphi)\cdot \color{red}{p_x} - sin(\varphi) \cdot \color{red}{p_y} \\ \color{blue}{p\prime_y} = sin(\varphi)\cdot \color{red}{p_x} + cos(\varphi) \cdot \color{red}{p_y} \end{equation}

Beispiel

Aufgabe:
Wie lauten die Koordinaten des neuen Bildpunktes bei einer Drehung um 40°, wenn der alte Bildpunkt P(10,30) ist?
Lösung:
Für den Sinus und Cosinus ergibt sich:

  • sin(40°)=0,643
  • cos(40°)=0.766

Eingesetzt in die Transformationsformeln ergibt sich:

  • px´ = 0.766·10 - 0,643·30 = -11,63
  • py´ = 0,643·10 + 0,766·30 = 29,41

Die neuen Koordinaten sind damit P´( -11,63 | 29,41 ).

Java Methode zum Rotieren

Die folgende Java Methode benutzt die Java Klasse Point, um die Transformation zu berechnen.

public Point rotation(Point point, double angle){
 
      Point result = new Point();
 
      double c = Math.cos(angle);
      double s = Math.sin(angle);
 
      result.x = c*point.x - s*point.y;
      result.y = s*point.x + c*point.y;
 
      return result;
}
FIXMEFIXME
Orginal.Das um FIXME Grad gedrehte Bild.

Grundprinzip zum Rotieren von Bildern

Koordinaten toScreen and fromScreen

  • Bildkoordinaten haben ihren Ursprung oben links.
    • besitzen nur positive integer Werte
  • Kartesische Koordinaten, können auch sind in der Regel vorzeichenbehaftete double Werte.
    • häufig ist der Koordinatenursprung in der Mitte des Bildes zweckmäßig.

Herleitung der Transformationsgleichung:

Herleitung

bilder_rotieren.1705747381.txt.gz · Zuletzt geändert: 2024/01/20 10:43 von torsten.roehl