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 }