1
Wie kann ich ein Bild um 90 Grad (rechts und links) ein eindimensionales Array n-Elemente drehen?C - Drehen Sie ein Bild um 90 Grad (rechts und links) mit einem Array - Bitmap
My Array ist 24-Bit-Bitmap (NxN)
Zum Beispiel meines Array
A[16] = {
1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16}
neuen Array drehen:
{4,8,12,16
3,7,11,15
2,6,10,14
1,5,9,13}
und:
{13,9,5,1,
14,10,6,2,
15,11,7,3,
16,12,8,4}
Was haben Sie versucht? Können Sie herausfinden, wo der Wert in 'A [0] [0]' enden sollte? Was passiert, wenn Sie 'A [0] [0]' mit dieser Zelle tauschen? Was müssen Sie als nächstes tauschen? – StoryTeller
Sie müssen Spalten des Quell-Arrays in Zeilen des Ziel-Arrays oder Zeilen des Quell-Arrays in Spalten des Ziel-Arrays kopieren. Das einzige Problem ist, in welcher Reihenfolge Sie die Dinge tun. Beginnen Sie mit dem Schreiben einer Skelettfunktion, die die Quell- und Ziel-Arrays und deren Größe übergibt. Dann überlegen Sie genau, wie Sie Zeilen in Spalten kopieren. –
Sie haben eine Zuordnung von 2D-Pixel-Koordinaten zu 1D-Array-Indizes. Schreiben Sie dies als eine Funktion der Koordinaten aus. Damit sollten Sie auch eine inverse Funktion schreiben können. Sie haben auch zwei Zuordnungen von 2D Koordinaten zu gedrehten 2D Koordinaten - schreiben Sie diese auch als Funktionen aus. Die gewünschte Transformation ist einfach eine Zusammensetzung von (1D -> 2D), (2D-Rotation), (2D -> 1D); Sie haben für alle diese Formeln geschlossen, so dass Sie in der Lage sein sollten, einen Ausdruck für die gesamte Transformation zu schreiben. –