2017-03-16 2 views
1

1次元配列のn要素を90度(右と左)回転させるにはどうすればよいですか?C - 1つの配列を使用して画像を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座標への2つのマッピングもあります。これらを関数としても書き出します。あなたが望む変換は、(1D - > 2D)、(2D回転)、(2D - > 1D)のコンポジションです。これらのすべてのフォーム式を閉じているので、全体のトランスフォームの式を記述することができます。 –

答えて

1

を使用できます。 90度のため 回転行列は、あなたが必要な場合は、Cで行列の乗算を行う方法を見ることができるだけで

[0 -1 
    1 0] 

hereです。

関連する問題