2012-05-02 3 views
-1

可能性の重複:回転マトリックスPBMfile Haskellは

data RGBdata= RGB Int Int Int 
data PBMfile= PBM Int Int [[RGBdata]] 

Rotate Image .pbm Haskell

私は2のデータ型を持っているHaskellの

に回転行列についてのヘルプが必要

と私の機能「x」と「y」はそれぞれ列と行の数です(多分関数を実行するのに役立つことがあります)。例えば

(PBM 2 2 [[(RGB 0 255 255),(RGB 255 0 0)],[(RGB 255 255 255),(RGB 255 0 0)]]) 

私は逆に組み合わせを使用して左に90度回転し、移調してみてください、しかし、画像の結果が間違っています。

私は行列を回転させるが、動作しません

spin :: PBMfile -> PBMfile 
spin (PBM x y l) = (PBM x y ((reverse . transpose) l)) 

spin :: PBMfile -> PBMfile 
spin (PBM x y l) = (PBM x y ((transpose . reverse) l)) 

spin :: PBMfile -> PBMfile 
spin (PBM x y l) = (PBM x y (((map reverse) . transpose) l)) 

を試してみてください。

結果は転置操作は逆の操作の前に起こるべき

http://imageshack.us/photo/my-images/52/catmc.jpg/

+0

"画像の結果は間違っています" ... ...間違っていますか?あなたの質問を "私はXをして、Yを期待していましたが、代わりにZが起こった"という形で表現してみてください。 –

+0

私は理解を助けるために解説を追加します – user495943

+0

私たちの理解だけでなく、あなたの機能をテストするためにも。 kunwoo32のソリューションを独自の例に適用した結果はどうですか? –

答えて

2

のようなものです。試してください

spin (PBM x y l) = (PBM y x ((reverse . transpose) l)) 

また、回転イメージの寸法が切り替わります。

+0

私は試して、動作しません..私はイメージを分割する対角線を取得します。ありがとう – user495943

+0

あなたの例では、あなたの行列は時計回りに回転しているようです。それはあなたが欲しいものですか? – kunwoo32

+0

はい、画像を回転するには – user495943

1

また、も考慮する必要があります。transposereverseではありません。私は((map reverse) . transpose)があなたが望むことをすると思います。

+0

男性は動作しません、私は試してみて、本当に近いですが逆になっています – user495943

関連する問題