Denkanstoß: Drehen eines Bildes (Matrix)

Status
Nicht offen für weitere Antworten.

August Stark

Mitglied
Hi,

ich brauche einen Denkanstoß zu folgendem Problem.

Ich habe ein Bild in Form einer Matrix vom selbsterstellten Typ RGBColor[][].

RGBColor[17][129] gibt beispielsweise ein Element vom Typ RGBColor aus, dass aus drei Integers besteht (Red, Green, Blue), die jeweils von 0 bis 255 gehen.

Bei RGBColor[j] gibt i die Breite und j die Höhe des Bildes an.

Mir liegt ein Bild vor, dass die Breite 332 und die Höhe 385 hat.

Dieses Bild ist um 90° im Uhrzeigersinn zu drehen. (In einer zweiten Aufgabe um 180°).

Zwar kriege ich es hin aus diesem Bild ein neues Bild zu erzeugen, bei dem immerhin die Breiten- und Höhenwerte vertauscht sind (neuesBild[j] = altesBild[j]). Den Dreheffekt von 90° nach rechts bekomme ich aber nicht hin.

Ich würde mich sehr freuen wenn mir jemand dazu einen Denkanstoß bzw. einen Lösungsansatz geben könnte. Ich habe schon etwas darüber nachgedacht, die Sache mit Matrizentransformation anzugehen aber...sagen wir einfach, dass Lineare Algebra nie meine Stärke war, so dass ich da noch nichts gefunden habe, was ich verwenden konnte. ;-)
 
Du kannst doch einfach das Graphics Objekt das du zum Zeichnen verwendest drehen. Graphics2D#rotate
 
Hi,

ich fürchte das geht nicht so einfach:

Die Zeile:

this.picture = this.picture.rotate(90.0);

ergibt die Meldung:

Cannot invoke rotate(double) on the array type RGBColor[][]
 
Ähnliche Fragen aren neulich shcon ein paar. Das ist wohl eine Hausaufgabe irgendwo. Aber...
ein neues Bild zu erzeugen, bei dem immerhin die Breiten- und Höhenwerte vertauscht sind (neuesBild[j] = altesBild[j])
wenn du das für alle i und j richtig machst (und nicht nur für die Größe, beim Anlegen), ist die Aufgabe ja eigentlich schon gelöst :wink:
 
Marco13 hat gesagt.:
Ähnliche Fragen aren neulich shcon ein paar. Das ist wohl eine Hausaufgabe irgendwo. Aber...
ein neues Bild zu erzeugen, bei dem immerhin die Breiten- und Höhenwerte vertauscht sind (neuesBild[j] = altesBild[j])
wenn du das für alle i und j richtig machst (und nicht nur für die Größe, beim Anlegen), ist die Aufgabe ja eigentlich schon gelöst :wink:


Ich kriege zwar ein Bild heraus, das ist aber falsch gespiegelt. Mein Problem ist eben, dass ich nicht genau weiß, wie die i und j in der neuen Matrix angeordnet sein müssen.
 
Hi,

ich bin jetzt selbst daruf gekommen. Zum Glück musste ich da nicht mit der Linearen Algebra ran, sondern es hat gereicht i und j beim Schreiben der neuen Matrix etwas zu manipulieren.

Danke an alle für die Tipps.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben