Ich habe einen Code geschrieben, um dieses Problem zu lösen.Flatindexed 2D Array - Spiegeln eines Bildes vertikal/horizontal
Ich habe ein Programm gegeben, um ein Bild, grau skaliert mit X11 zu zeichnen.
Ich wurde gebeten, eine Funktion zu schreiben, um das Bild horizontal/vertikal zu spiegeln.
Hier ist mein Code-Schnipsel
// flip the image, left-to-right, like in a mirror.
void flip_horizontal(uint8_t array[],
unsigned int cols,
unsigned int rows)
{
int i;
int j;
for (i=0; i<rows;i++)
{
for (j=0; j<cols;j++)
{
array[rows*i+j]=array[rows*i+(cols-1-j)];
}
}
}
// flip the image top-to-bottom.
void flip_vertical(uint8_t array[],
unsigned int cols,
unsigned int rows)
{
int i=0;
int j=0;
for (i=0; i<rows;i++)
{
for (j=0; j<cols;j++)
{
array[rows*i+j]=array[rows*(rows-1-i)+j];
}
}
return;
}
Das Problem, das ich habe, ist, ist, dass meine horizontale Funktion das Bild nur halb Flips, die andere Hälfte behält ihre ursprünglichen Werte zurück.
Meine vertikale Flip-Funktion ist auch ein Durcheinander und das erzeugte Bild sieht überhaupt nicht so aus, wie es sollte, also versuche ich zu debuggen, wo ich einen Fehler in der Logik zum Schreiben der Funktionen gemacht habe.
Ich verwende die Flat-Index-Methode für den Zugriff auf 2D-Array-Werte.
In C '=' bedeutet nicht "swap". Und selbst wenn das der Fall war, hast du den klassischen "word reverse" -Brüll gemacht, die Buchstaben getauscht und sie wieder getauscht. –
Flat-Index: 'Array [Zeilen * i + j]' -> 'Array [Spalten * i + j]' –