Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. interpret : TurtlePar -> List String -> List (Svg.Svg msg)
  2. interpret turtlePar commands =
  3. if isEmpty commands then
  4. [ drawTurtle first (first turtlePar) first (second turtlePar) second turtlePar ]
  5. else
  6. let
  7. cmdType : String -> String
  8. cmdType str =
  9. Maybe.withDefault "" (head (split " " str))
  10.  
  11. cmdArg : String -> String
  12. cmdArg str =
  13. Maybe.withDefault "" (head (Maybe.withDefault [] (tail (split " " str))))
  14.  
  15. posTrans : TurtlePar -> String -> String -> TurtlePar
  16. posTrans prevTurtle cmdTip cmdOp =
  17. if cmdTip == "F" then
  18. ( ( round (toFloat (first (first prevTurtle)) + (cos (toFloat (second prevTurtle)) * toFloat cmdOp)), round (toFloat (second (first prevTurtle)) + (sin (toFloat (second prevTurtle)) * toFloat cmdOp)) ), second prevTurtle )
  19. else if cmdTip == "R" then
  20. ( first prevTurtle, (second prevTurtle + toInt cmdOp) % 360 )
  21. else
  22. ( ( -1, -1 ), -1 )
  23.  
  24. calcPoint : TurtlePar -> String
  25. calcPoint turtle =
  26. toString (first (first turtle)) ++ "," ++ toString (second (first turtle))
  27. in
  28. if cmdTip == "F" then
  29. [ Svg.polyline [ points (calcPoint turtle ++ " " ++ calcPoint (posTrans turtlePar cmdType commands cmdArg commands)), fill "none", stroke "black" ] [] ] ++ interpret (posTrans turtlePar cmdType commands cmdArg commands) (Maybe.withDefault [] (tail commands))
  30. else if cmdTip == "R" then
  31. interpret (posTrans turtlePar cmdType commands cmdArg commands) (Maybe.withDefault [] (tail commands))
  32. else
  33. []
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement