-1

可能重复:
旋转图像 .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),而不仅仅是transposereverse。我认为((map reverse) . transpose)做你想要的。

于 2012-05-02T10:32:48.327 回答