Загрузить фигуру из файла для поворота

Утилита для аффинных преобразований псевдографики. В текстовом файле символами изображена фигура. Произвести преобразование файла таким образом, чтобы он содержал ту же самую фигуру, но повернутую на заданный угол (допускаются искажения, обусловленные низким разрешением «точек»)

Поворот в принципе сделать удалось, но фигура прописана в самой программе. Нужно, чтобы она брала её из файла, поворачивала, а затем выгружала обратно повёрнутую. Сидел 3 дня, ничего не получается. Буду рад любой помощи.

image :: [[Char]]
image =
  [ "TTTTTTTT EEEEEEEE  SSSSSS  SSSSSSSS"
  , "   TT    EE       SS    SS    SS   "
  , "   TT    EE       SS          SS   "
  , "   TT    EEEEEE    SSSSSS     SS   "
  , "   TT    EE             SS    SS   "
  , "   TT    EE       SS    SS    SS   "
  , "   TT    EEEEEEEE  SSSSSS     SS   "
  ]

getPixel :: [[Char]] -> Int -> Int -> Char
getPixel img x y
  | x >= 0 && x < width && y >= 0 && y < height = img !! y !! x
  | otherwise = ' '
  where
    height = length img
    width = length $ head img

rotate :: Double -> (Double, Double) -> (Double, Double)
rotate a (x, y) = (x * cos a + y * sin a, -x * sin a + y * cos a)

main :: IO ()
main = mapM_ putStrLn $ do
  y <- [0 .. 30]
  return $ do
    x <- [0 .. 40]
    let (x', y') = rotate (pi/10) (x-5, y-1)
    return $ getPixel image (floor x') (floor y')

Ответы (0 шт):