[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 : Triangle in circle - rekusion version      ³
       ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ *)

    { This program draw triangle in circle in triangle in .... , but
      with rekusion.
      Part one of rekusion : Nathing

      Part two of rekusion (penetrate) : Draw 1/2 of base direction.
                            Then rotate turtle to correkt angle.
                            It is 60 degrees (for elimination the next poly)
                            + angle of Tales circle. (See rekpic11.pas !)
                            Here muth be vpravo. Draw the triangle and
                            then vlavo the Tales angle for next circle.
                            We muth to draw 5/6 of circle. (270 degress sector)
                            s/2 for next triangle is transverse.
                            (see rekpic11.pas !) (n do not increment, because
                            we are working in penetrate part)
                            For this work is axiliary variable l. L is a
                            level of effekt.

      Part tree of rekusion (emerge) : Rotate a Tales circle angle and finish the
                                       circle. (1/6) Rotate 60 - Tales circle
                                       angle and finish the triangle. Here we
                                       muth s/2 because we go outside to
                                       inside.

      This program do not work with alfa. (rekpic11.pas have alfa)
    }

    Uses okor;

    Type
      Mykor=object(kor)
        Procedure poly(n:integer;s,u:real);
        Procedure Draw(n:integer;s:real;p:integer);
      End;

    Var k:Mykor;
        poc:integer;

    Procedure Mykor.poly(n:integer;s,u:real);
    Begin

      While n>0 do Begin
                   Dopredu(s);
                   Vpravo(u);
                   Dec(n);
                   End;

    End;

    Procedure Mykor.draw(n:integer;s:real;p:integer);
    Begin
    if p=0 then
           else Begin
                Inc(poc);
                Zmenfp(poc);
                Dopredu(s/2);
                Vpravo(60+180/n);
                Poly(round(5*n/6),2*s*sin(pi/n)/sqrt(3),360/n);
                Vlavo(180/n);
                Draw(n,s*2,p-1);
                Inc(poc);
                Zmenfp(poc);
                Vpravo(180/n);
                Poly(round(n/6),2*s*sin(pi/n)/sqrt(3),360/n);
                Vpravo(60-180/n);
                Poly(2,s,360/3);
                Dopredu(s/2);
                End;

    End;

    begin
    poc:=0;

    With k do Begin
              init(0,-50/sqrt(3)/2,-90);
              draw(120,50,4);
              Cakajklaves;
              Koniec;
              End;
    End.

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