packages feed

drawille-0.1.0.0: examples/Senoid.hs

import Data.Angle
import Data.List (union)
import Control.Arrow ((&&&))
import qualified System.Drawille as D

main :: IO ()
main = do
    let s = D.fromList $ take 1800 senoid
    putStr $ D.frame s

    let cs = D.fromList $ union (take 1800 senoid) (take 1800 cosenoid)
    putStr $ D.frame cs

senoid :: Integral a => [(a, a)]
senoid = map ((`div` 10) &&& (floor . (* 10) . rsine . fromIntegral)) [0..]

cosenoid :: Integral a => [(a, a)]
cosenoid = map ((`div` 10) &&& (floor . (* 10) . rcosine . fromIntegral)) [0..]

rsine :: Double -> Double
rsine = sine . radians . Degrees

rcosine :: Double -> Double
rcosine = cosine . radians . Degrees