-1

重複の可能性:
Rotate Image .pbm Haskell

Haskell の回転行列について助けが必要です

私は2つのデータ型を持っています:

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

そして私の関数は次を受け取ります:

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

ここで、「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/

4

2 に答える 2

2

転置操作は、逆操作の前に行う必要があります。試す

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

また、回転した画像のサイズが切り替わります。

于 2012-05-02T06:23:20.607 に答える
1

(map reverse)とだけでなく、も考慮する必要がありtransposeますreverse。私((map reverse) . transpose)はあなたが望むことをしていると思います。

于 2012-05-02T10:32:48.327 に答える