The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
%% Copyright 2013 Kevin Ryde
%%
%% This file is part of Math-PlanePath.
%%
%% Math-PlanePath is free software; you can redistribute it and/or modify it
%% under the terms of the GNU General Public License as published by the Free
%% Software Foundation; either version 3, or (at your option) any later
%% version.
%%
%% Math-PlanePath is distributed in the hope that it will be useful, but
%% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
%% or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
%% for more details.
%%
%% You should have received a copy of the GNU General Public License along
%% with Math-PlanePath.  If not, see <http://www.gnu.org/licenses/>.


%% ----------------------------------------------------------------------------
%% plain tex

\input tikz.tex
\usetikzlibrary{lindenmayersystems}

\pgfdeclarelindenmayersystem{Dragon curve}{
  \symbol{S}{\pgflsystemdrawforward}
  \rule{F -> F+S}
  \rule{S -> F-S}
}
\tikzpicture
\draw
  [lindenmayer system={Dragon curve, step=10pt, axiom=F, order=8}]
  lindenmayer system;
\endtikzpicture
\bye



%% ----------------------------------------------------------------------------
%% angle 45 so direction across is fixed, using foreach

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\begin{document}

\pgfdeclarelindenmayersystem{Dragon curve}{
  \symbol{S}{\pgflsystemdrawforward}
  \rule{F -> -F++S-}
  \rule{S -> +F--S+}
}

\foreach \x in {1,...,7} {
  \hbox{
    order=\x
    \hspace{.5em}
    \begin{tikzpicture}[baseline=0pt]
    \draw
      [lindenmayer system={Dragon curve, step=10pt,angle=45, axiom=F, order=\x}]
      lindenmayer system;
    \end{tikzpicture}
    \hspace{1em}
  }
  \vspace{.5ex}
}
\end{document}
\bye



%% ----------------------------------------------------------------------------
%% angle 45 so direction across is fixed

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\begin{document}

\pgfdeclarelindenmayersystem{Dragon curve}{
  \symbol{R}{\pgflsystemdrawforward}
  \rule{F -> -F++R-}
  \rule{R -> +F--R+}
}

one
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt,angle=45, axiom=F, order=1}]
  lindenmayer system;
\end{tikzpicture}
\hspace{1em}
two
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt,angle=45, axiom=F, order=2}]
  lindenmayer system;
\end{tikzpicture}
\hspace{1em}
three
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt,angle=45, axiom=F, order=3}]
  lindenmayer system;
\end{tikzpicture}
\hspace{1em}
four
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt,angle=45, axiom=F, order=4}]
  lindenmayer system;
\end{tikzpicture}
\hspace{1em}
five
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt,angle=45, axiom=F, order=5}]
  lindenmayer system;
\end{tikzpicture}

\vspace{5ex}
eight
\hspace{1em}
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt,angle=45, axiom=F, order=8}]
  lindenmayer system;
\end{tikzpicture}

\end{document}
\bye


%% ----------------------------------------------------------------------------
%% latex

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\begin{document}

\pgfdeclarelindenmayersystem{Dragon curve}{
  \symbol{R}{\pgflsystemdrawforward}
  \rule{F -> F+R+}
  \rule{R -> -F-R}
}
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt, axiom=F, order=8}]
  lindenmayer system;
\end{tikzpicture}

\end{document}
\bye


%% ----------------------------------------------------------------------------
%% levels of expansion

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\begin{document}

\pgfdeclarelindenmayersystem{Dragon curve}{
  \symbol{R}{\pgflsystemdrawforward}
  \rule{F -> F+R+}
  \rule{R -> -F-R}
}

one
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt, axiom=F, order=1}]
  lindenmayer system;
\end{tikzpicture}
\hspace{1em}
two
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt, axiom=F, order=2}]
  lindenmayer system;
\end{tikzpicture}
\hspace{1em}
three
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt, axiom=F, order=3}]
  lindenmayer system;
\end{tikzpicture}
\hspace{1em}
four
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt, axiom=F, order=4}]
  lindenmayer system;
\end{tikzpicture}
\hspace{1em}
five
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt, axiom=F, order=5}]
  lindenmayer system;
\end{tikzpicture}
\hspace{1em}

\vspace{5ex}
eight
\hspace{1em}
\begin{tikzpicture}[baseline=0pt]
\draw
  [lindenmayer system={Dragon curve, step=10pt, axiom=F, order=8}]
  lindenmayer system;
\end{tikzpicture}

\end{document}
\bye


%% ----------------------------------------------------------------------------

%% \begin{document}
%% \begin{tikzpicture}
%% \pgfdeclarelindenmayersystem{Dragon curve}{
%%   \symbol{R}{\pgflsystemdrawforward}
%%   \rule{F -> +F--R+}
%%   \rule{R -> -R++F-}
%% }
%% \draw
%%   [lindenmayer system={Dragon curve, step=10pt, angle=45,angle=45, axiom=F, order=3}]
%%   lindenmayer system;
%% \end{tikzpicture}
%% \end{document}
%% \bye

%% \begin{tikzpicture}
%% \draw [green!50!black, rotate=90]
%%   [l-system={rule set={L -> L+R+, R -> R-L-}, axiom=L, order=5, step=5pt, angle=90}]
%%   lindenmayer system;
%% \end{tikzpicture}
%% 
%% picture

%% \begin{tikzpicture}
%% \pgfdeclarelindenmayersystem{Dragon curve}{
%%   \rule{L -> L+RF+}
%%   \rule{R -> -FL-R}}
%% }
%% \draw
%%   [rotate=0]
%%   [l-system={Dragon curve, step=10pt, angle=90, axiom=FL, order=7}]
%%   lindenmayer system;
%% \end{tikzpicture}
%% 
%% picture
%% \end{document}