【问题标题】:Rotation Matrix PBMfile Haskell [duplicate]旋转矩阵 PBMfile Haskell [重复]
【发布时间】:2012-05-02 06:00:20
【问题描述】:

可能重复:
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/

【问题讨论】:

  • "图像结果错误"...但是错误在哪?尝试将您的问题表述为“我做了 X,期待 Y,但 Z 发生了。”。
  • 我添加说明,帮助我们理解
  • 不仅供我们了解,也供您测试您的功能。将kunwoo32的方案应用到自己的例子中,结果如何?

标签: haskell matrix rotation ppm


【解决方案1】:

转置操作应该发生在反向操作之前。试试

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

旋转图像的尺寸也会切换。

【讨论】:

  • 我尝试过,但不起作用..我得到图像有一条对角线将它分开。谢谢
  • 在您的问题示例中,您的矩阵似乎是顺时针旋转的。这就是你想要的吗?
  • 是的,旋转图像
【解决方案2】:

您还需要考虑(map reverse),而不仅仅是transposereverse。我认为((map reverse) . transpose) 可以满足您的需求。

【讨论】:

  • 对男人不起作用,我尝试并且非常接近但被逆转了
猜你喜欢
  • 2021-06-30
  • 2013-08-04
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 2013-02-09
  • 2011-05-01
相关资源
最近更新 更多