[Back to TURTLE SWAG index]  [Back to Main SWAG index]  [Original]

(* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
   ³ Programated by Vladimir Zahoransky                        ³
   ³                Vladko software                            ³
   ³ Contact      : zahoran@cezap.ii.fmph.uniba.sk             ³
   ³ Program tema : Squards in squard - rekusion version       ³
   ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ *)

{
    This program draw popular squards effekt. It is typical rekusive
  algorithm.
  Part 1 : Primitive part : Nathing
  Part 2 : This is one part of rekusion, who work something. There is
  only cycle for (parameters : 1 to 4) and some commands. One par of
  commands (dopredu(s); and vlavo(90);) draw line and rotate turtle
  for drawing other line. The cycle draw the squard.  And there is
  a rekusion command. It is easy to undestand, but ... .
  If you are in cycle (i have 2) and you are penetrate then i muth
  have 1 not 2. Ohohoh!
  If you thing all colors go periodicly then it is bed. For examplr :
  N=2 go : 1 1 2 3 4 2 1 2 3 4 3 1 2 3 4 4 1 2 3 4,
  One is when the rekusion penetrate to smallest direction of squard
  two,tree is when the rekusion make middle two directions of squard
  four is when the rekusion escape drawed part of sqaurds
  So it is rekusion type for example snee flake. In penetrate part are
  a lot rekusion commands. Here are all rekusion commands only ONE
  command !!! (Squard(n-1,s/2.5);)  If rekusion finish the penetrate
  (for i>1) then go emerge part where rekusion work nathing, but
  go other penetrate. Zmenfp change the color. This reksion is good
  to write in rekusion version outside. It is not so difficult for
  all who good undestand this. This make rekusion. Easy writed, but
  difficult realization.

  If you want to have the effekt in one color, please change i in
  Zmenfp to constant.
  Part 3 : Emerge part    : Nathing
}

Uses Okor;

Type Mykor=Object(kor)
             Procedure Squard(n:integer;s:real);
             End;

  procedure Mykor.Squard(n:integer;s:real);
  var
    i:integer;
  begin
    if n=0 then
    else for i:=1 to 4 do
    begin
      Zmenfp(i);
      dopredu(s);
      vlavo(90);
      Squard(n-1,s/2.5);
    end;
  end;

  Var k:Mykor;
  Begin

  With k do Begin
            Init(240,-240,0);
            Squard(6,480);
            CakajKlaves;
            Koniec;
            End;

  End.

[Back to TURTLE SWAG index]  [Back to Main SWAG index]  [Original]