Benutzer-Werkzeuge

Webseiten-Werkzeuge


bilder_rotieren

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
bilder_rotieren [2024/01/20 11:15] torsten.roehlbilder_rotieren [2024/02/07 08:23] (aktuell) torsten.roehl
Zeile 12: Zeile 12:
  
  
-|FIXME|FIXME+{{ :inf:java:smiley00.png?150 |}} |{{ :inf:java:smiley45.png? |}}
-|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. |+|Das originale Bild ist hier Quadratisch mit ''222x222'' Pixeln.|Das Bild wurde um 45° Grad im Uhrzeigersinn gedreht. Damit das komplette Bild sichtbar ist muss es jetzt ''314x314'' Pixel  groß sein. |
  
  
Zeile 43: Zeile 43:
  
 \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} \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 ==== 
  
 +{{:inf:sample.gif?|}}
 <WRAP center round box 100%> <WRAP center round box 100%>
-**Aufgabe:**\\+{{:inf:aufgabe.gif?|}} 
 Wie lauten die Koordinaten des neuen Bildpunktes bei einer Drehung um **40°**, wenn der alte Bildpunkt **P(10,30)** ist?\\ Wie lauten die Koordinaten des neuen Bildpunktes bei einer Drehung um **40°**, wenn der alte Bildpunkt **P(10,30)** ist?\\
-**Lösung:**\\+ 
 +{{:inf:solution.gif?|}} 
 Für den Sinus und Cosinus ergibt sich: Für den Sinus und Cosinus ergibt sich:
   * sin(40°)=0,643   * sin(40°)=0,643
Zeile 86: Zeile 89:
 Um Bilder zu rotieren, müssen grundsätzlich folgende Schritte abgearbeitet werden. Wir gehen hier davon aus, dass das Bild um seine Bildmitte rotiert werden soll. Um Bilder zu rotieren, müssen grundsätzlich folgende Schritte abgearbeitet werden. Wir gehen hier davon aus, dass das Bild um seine Bildmitte rotiert werden soll.
  
-  - Vom zu rotierenden Bild<color #ff7f27> $\text{Bild}_{\text{ALT}}$</color> werden die  Größe (Breite und Höhe) ermittelt.+  - Vom zu rotierenden Bild<color #ff7f27> $\text{Bild}_{\text{ALT}}$</color> wird die  Größe (Breite und Höhe) ermittelt.
   - Ein leeres Bild <color #7092be>$\text{Bild}_{\text{NEU}}$</color> wird erzeugt.   - Ein leeres Bild <color #7092be>$\text{Bild}_{\text{NEU}}$</color> wird erzeugt.
       * Die neue Größe kann aus der alten Größe ermittelt werden!       * Die neue Größe kann aus der alten Größe ermittelt werden!
Zeile 95: Zeile 98:
       * Die so berechneten Bildkoordinaten werden im  <color #7092be>$\text{Bild}_{\text{NEU}}$</color> gespeichert.        * Die so berechneten Bildkoordinaten werden im  <color #7092be>$\text{Bild}_{\text{NEU}}$</color> gespeichert. 
  
-<note>Hierbei ist zu beachten, dass Bildkoordinaten **integer** Werte sind und die Transformation in der Regel **double** Werte ergibt. Grundsätzlich sollte man immer mit **double** rechnen. Nur beim Lesen der Bildkoordinaten und bei der Umrechnung in Bildkoordinaten müssen integer Werte verwendet werden.</note>+<note>Hierbei ist zu beachten, dass Bildkoordinaten **integer** Werte sind und die Transformation in der Regel **double** Werte ergibt. Grundsätzlich sollte man immer mit **double** rechnen. Nur beim Lesen der Bildkoordinaten und beim Schreiben in Bildkoordinaten müssen integer Werte verwendet werden. 
 +</note>
  
  
  
-==== Koordinaten toScreen and fromScreen ==== +=== fromScreen === 
-  Bildkoordinaten haben ihren Ursprung oben links. +|<color #ff7f27>Bildkoordinaten</color>|//fromScreen// →   |<color #7092be>kartesische Koordinaten</color>
-          besitzen nur** positive integer Werte**+ 
 + 
 +Mit **fromScreen** bezeichnen wir eine Java-Methode, die Bildkoordinaten in (mathematisch) kartesische Koordinaten  transformiert.
   * Kartesische Koordinaten, sind in der Regel** vorzeichenbehaftete double Werte**.   * Kartesische Koordinaten, sind in der Regel** vorzeichenbehaftete double Werte**.
           * häufig ist der Koordinatenursprung in der Mitte des Bildes überaus zweckmäßig.           * häufig ist der Koordinatenursprung in der Mitte des Bildes überaus zweckmäßig.
 + 
  
 === toScreen === === toScreen ===
Zeile 110: Zeile 117:
  
 Mit **toScreen** bezeichnen wir eine Java-Methode, die (mathematisch) kartesische Koordinaten in Bildkoordinaten transformiert. Mit **toScreen** bezeichnen wir eine Java-Methode, die (mathematisch) kartesische Koordinaten in Bildkoordinaten transformiert.
 +  * Bildkoordinaten haben ihren Ursprung (0|0) oben links und  besitzen nur positive integer Werte
  
-=== fromScreen === 
-|<color #ff7f27>Bildkoordinaten</color>|//fromScreen// →   |<color #7092be>kartesische Koordinaten</color>| 
  
  
-Mit **fromScreen** bezeichnen wir eine Java-Methode, die Bildkoordinaten in (mathematisch) kartesische Koordinaten  transformiert.+===== Herleitung der Transformationsgleichung: ===== 
 +Wir leiten jetzt die im vorherigen Abschnitt angegeben Transformationsgleichungen her. 
 +==== Voraussetzungen ====
  
  
-===== Herleitung der Transformationsgleichung: ===== +Damit die Herleitung nachvollzogen werden kann, werden lediglich die Additionstheoreme für Sinus und Kosinus benötigt. 
-==== Herleitung ====+
  
  
 +  * cos(φ + α ) = cos(φ)·cos(α) - sin(φ)·sin(α)
 +  * sin(φ + α )  = sin(φ)·cos(α) + cos(φ)·sin(α) 
 +
 +Eine einfache Herleitung dieser Formel kann mit Hilfe der komplexen Zahlen (Eulerformel) erfolgen. Für unsere Zwecke ist es  aber ausreichend, sie in das Gedächtnis gerufen zu haben.
 +==== Herleitung ====
 +
 +|{{:inf:java:rot2d.png?320|}} | {{:inf:java:cossin.png?170|}}|
 +|Der rote Punkt wird bei einer Drehung um den Winkel φ in den blauen Punkt überführt (transformiert). |Die oben stehenden Formeln lassen sich direkt aus dem Bild ablesen. \\ **Schauen Sie sich beides solange an, bis ihnen das gelingt!** |
 +|<WRAP>Ausgehend von den Addtionstheoremen für Cosinus und Sinus, werden zuerst cos(α) bzw. sin(α) durch ihre rechten Seiten ersetzt.\\ \\  Jetzt ersetzen wir
 +sin(φ+α) bzw. cos(φ+α) durch ihre rechten Seiten. \\ \\ \\ \\ Der Radius r kürzt sich heraus.</WRAP> | {{:inf:java:herleitung.png?330|}}|
 +| Damit sind die oben angegebenen Transformationsgleichungen gefunden. :-) ||
  
  
  
  
bilder_rotieren.1705749339.txt.gz · Zuletzt geändert: 2024/01/20 11:15 von torsten.roehl