shineSparkz
shineSparkz

Reputation: 55

Rotating a 2D converted 1D array 90 degrees clockwise

Been stuck on this a few days now, I'm going out my mind. Essentially I have converted a 2D array of values (an image, I know there are easier ways to achieve this but I have explicit requirements) into a 1D array. I can rotate the 2D array with ease. I'm having trouble with the rotating of the 1D version of the array, and I think it's down to a single line of algorithm being incorrect. The code I'm using for rotating the array is:

cout << "\nTransfer from 2D to dynamic 1D array and print details\n\n";
myImage * p_myImage = new myImage[total];

    for (int y = 0; y < height; y++)
{
    for (int x = 0; x < width; x++)
    {
        int offset = width * y + x;
        p_myImage[offset].pixel = array2D[y][x];
        cout << p_myImage[offset].pixel << " ";
    }
  cout << "\n";
}

//new pointer to copy to
myImage * p_myImage2 = new myImage[total];
cout << "\nRotate Matrix through 1D array\n\n";

for (int x = 0; x < width; x++)
{
    for (int y = 0; y < height; y++)
    {
        int offset = height * x + y;
        //int offset = width * y + x ;
        p_myImage2[offset].pixel = p_myImage[height-1+x].pixel;
        cout << p_myImage2[offset].pixel << " ";
    }
  cout << "\n";
}

Upvotes: 0

Views: 2595

Answers (1)

ghembo
ghembo

Reputation: 420

This should rotate it clockwise:

p_myImage2[offset].pixel = p_myImage[width * (height - 1 - y) + x].pixel;

Upvotes: 2

Related Questions