Advertisement
Guest User

Untitled

a guest
May 24th, 2015
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. import Color exposing (..)
  2. import Graphics.Collage exposing (..)
  3. import Graphics.Element exposing (..)
  4. import Mouse
  5. import Window
  6.  
  7.  
  8. main : Signal Element
  9. main =
  10. Signal.map3 scene Mouse.position anchor Window.dimensions
  11.  
  12. scene : (Int,Int) -> (Int,Int) -> (Int,Int) -> Element
  13. scene (x,y) (z,a) (w,h) =
  14. let (dx,dy) =
  15. (toFloat x - toFloat w / 2, toFloat h / 2 - toFloat y)
  16. (dz,da) =
  17. (toFloat z - toFloat w / 2, toFloat h / 2 - toFloat a)
  18. in
  19. collage w h
  20. [ ngon 3 100
  21. |> filled blue
  22. |> rotate (atan2 (da - dy) (dz - dx))
  23. |> move (dz, da)
  24. , ngon 6 30
  25. |> filled orange
  26. |> move (dx, dy)
  27. ]
  28.  
  29. anchor : Signal (Int, Int)
  30. anchor =
  31. Signal.foldp
  32. avera
  33. (0,0)
  34. Mouse.position
  35.  
  36. avera : (Int, Int) -> (Int, Int) -> (Int, Int)
  37. avera (newx, newy) (oldx, oldy) =
  38. ( round (toFloat oldx * 0.99 + toFloat newx * 0.01)
  39. , round (toFloat oldy * 0.99 + toFloat newy * 0.01)
  40. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement