| Copyright | (c) 2011 Michael Sloan | 
|---|---|
| License | BSD-style (see LICENSE) | 
| Maintainer | Michael Sloan <mgsloan at gmail>, Deepak Jois <deepak.jois@gmail.com> | 
| Safe Haskell | None | 
| Language | Haskell2010 | 
Diagrams.TwoD.Path.Turtle.Internal
Contents
Description
Authors : Michael Sloan at gmail, Deepak Jois deepak.jois@gmail.com
A module consisting of core types and functions to represent and operate on a "turtle".
More info about turtle graphics: http://en.wikipedia.org/wiki/Turtle_graphics
- data TurtleState = TurtleState {}
- data TurtlePath = TurtlePath {}
- data PenStyle = PenStyle {}
- forward :: Double -> TurtleState -> TurtleState
- backward :: Double -> TurtleState -> TurtleState
- left :: Double -> TurtleState -> TurtleState
- right :: Double -> TurtleState -> TurtleState
- setPenColor :: Colour Double -> TurtleState -> TurtleState
- setPenColour :: Colour Double -> TurtleState -> TurtleState
- setPenWidth :: Double -> TurtleState -> TurtleState
- startTurtle :: TurtleState
- setHeading :: Double -> TurtleState -> TurtleState
- towards :: P2 -> TurtleState -> TurtleState
- setPenPos :: P2 -> TurtleState -> TurtleState
- penUp :: TurtleState -> TurtleState
- penDown :: TurtleState -> TurtleState
- penHop :: TurtleState -> TurtleState
- closeCurrent :: TurtleState -> TurtleState
- traceTurtle :: TurtleState -> TurtleState
- getTurtleDiagram :: Renderable (Path R2) b => TurtleState -> Diagram b R2
- getTurtlePath :: TurtleState -> Path R2
Turtle data types and accessors
data TurtleState Source
Core turtle data type. A turtle needs to keep track of its current position, like its position, heading etc., and all the paths that it has traversed so far.
We need to record a new path, everytime an attribute like style, pen position etc changes, so that we can separately track styles for each portion of the eventual path that the turtle took.
Constructors
| TurtleState | |
| Fields 
 | |
Instances
data TurtlePath Source
Turtle path type that captures a list of paths and the style attributes associated with them
Constructors
| TurtlePath | |
Instances
Style attributes associated with the turtle pen
Constructors
| PenStyle | |
Motion commands
Arguments
| :: Double | Distance to move | 
| -> TurtleState | Turtle to move | 
| -> TurtleState | Resulting turtle | 
Move the turtle forward by x units
Arguments
| :: Double | Distance to move | 
| -> TurtleState | Turtle to move | 
| -> TurtleState | Resulting turtle | 
Move the turtle backward by x units
Arguments
| :: Double | Degree of turn | 
| -> TurtleState | Turtle to turn | 
| -> TurtleState | Resulting turtle | 
Turn the turtle anti-clockwise (left)
Arguments
| :: Double | Degree of turn | 
| -> TurtleState | Turtle to turn | 
| -> TurtleState | Resulting turtle | 
Turn the turtle clockwise (right)
Pen style commands
Arguments
| :: Colour Double | Width of Pen | 
| -> TurtleState | Turtle to change | 
| -> TurtleState | Resulting Turtle | 
alias of setPenColour
Arguments
| :: Colour Double | Width of Pen | 
| -> TurtleState | Turtle to change | 
| -> TurtleState | Resulting Turtle | 
Set a new pen color for turtle.
If pen is down, this adds the current trail to paths and starts a new empty
 trail.
Arguments
| :: Double | Width of Pen | 
| -> TurtleState | Turtle to change | 
| -> TurtleState | Resulting Turtle | 
Set a new pen width for turtle.
If pen is down, this adds the current trail to paths and starts a new empty
 trail.
State setters
startTurtle :: TurtleState Source
The initial state of turtle. The turtle is located at the origin, at an
 orientation of 0 degrees with its pen position down. The pen style is
 defaultPenStyle.
Arguments
| :: Double | Degree of orientation | 
| -> TurtleState | Turtle to orient | 
| -> TurtleState | Resulting turtle | 
Turn the turtle to the given orientation, in degrees
Arguments
| :: P2 | Point to orient turtle towards | 
| -> TurtleState | Turtle to orient | 
| -> TurtleState | Resulting turtle | 
Sets the turtle orientation towards a given location.
Arguments
| :: P2 | Position to place true | 
| -> TurtleState | Turtle to position | 
| -> TurtleState | Resulting turtle | 
Set the turtle X/Y position.
If pen is down and the current trail is non-empty, this will also add the
 current trail to the paths field.
Drawing control
Arguments
| :: TurtleState | Turtle to modify | 
| -> TurtleState | Resulting turtle | 
Puts the turtle pen in “Up” mode. Turtle movements will not draw anything
Does nothing if the pen was already up. Otherwise, it creates a turtle with
 the current trail added to paths.
Arguments
| :: TurtleState | Turtle to modify | 
| -> TurtleState | Resulting turtle | 
Puts the turtle pen in “Down” mode. Turtle movements will cause drawing to happen
Does nothing if the pen was already down. Otherwise, starts a new trail starting at the current position.
penHop :: TurtleState -> TurtleState Source
Debugging
traceTurtle :: TurtleState -> TurtleState Source
Prints out turtle representation and returns it. Use for debugging
Diagram related
getTurtleDiagram :: Renderable (Path R2) b => TurtleState -> Diagram b R2 Source
Creates a diagram from a turtle
Applies the styles to each trails in paths separately and combines them
 into a single diagram
getTurtlePath :: TurtleState -> Path R2 Source
Creates a path from a turtle, ignoring the styles.