2017-03-16 98 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,如果你需要。