Загрузить фигуру из файла для поворота
Утилита для аффинных преобразований псевдографики. В текстовом файле символами изображена фигура. Произвести преобразование файла таким образом, чтобы он содержал ту же самую фигуру, но повернутую на заданный угол (допускаются искажения, обусловленные низким разрешением «точек»)
Поворот в принципе сделать удалось, но фигура прописана в самой программе. Нужно, чтобы она брала её из файла, поворачивала, а затем выгружала обратно повёрнутую. Сидел 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')