【发布时间】:2017-03-16 14:42:54
【问题描述】:
如何将图像旋转 90 度(左右)一维数组 n 元素?
我的数组是 24 位位图 (NxN)
比如我的数组
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}
【问题讨论】:
-
你试过什么?你能弄清楚
A[0][0]中的值应该在哪里结束吗?如果您将A[0][0]与该单元格交换会发生什么?接下来需要换什么? -
您需要将源数组的列复制到目标数组的行,或者将源数组的行复制到目标数组的列。唯一的问题是你做事情的顺序。首先编写一个传递源和目标数组及其大小的骨架函数。然后仔细考虑如何将行复制到列中。
-
你有一个从 2D 像素坐标到 1D 数组索引的映射。把它写成坐标的函数。有了这个,你也应该能够写出一个反函数。您还有两个从 2D 坐标到旋转的 2D 坐标的映射——也可以将它们写成函数。您想要的转换只是(1D -> 2D),(2D旋转),(2D -> 1D)的组合;您已经为所有这些都提供了封闭式公式,因此您应该能够为整体转换编写表达式。
-
请edit您的问题显示what you have tried so far。您应该至少包含您遇到问题的代码的大纲(但最好是minimal reproducible example),然后我们可以尝试帮助解决具体问题。您还应该阅读How to Ask。
标签: c algorithm bitmap rotation