diff options
Diffstat (limited to 'graphics/pgf/base/doc/pgfmanual-en-library-turtle.tex')
-rw-r--r-- | graphics/pgf/base/doc/pgfmanual-en-library-turtle.tex | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/graphics/pgf/base/doc/pgfmanual-en-library-turtle.tex b/graphics/pgf/base/doc/pgfmanual-en-library-turtle.tex new file mode 100644 index 0000000000..cea9271069 --- /dev/null +++ b/graphics/pgf/base/doc/pgfmanual-en-library-turtle.tex @@ -0,0 +1,117 @@ +% Copyright 2019 by Mark Wibrow +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Free Documentation License. +% +% See the file doc/generic/pgf/licenses/LICENSE for more details. + + +\section{Turtle Graphics Library} +\label{section-library-tutrle} + +\begin{tikzlibrary}{turtle} + This little library defines some keys to create simple turtle graphics in + the tradition of the Logo programming language. These commands are mostly + for fun, but they can also be used for more ``serious'' business. + % +\begin{codeexample}[preamble={\usetikzlibrary{turtle}}] +\tikz[turtle/distance=2mm] + \draw [turtle={home,forward,right,forward,left,forward,left,forward}]; +\end{codeexample} + % +\end{tikzlibrary} + +Even though the |turtle| keys looks like an option, it uses the |insert path| +option internally to produce a path. + +The basic drawing model behind the turtle graphics is very simple: There is a +(virtual) \emph{turtle} that crawls around the page, thereby extending the +path. The turtle always heads in a certain direction. When you move the turtle +forward, you extend the path in that direction; turning the turtle just changes +the direction, it does not cause anything to be drawn. + +The turtle always moves relative to the last current point of the path and you +can mix normal path commands with turtle commands. However, the direction of +the turtle is managed independently of other path commands. + +\begin{key}{/tikz/turtle=\meta{keys}} + This key executes the \meta{keys} with the current key path set to + |/tikz/turtle|. + % +\begin{codeexample}[preamble={\usetikzlibrary{turtle}}] +\tikz[turtle/distance=2mm] + \draw [turtle={home,fd,rt,fd,lt,fd,lt,fd}]; +\end{codeexample} + % +\end{key} + +\begin{key}{/tikz/turtle/home} + Places the turtle at the origin and lets it head upward. +\end{key} + +\begin{key}{/tikz/turtle/forward=\meta{distance} (default \normalfont see text)} + Makes the turtle move forward by the given \meta{distance}. If no + \meta{distance} is specified, the current value of the following key is + used: + % + \begin{key}{/tikz/turtle/distance=\meta{distance} (initially 1cm)} + The default distance by which the turtle advances. + \end{key} + % + ``Moving forward the turtle'' actually means that, relative to the current + last point on the path, a point at the given \meta{distance} in the + direction the turtle is currently heading is computed. Then, the operation + |to[turtle/how]| is used to extend the path to this point. + % + \begin{stylekey}{/tikz/turtle/how (initially \normalfont empty)} + This style can set up the |to path| used by turtles. By setting this + style you can change the to-path: + % +\begin{codeexample}[preamble={\usetikzlibrary{turtle}}] +\tikz \draw [turtle={how/.style={bend left},home,forward,right,forward}]; +\end{codeexample} + \end{stylekey} +\end{key} + +\begin{key}{/tikz/turtle/fd} + An abbreviation for the |forward| key. +\end{key} + +\begin{key}{/tikz/turtle/back=\meta{distance} (default \normalfont see text)} + This has the same effect as a |turtle/forward| for the negated + \meta{distance} value. +\end{key} + +\begin{key}{/tikz/turtle/bk} + An abbreviation for the |back| key. +\end{key} + +\begin{key}{/tikz/turtle/left=\meta{angle} (default 90)} + Turns the turtle left by the given angle. +\end{key} + +\begin{key}{/tikz/turtle/lt} + An abbreviation for the |left| key. +\end{key} + +\begin{key}{/tikz/turtle/right=\meta{angle} (default 90)} + Turns the turtle right by the given angle. +\end{key} + +\begin{key}{/tikz/turtle/rt} + An abbreviation for the |right| key. +\end{key} + +Turtle graphics are especially nice in conjunction with the |\foreach| +statement: + +\begin{codeexample}[preamble={\usetikzlibrary{turtle}}] +\tikz \filldraw [thick,blue,fill=blue!20] + [turtle=home] + \foreach \i in {1,...,5} + { + [turtle={forward,right=144}] + }; +\end{codeexample} |