【发布时间】:2012-05-02 02:38:42
【问题描述】:
我需要有关 haskell 中的旋转或自旋矩阵的帮助
我有一个列表列表,数据类型为 RGB:
data RGBdata= RGB Int Int Int
m = [[(RGB 0 255 255),(RGB 255 0 0)],[(RGB 255 255 255),(RGB 255 0 0)]]
为了看得更清楚,我有一个 2x2 矩阵:
m = [[(RGB 1 2 3),(RGB 4 5 6)],
[(RGB 7 8 9),(RGB 1 5 9)]]
我需要 90° 旋转,我的意思是:
m = [[(RGB 7 8 9),(RGB 1 2 3)]
[(RGB 1 5 9),(RGB 4 5 6)]]
扩展我的解释,我有 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' 分别是列数和行数(也许可以帮助完成该功能)。
我尝试向左旋转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))
旋转图像但不起作用。
结果是这样的
【问题讨论】:
-
您所描述的不是旋转矩阵。旋转矩阵是矩阵
A,使得A*x对x执行旋转。 mathworld.wolfram.com/RotationMatrix.html
标签: haskell matrix rotation ppm