odwracanie wielowymiarowej tablicy java

Mam klasę, która tworzy kanwę znaków o pożądanej szerokości i wysokości.

w tym mam metodę drawLetter () (która zasadniczo zmienia znaki tak, że litera pojawia się na płótnie (jak bardzo prosta sztuka ASCII)

Mam 3 inne metody rotateClockwise, flipHorizontal i flipVertical

obracaj i flipHorizontal zrobiłem dobrze i działają, ale wydaje mi się, że nie wiem, gdzie pójdę źle z odwróceniem tablicy w pionie (z ciekawości myślę, że mam poziome i pionowe złą stronę, ale źle próbuję tego, co próbuję zrobić poniżej)

to jest to, czego nie mogę wypracować:

to:

# # # ~
~ # ~ ~
~ # ~ ~
~ ~ ~ ~

do tego:

~ # # #
~ ~ # ~
~ ~ # ~
~ ~ ~ ~

oczywiście będzie to zrobione w pętli for, podobnie jak inne moje metody, poniżej opublikuję metodę, którą zrobiłem już dla poziomej i obracam zgodnie z ruchem wskazówek zegara, aby udowodnić, że nie jest to zadanie domowe

void mirrorHorizontally()
{
    char[][]horizontalImage = new char[height][width];

    for (int i = 0; i < height /2; i++)
    { 
       for(int j = 0; j < width; j++)
       {  
           horizontalImage[height - (i+1)][j] = canvasArray[i][j];           
           horizontalImage[i][j] = canvasArray[height - (i+1)][j];
       }
    }   
    printPicture(horizontalImage);
}


void rotateClockwise()
{
    char[][] rotatedImage = new char[height][width];

    for(int i=0; i< canvasArray.length; i++)
    {
        for(int j= canvasArray.length-1; j >= 0; j--)
        {
            rotatedImage[i][rotatedImage.length-1-j] = canvasArray[j][i]; 
        }
    }

    printPicture(rotatedImage);
}

canvasArray jest oryginalnym obrazem, który nie jest interesujący w zmiennej char [] []

questionAnswers(1)

yourAnswerToTheQuestion