wraparound-0.0.1: wrap-around-example.hs
import Graphics.Gloss.Interface.Pure.Simulate
import GHC.Float
import Data.WrapAround
dispmode = InWindow "WrapAround module test" (1024, 768) (0, 0)
main = simulate dispmode (dim green) 10 model dispmodel stepfunc
data Model = Model { particles :: [(WrapPoint, (Double, Double))]
, wrapMap :: WrapMap }
deriving (Show)
wmap = wrapmap 200 300
model = Model { particles = [ (wrappoint wmap (10, 10), (10, 0))
, (wrappoint wmap (30, 30), ((-5), (-5)))
]
, Main.wrapMap = wmap
}
dispmodel m = let ps = do (wp, _) <- particles m
let (px, py) = toCoords (Main.wrapMap m) wp in
[ Polygon [ (double2Float px, double2Float py)
, (double2Float px + 10, double2Float py)
, (double2Float px + 10, double2Float py + 10)
, (double2Float px, double2Float py + 10)
] ] in
Translate (-100.0) (-150.0) (Color green (Pictures ps))
stepfunc _ _ m = let map = Main.wrapMap m in
let nparticles = do (wp, (x, y)) <- particles m
[ (addPoints' map wp (x, y), (x, y)) ] in
m { particles = nparticles }