|This article needs additional citations for verification. (February 2008) (Learn how and when to remove this template message)|
The turtle has three attributes: a location, an orientation (or direction), and a pen. The pen, too, has attributes: color, width, and on/off state.
The turtle moves with commands that are relative to its own position, such as "move forward 10 spaces" and "turn left 90 degrees". The pen carried by the turtle can also be controlled, by enabling it, setting its color, or setting its width. A student could understand (and predict and reason about) the turtle's motion by imagining what they would do if they were the turtle. Seymour Papert called this "body syntonic" reasoning.
A full turtle graphics system requires control flow, procedures, and recursion: many turtle drawing programs fall short. From these building blocks one can build more complex shapes like squares, triangles, circles and other composite figures. The idea of turtle graphics, for example is useful in a Lindenmayer system for generating fractals.
Turtle geometry is also sometimes used in graphics environments as an alternative to a strictly coordinate-addressed graphics system.
Turtle graphics are often associated with the Logo programming language. Seymour Papert added support for turtle graphics to Logo in the late 1960s to support his version of the turtle robot, a simple robot controlled from the user's workstation that is designed to carry out the drawing functions assigned to it using a small retractable pen set into or attached to the robot's body. Turtle geometry works somewhat differently from (x,y) addressed Cartesian geometry, being primarily vector-based (i.e. relative direction and distance from a starting point) in comparison to coordinate-addressed systems such as PostScript. As a practical matter, the use of turtle geometry instead of a more traditional model mimics the actual movement logic of the turtle robot. The turtle is traditionally and most often represented pictorially either as a triangle or a turtle icon (though it can be represented by any icon).
Papert's daughter, Artemis, has been using turtle graphics to explore the relationship between art and algorithm.
Today, Turtle graphics implementations are available for all major desktop and mobile platforms.
Extension to three dimensions
The ideas behind turtle graphics can be extended to include three-dimensional space. This is achieved by using one of several different coordinate models. If the turtle operates in cylindrical coordinates, then it has a location and a heading within its plane, and its plane may be rotated around the vertical axis. This often manifests itself as the turtle having two different heading angles, one within the plane and the other determining the plane's angle. Usually changing the plane's angle does not move the turtle.
- Papert, Seymour (1993). Mindstorms: Children, Computers, and Powerful Ideas (2nd ed.). New York: Basic Books. ISBN 0-465-04674-6. OCLC 794964988.
- Papert, Seymour (1993). The Children's Machine: Rethinking School in the Age of the Computer. New York: Basic Books. ISBN 0-465-01830-0. OCLC 248428992.
- "Web Turtle", turtle graphics in a web page, by Bill Kendrick, author of Tux Paint
- "3D Flying Pipe-laying Turtle" by Tom Verhoeff from The Wolfram Demonstrations Project (retrieved on 2009-01-31)
- Turtle Art website maintained by Brian Silverman and Artemis Papert
- Turtle Blocks a full turtle graphics system included in the Sugar learning platform
- JSTurtlegraphics V0.3 an English implementation aimed at children (using the more common Logo command names)
- Turtle art online a browser-based turtle graphics editor
- Prismacode another browser-based graphics editor
- TurtleGraphics package for R
- Algo An turtle graphic based object in the Algoid educational programming language, that has versions on the Raspberry Pi and Android, Linux and Windows computers.
- Logo interpreter A browser-based full logo interpreter with additional animation routines created using HTML5, CSS3 and JQuery
- SNAP! A UCB project Snap implementation incorporating turtle graphics and a scratch type GUI.
- Turtle Bezier Path Turtle graphics app and drawing library for iOS
- Python 3.5 SVG turtle graphics library
- Reactive Turtle Programming environment to teach kids Scala and Akka
- mjoy, an interpreter in Delphi for machine drawing (Subset of Joy)