2017-03-16 97 views
1

如何將圖像旋轉90度(右和左)一維數組n元素?C - 使用一個陣列將圖像旋轉90度(右和左) - 位圖

我的陣列是24位位圖(N×N個)

例如,我的數組

A[16] = { 
1,2,3,4 
5,6,7,8 
9,10,11,12 
13,14,15,16} 

旋轉到新的數組:

{4,8,12,16 
3,7,11,15 
2,6,10,14 
1,5,9,13} 

和:

{13,9,5,1, 
14,10,6,2, 
15,11,7,3, 
16,12,8,4} 
+5

你有什麼試過?你能弄清楚'A [0] [0]'中的值應該結束嗎?如果將該單元格交換爲「A [0] [0]」會發生什麼?你接下來需要交換什麼? – StoryTeller

+0

您需要將源數組的列複製到目標數組的行中,或者將源數組的行復制到目標數組的列中。唯一的問題是你在哪個序列中執行操作。首先編寫一個傳遞源和目標數組的骨架函數,以及它們的大小。然後仔細考慮如何將行復制到列中。 –

+0

你有從2D像素座標到1D數組索引的映射。把它寫成座標的函數。有了這些,你也應該能夠寫出一個反函數。您還有兩個從2D座標到旋轉的2D座標的映射 - 也將這些映射寫爲函數。你想要的變換隻是一個(1D - > 2D),(2D旋轉),(2D - > 1D)的組合。你已經關閉了所有這些形式的公式,所以你應該能夠爲整個變換編寫一個表達式。 –

回答

1

您可以使用rotation matrix。 90度的旋轉矩陣僅僅是

[0 -1 
    1 0] 

here你可以看到如何做矩陣乘法在C,如果你需要。