2016-03-23 3 views
0

У меня есть код для перетаскивания 32 х 32-пиксельной матрицы, но я понятия не имею, как перевернуть его по горизонтали.Переверните матрицу пикселей по горизонтали

Код для вертикального отображения.

for (int i = 0; i < pixels.length; i++) { 
     newPixels[(i/32) * 32 
       + (i % 32)] = pixels[(32 - (i/32) - 1) * Grid.SIZE + (i % 32)]; 
} 

С 32 ширина и высота, она идет во всех тех местах

+1

Это очень странно. '(i/32) * 32 + (i% 32)' - просто запутанный способ сказать 'i'. Можете ли вы объяснить этот вопрос более подробно? –

ответ

1
int imageWidth = 32; 
for (int i = 0; i < pixels.length; i++) { 
    newPixels[i] = pixels[i - 2 * (i % imageWidth) + imageWidth - 1]; 
} 

Индекс используется сумма (i/imageWidth) * imageWidth = i - (i % imageWidth) (смещение для линии) и imageWidth - (i % imageWidth) - 1 (положение x, отраженное в центре)