листать многомерный массив Java

У меня есть класс, который создает холст символов с желаемой шириной и высотой.

в этом у меня есть метод drawLetter () (который в основном меняет символы так, что на холсте появляется буква (как очень простая ASCII-графика)

у меня есть 3 других метода rotateClockwise, flipHor horizontal, и flipVertical

повернуть и перевернуть по горизонтали у меня все хорошо, и они работают, но я не могу понять, где я ошибаюсь, переворачивая массив по вертикали (из интереса я думаю, что у меня горизонтальное и вертикальное неправильное направление, но я плохо поставил образец того, что я пытаюсь чтобы было сделано ниже)

это то, что я не могу выработать:

это:

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

к этому:

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

очевидно, это будет сделано в цикле for, как и другие мои методы, ниже я опубликую метод, который я уже сделал для горизонтального и повернуть по часовой стрелке, чтобы доказать, что это не домашняя работа, которую я не могу сделать

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 - исходное изображение из интереса в переменной класса char [] []

Ответы на вопрос(1)

Ваш ответ на вопрос