2012-05-02 2 views
-1

가능한 중복 :회전 매트릭스 PBMfile 하스켈

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

내가이 데이터 형식이
Rotate Image .pbm Haskell

내가 하스켈에서 회전 행렬에 대한 도움이 필요

및 내 기능 나타날

'X'및 'Y'는 (아마도 기능을 수행 할 수 있습니다) 각각 colums 행의 수이다
spin :: PBMfile -> PBMfile 
spin (PBM x y l) = (PBM x y ((transpose . reverse) l)) 

. 예를 들어

:

(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