home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 14 / CDACTUAL.iso / cdactual / demobin / share / program / Pascal / TURTLE10.ZIP / VONKOCH.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1992-12-14  |  1.9 KB  |  82 lines

  1. {------------------------------------------------------------------------}
  2. { PROJECT   : Turtle graphics using BGI                                  }
  3. { MODULE    : VONKOCH.PAS                                                }
  4. {------------------------------------------------------------------------}
  5. { GOAL      : Demo. draw the VonKoch snowflake using Turtle graphics     }
  6. { VERSION   : 1.0e                                                       }
  7. {------------------------------------------------------------------------}
  8. { REVISIONS :                                                            }
  9. {------------------------------------------------------------------------}
  10. { AUTHOR    : P.Pollet INSA  16/06/91                                    }
  11. {------------------------------------------------------------------------}
  12.  
  13. program VonKoch;
  14.  
  15. uses Graph,Turtle,crt;
  16.  
  17. {$DEFINE SVGA}   { turn off for standard EGAVGA driver }
  18.  
  19.  
  20. {$IFDEF SVGA}
  21.    {$I SVGA.INI}   { specific init file for SVGA driver }
  22. {$ENDIF}
  23.  
  24.  
  25.  
  26. procedure Vk(N,L:integer);
  27. begin
  28.   If N<1 then
  29.        Forwd(L)
  30.   else
  31.     begin
  32.       Vk(N-1,L div 3);
  33.       TurnLeft(60);
  34.       Vk(N-1,L div 3);
  35.       TurnRight(120);
  36.       Vk(N-1,L div 3);
  37.       TurnLeft(60);
  38.       Vk(N-1,L div 3)
  39.     end
  40. end;
  41.  
  42. Procedure SnowFlake(N,L:Integer);
  43. { apply the Vk generator to a triangle, thus draw the snowflake }
  44. begin
  45.   Home; Wrap; ClearScreen;
  46.   TurnRight(90);
  47.   PenUp;
  48.   Back(150);
  49.   PenDown;
  50.   Vk(N,L);
  51.   TurnRight(120);
  52.   Vk(N,L);
  53.   TurnRight(120);
  54.   Vk(N,L);
  55. end;
  56.  
  57. var N,L:integer;
  58. begin
  59.    {$IFDEF SVGA}
  60.     Initialize;
  61.     InitTurtle;
  62.   {$ELSE}
  63.     graphon(VGA,VGAHI,'');
  64.   {$ENDIF}
  65.  
  66.  SetPenColor(WHITE);
  67.  Repeat
  68.   OutTextXY(8,8,' N ,L ? ');    { get number of days and initial length }
  69.   Readln(N); Readln(L);
  70.   ShowTurtle;
  71.   If N >1 Then
  72.     begin
  73.      SnowFlake(N,L);
  74.      write(^G,^G)
  75.     end;
  76.    HideTurtle;
  77.  Until N <1;
  78.  GraphOff
  79. end.
  80.  
  81.  
  82.