Drachenkurven II

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

Dragon.om
PROCEDURE Dragon(graphic: TurtleGraphics.Graphic;
                 level: INTEGER);
   (* Dragon curve (X -> X+YF+, Y -> -FX-Y) *)

   PROCEDURE Left;
   BEGIN TurtleGraphics.Left(graphic);
   END Left;

   PROCEDURE Right;
   BEGIN TurtleGraphics.Right(graphic);
   END Right;

   PROCEDURE Forward;
   BEGIN TurtleGraphics.Forward(graphic);
   END Forward;

   PROCEDURE ^ Y(n: INTEGER);

   PROCEDURE X(n: INTEGER);
   BEGIN
      IF n > 0 THEN
         X(n-1); Left; Y(n-1); Forward; Left;
      END;
   END X;

   PROCEDURE Y(n: INTEGER);
   BEGIN
      IF n > 0 THEN
         Right; Forward; X(n-1); Right; Y(n-1);
      END;
   END Y;

BEGIN Forward; X(level);
END Dragon;

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999, 2004 Andreas F. Borchert, in HTML konvertiert am 28.01.2005