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.