| 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 n = TurtleState {}
- data TurtlePath n = TurtlePath {}
- data PenStyle n = PenStyle {}
- forward :: (Floating n, Ord n) => n -> TurtleState n -> TurtleState n
- backward :: (Floating n, Ord n) => n -> TurtleState n -> TurtleState n
- left :: Floating n => n -> TurtleState n -> TurtleState n
- right :: Floating n => n -> TurtleState n -> TurtleState n
- setPenColor :: (Ord n, Floating n) => Colour Double -> TurtleState n -> TurtleState n
- setPenColour :: (Ord n, Floating n) => Colour Double -> TurtleState n -> TurtleState n
- setPenWidth :: (Ord n, Floating n) => Measure n -> TurtleState n -> TurtleState n
- startTurtle :: (Floating n, Ord n) => TurtleState n
- setHeading :: Floating n => n -> TurtleState n -> TurtleState n
- towards :: RealFloat n => P2 n -> TurtleState n -> TurtleState n
- setPenPos :: (Ord n, Floating n) => P2 n -> TurtleState n -> TurtleState n
- penUp :: (Ord n, Floating n) => TurtleState n -> TurtleState n
- penDown :: (Ord n, Floating n) => TurtleState n -> TurtleState n
- penHop :: (Ord n, Floating n) => TurtleState n -> TurtleState n
- closeCurrent :: (Floating n, Ord n) => TurtleState n -> TurtleState n
- getTurtleDiagram :: (Renderable (Path V2 n) b, TypeableFloat n) => TurtleState n -> QDiagram b V2 n Any
- getTurtlePath :: (Floating n, Ord n) => TurtleState n -> Path V2 n
Turtle data types and accessors
data TurtleState n 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
| |
data TurtlePath n Source #
Turtle path type that captures a list of paths and the style attributes associated with them
Constructors
| TurtlePath | |
Style attributes associated with the turtle pen
Motion commands
Arguments
| :: (Floating n, Ord n) | |
| => n | Distance to move |
| -> TurtleState n | Turtle to move |
| -> TurtleState n | Resulting turtle |
Move the turtle forward by x units
Arguments
| :: (Floating n, Ord n) | |
| => n | Distance to move |
| -> TurtleState n | Turtle to move |
| -> TurtleState n | Resulting turtle |
Move the turtle backward by x units
Arguments
| :: Floating n | |
| => n | Degree of turn |
| -> TurtleState n | Turtle to turn |
| -> TurtleState n | Resulting turtle |
Turn the turtle anti-clockwise (left)
Arguments
| :: Floating n | |
| => n | Degree of turn |
| -> TurtleState n | Turtle to turn |
| -> TurtleState n | Resulting turtle |
Turn the turtle clockwise (right)
Pen style commands
Arguments
| :: (Ord n, Floating n) | |
| => Colour Double | Width of Pen |
| -> TurtleState n | Turtle to change |
| -> TurtleState n | Resulting Turtle |
alias of setPenColour
Arguments
| :: (Ord n, Floating n) | |
| => Colour Double | Width of Pen |
| -> TurtleState n | Turtle to change |
| -> TurtleState n | 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
| :: (Ord n, Floating n) | |
| => Measure n | Width of Pen |
| -> TurtleState n | Turtle to change |
| -> TurtleState n | 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 :: (Floating n, Ord n) => TurtleState n 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
| :: Floating n | |
| => n | Degree of orientation |
| -> TurtleState n | Turtle to orient |
| -> TurtleState n | Resulting turtle |
Turn the turtle to the given orientation, in degrees
Arguments
| :: RealFloat n | |
| => P2 n | Point to orient turtle towards |
| -> TurtleState n | Turtle to orient |
| -> TurtleState n | Resulting turtle |
Sets the turtle orientation towards a given location.
Arguments
| :: (Ord n, Floating n) | |
| => P2 n | Position to place true |
| -> TurtleState n | Turtle to position |
| -> TurtleState n | 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
| :: (Ord n, Floating n) | |
| => TurtleState n | Turtle to modify |
| -> TurtleState n | 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
| :: (Ord n, Floating n) | |
| => TurtleState n | Turtle to modify |
| -> TurtleState n | 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 :: (Ord n, Floating n) => TurtleState n -> TurtleState n Source #
closeCurrent :: (Floating n, Ord n) => TurtleState n -> TurtleState n Source #
Diagram related
getTurtleDiagram :: (Renderable (Path V2 n) b, TypeableFloat n) => TurtleState n -> QDiagram b V2 n Any Source #
Creates a diagram from a turtle
Applies the styles to each trails in paths separately and combines them
into a single diagram
getTurtlePath :: (Floating n, Ord n) => TurtleState n -> Path V2 n Source #
Creates a path from a turtle, ignoring the styles.