packages feed

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 }