Если я правильно понял, вы можете сделать это, применяя фиксированное смещение к координатам.Смещение - это центр, вокруг которого вы хотите повернуть.
int oldSpace[][] = new int[20][10];
int newSpace[][] = new int[20][10];
int offX = 10;
int offY = 5;
for(int x = -5; x < 5; x++) {
for(int y = -5; y < 5; y++) {
newSpace[offX+x][offY+y] = oldSpace[offX-y][offY+x];
}
}
Я предположил, что 20 - это измерение X, а 10 - измерение Y.Это вращает блок 10x10 вокруг координаты (10,5).Обратите внимание, что я только повернул блок 10x10 в середине, так как это пересечение двух пространств.Возможно, вы копируете массив [20] [10] в массив [10] [20], и в этом случае вы можете увеличить диапазон y, чтобы он работал от -10 до 9.
EDIT:Извините, вам также нужен другой набор смещений, если у вас есть выходной массив другой формы, так как (10,5) больше не будет в центре.Но вы должны быть в состоянии понять это.