1 Traditional Turtles
To use any of the turtle drawing functions, you first need to
initialize the turtles by calling (turtles #t).
Shows and hides the turtles window based on on?. If
on? is not supplied, the state is toggled.
Moves the turtle n pixels without drawing.
Moves the turtle n pixels and draws a line on the path.
Moves the turtle n pixels and erase along the path.
, and erase
, but using a
horizontal and vertical offset from the turtle’s current position.
Turns the turtle theta degrees counter-clockwise.
Turns the turtle theta radians counter-clockwise.
Erases the turtles window.
Leaves only one turtle, in the start position.
Spawns a new turtle where the turtle is currently located. In order to
distinguish the two turtles, only the new one evaluates
expr. For example, if you start with a fresh turtle-window
(split (turn/radians (/ pi 2)))
you will have two turtles, pointing at right angles to each
other. Continue with
You will see two lines. Now, if you evaluate those two expression
again, you will have four turtles, etc.
Like (split expr ...)
, except that one turtle is created for
For example, to create two turtles, one pointing at π/2
and one at π/3, evaluate
(split* (turn/radians (/ pi 3)) (turn/radians (/ pi 2)))
Limits the splitting of the turtles. Before expr is evaluated,
the state of the turtles (how many, their positions and headings) is
“checkpointed.” Then expr is evaluated, and then the state
of the turtles is restored, but all drawing that may have occurred
during execution of expr remains.
(tprompt (draw 100))
moves a turtle forward 100 pixel while drawing a line, and then moves
the turtle be immediately back to its original position. Similarly,
(tprompt (split (turn/radians (/ pi 2))))
splits the turtle into two, rotates one 90 degrees, and then
collapses back to a single turtle.
The fern functions below demonstrate more advanced use of
Saves the current state of the turtles window in an image file.
The size of the turtles window.
The graphics/turtle-examples library’s source is meant
to be read, but it also exports the following examples. To display these
examples, first initialize the turtle window with (turtles #t).
Draws a regular poly centered at the turtle with sides sides
and with radius radius.
Draws n regular polys each with n sides centered at
Places 2n turtles spaced evenly pointing radially outward.
Places 2n turtles evenly spaced in a line and pointing in the
same direction as the original turtle.
Draws a spyro-grya reminiscent shape.
As the name says...
Draws a fractal that came up on an exam given at Rice in 1997 or so.
A constant that is a good size for the sierp
Sierpinski triangle in two different ways, the
first using split
heavily. After running the first one, try
executing (draw 10)
A constant that is a good size for the koch procedures.
Draws the same
Koch snowflake in two different ways.
Lorenz attractor (a.k.a.
initial values a
, and c
with good initial values.
Peano space-filling curve.
Moves the turtle to a good place to prepare for
a call to peano
One size to use with peano
For fern1, you will probably want to point the turtle up
before running this one, with something like:
(turn/radians (- (/ pi 2)))
For fern2, you may need to backup a little.