Я пытался работать с файлами PGM на C ++, получать их негативы и т. Д. Теперь, когда я начал вращаться, у меня был грубый псевдокод о том, как мы будем вращать матрицу, вот результат для числовой матрицы:
Проверка повернутой матрицы
На бумаге это кажется правильным.Теперь, когда я применяю тот же алгоритм для поворота изображений, он корректно работает только на квадратном изображении (т.е. с одинаковой высотой и шириной):
Повернутое квадратное изображение
Но напрямоугольные изображения, это дает такой результат:
Повернутое изображение прямоугольника
Вот код:
void loadRotMatrix()
{
//transpose of matrix
for(int i=0;i<cols;i++)
{
for(int j=0;j<rows;j++)
{
rotatedmatrix[i][j] = matrix[j][i];
}
}
//flipped transposed
for(int i=0;i<rows;i++)
{
int temp =0;
for(int j=0,k=cols-1;j<k;j++,k--)
{
temp=rotatedmatrix[j][i];
rotatedmatrix[j][i]=rotatedmatrix[k][i];
rotatedmatrix[k][i]=temp;
}
}
}
Теперь я не могу для жизнимоего расшифровки, что здесь происходит и что превращает мою собаку в цербер: p