この問題を解決するためのコードを書きました。Flatindexed 2D配列 - 画像を縦方向/横方向に反転する
私は、X11を使ってグレイスケール画像を描画するプログラムを与えられました。
私は画像を水平/垂直に反転させる機能を記述するように求められました。ここで
は私のコードスニペットは、
// 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;
}
私がいる問題がされている私の横の機能は、画像の半分だけの道を反転させ、残りの半分は元の値を保持することです。
私の垂直フリップ機能も混乱していて、生成されたイメージはまったく同じではないので、私は関数を書くロジックを間違えたところでデバッグしようとしています。
私は2D配列値にアクセスするためにフラットインデックスメソッドを使用しています。
C '='では、「スワップ」を意味しません。たとえそれがあったとしても、あなたは古典的な「単語逆」の鳴き声を作り、文字を入れ替えて再び入れ替えました。 –
フラットインデックス: 'array [rows * i + j]' - > 'array [cols * i + j]' –