希望の幅と高さの文字のキャンバスを作成するクラスがあります。
この中に私はメソッドdrawLetter()を持っています(これは基本的に文字を変更して文字がキャンバスに表示されるようにします(非常に単純なASCIIアートのように)
私には他に3つのメソッドrotateClockwise、flipHorizontal、flipVerticalがあります
回転とflipHorizontal私はうまくいきましたが、うまくいきましたが、配列を垂直に反転させるとどこがうまくいかないようです(興味深いことに、水平と垂直が間違った方向にあると思いますが、私が試していることのサンプルを入れてください以下で行うために)
これは私がうまくいかないことです:
これ:
# # # ~
~ # ~ ~
~ # ~ ~
~ ~ ~ ~
これに:
~ # # #
~ ~ # ~
~ ~ # ~
~ ~ ~ ~
明らかに、他の方法と同じように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[][]クラス変数に関係のない元の画像です。