Поворот пикселей на 90/-90 градусов без дополнительного выделения памяти

в настоящее время я использую следующий алгоритм для поворота массива 2d пикселей на 90 градусов, но для этого требуется дополнительное выделение буфера памяти. Есть ли другой способ сделать это без выделения нового всего буфера? А простым способом указать, нужно ли 90 и -90?

 unsigned int *output = (unsigned int*)malloc(inputBufferSize);

 for (int pixel = 0, x = width - 1; x > -1; --x)
 {
     for (int y = 0; y < height; ++y)
     {
         output[pixel++] = input[width * y + x];
     }
 }

person PerracoLabs    schedule 15.05.2013    source источник
comment
Это непростая задача, потому что вращение неквадратных матриц на месте вызывает сложные перестановки элементов. Хотя есть повторяющийся вопрос, у него нет хороших ответов, за исключением ссылки на страницу Википедии о матрице на месте транспонирование, что аналогично. Если вы ищете быстрое решение, его нет. Если вы ищете правильное решение, оно может потребовать изучения и исследований.   -  person Eric Postpischil    schedule 15.05.2013