## Turtle Graphics

### January 3, 2012

We had fun drawing a fractal snowflake last week. In today’s exercise, we will write a full library for turtle graphics. Our goal is to provide the commands described in Brian Harvey’s book about Logo. The turtle is a robotic device that moves and draws on a graphical output device (paper, screen) with a coordinate system that has x running west (negative) to east (positive) and y running south (negative) to north (positive); the ordinal compass points are 0 north, 90 east, 180 south and 270 west. Most commands ignore the global coordinate system in favor of commands from the turtle’s point of view, so instead of saying “turn to 135 degrees” a typical command is “turn right 45 degrees,” so that a shape can be drawn without knowledge of its global coordinates. The turtle commands are:

`clearscreen` — initialize the graphics system and place the turtle in the center of the graphical output pointing north

`penup` — remove the pen from the drawing surface

`pendown` — place the pen on the drawing surface

`forward` n — move the turtle forward n steps, drawing a line if the pen is down

`back` n — move the turtle back n steps, drawing a line if the pen is down

`left` n — rotate the turtle n degrees left from its current heading

`right` n — rotate the turtle n degrees right from its current heading

`setpos` x y — move the turtle from its current position to the indicated coordinates, drawing a line if the pen is down

`setheading` n — rotate the turtle from its current heading to the indicated heading

`pos` — report the current position by its x and y coordinates

`heading` — report the current heading in degrees

Your task is to write a turtle graphics library. When you are finished, you are welcome to read or run a suggested solution, or to post your own solution or discuss the exercise in the comments below.