13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#!/usr/bin/perl
23ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#
33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy# Example of using a lsys fractal,
43ed852eea50f9d4cd633efb8c2b054b8e33c253cristy# which in turm used Turtle Graphics
53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#
63ed852eea50f9d4cd633efb8c2b054b8e33c253cristyrequire "lsys.pl";
73ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%rule = (
93ed852eea50f9d4cd633efb8c2b054b8e33c253cristy	  'A' => 'S[---LMA][++++B]',
103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          'B' => 'S[++LBg][--Cg]',
113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          'C' => 'S[-----LB]GS[+MC]',
123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          'g' => '',
133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          'L' => '[{S+S+S+S+S+S}]'
143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        );
153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%stemchanges = (
173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  distance => 18.5,
183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  dtheta => 0.1,
193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  motionsub => sub{
203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                    $im->Draw ( primitive=>'line', points=>join(' ',@_),
213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                stroke=>'dark green', strokewidth=>1 );
223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                  }
233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy);
243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%polychanges = (
263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  distance => 3,
273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  dtheta => 0.4,
283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  motionsub => sub{ push( @poly, @_[0..1] ); }
293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy);
303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy$changes = \%stemchanges;
323ed852eea50f9d4cd633efb8c2b054b8e33c253cristylsys_init(400);
333ed852eea50f9d4cd633efb8c2b054b8e33c253cristylsys_execute('A', 10, "tree.gif", %rule);
34