## LispPad Turtle

This is a library implementing a simple graphics window for displaying turtle graphics. The library supports one graphics window per LispPad session which gets initialized by invoking `init-turtle`

. `init-turtle`

will create a new turtle and display its drawing on a graphics window. If there is already an existing graphics window with the given title, it will be reused.

Once `init-turtle`

was called, the following functions can be used to move the turtle across the plane:

`(pen-up)`

: Lifts the turtle`(pen-down)`

: Drops the turtle`(pen-color color)`

: Sets the current color of the turtle`(pen-size size)`

: Sets the size of the turtle pen`(home)`

: Moves the turtle back to the origin`(move x y)`

: Moves the turtle to position`(x, y)`

`(heading angle)`

: Sets the angle of the turtle (in radians)`(turn angle)`

: Turns the turtle by the given angle (in radians)`(left angle)`

: Turn left by the given angle (in radians)`(right angle)`

: Turn right by the given angle (in radians)`(forward distance)`

: Moves forward by`distance`

units drawing a line if the pen is down`(backward distance)`

: Moves backward by`distance`

units drawing a line if the pen is down

This library provides a simplified, interactive version of the API provided by library `(lispkit draw turtle)`

.

**(init-turtle)** [procedure]

**(init-turtle scale)**

**(init-turtle scale title)**

Initializes a new turtle and displays its drawing in a graphics window. `init-turtle`

gets two optional arguments: `scale`

and `title`

. `scale`

is a scaling factor which determines the size of the turtle drawing. `title`

is a string that defines the window name of the turtle graphics. It also acts as the identify of the turtle graphics window; i.e. it won't be possible to have two sessions with the same name but a different graphics window.

**(close-turtle-window)** [procedure]

Closes the turtle window and resets the turtle library.

**(turtle-drawing)** [procedure]

Returns the drawing associated with the current turtle.

**(pen-up)** [procedure]

Lifts the turtle from the plane. Subsequent `forward`

and `backward`

operations don't lead to lines being drawn. Only the current coordinates are getting updated.

**(pen-down)** [procedure]

Drops the turtle onto the plane. Subsequent `forward`

and `backward`

operations will lead to lines being drawn.

**(pen-color color)** [procedure]

Sets the drawing color of the turtle to *color*. *color* is a color object as defined by library `(lispkit draw)`

.

**(pen-size size)** [procedure]

Sets the pen size of the turtle to *size*. The pen size corresponds to the width of lines drawn by `forward`

and `backward`

.

**(home)** [procedure]

Moves the turtle to its home position.

**(move x y)** [procedure]

Moves the turtle to the position described by the coordinates *x* and *y*.

**(heading angle)** [procedure]

Sets the heading of the turtle to *angle*. *angle* is expressed in terms of degrees.

**(turn angle)** [procedure]

Adjusts the heading of the turtle by *angle* degrees.

**(right angle)** [procedure]

Adjusts the heading of the turtle by *angle* degrees.

**(left angle)** [procedure]

Adjusts the heading of the turtle by *-angle* degrees.

**(forward distance)** [procedure]

Moves the turtle forward by *distance* units drawing a line if the pen is down.

**(backward distance)** [procedure]

Moves the turtle backward by *distance* units drawing a line if the pen is down.