Rambler's Top100

Использование рекурсии в графике

Рекурсия часто используется в графике. Рассмотрим некоторые примеры.

Задача. Составить рекурсивный алгоритм рисования окружностей следующего вида:

Центральная окружность радиуса R, на этой окружности симметрично располагаются 4 окружности радиуса R/2 каждая. На каждой из этих 4-х окружностях аналогичным образом строятся ещё 4 и т.д. Рисование прекращается, если радиус последних становится меньше некоторого числа k. Рисование окружностей будем производить относительно центральной окружности с центром (x,y). Центр первой окружности - (x+r,y), второй - (x,y+r), третьей - (x-r,y), четвертой - (x,y-r).  

 

uses crt,graph;

var

   gd,gm,mx,my:integer;

   ch         :char;

procedure krug(x,y,r:integer);

 begin

     if r>k  then  begin  krug(x+r,y,r div 2); krug(x,y+r,r div 2);

krug(x-r,y,r div 2);  krug(x,y-r,r div 2); end;

     circle(x,y,r);

 end;

Procedure Init; {инициализация графического режима}

var err: integer;

begin

  DetectGraph(gd,gm); InitGraph(gd,gm,' путь драйвера');

  if GraphResult<>grok then

    begin    Writeln(GraphErrorMsg(err));Readln;Halt(1);   end;

end;

BEGIN

  Init;

  krug(getmaxX div 2, getmaxY div 2, getmaxY div 4);

END.  

Вверх

Белорусский рейтинг MyMinsk.com Сайты беларуси Регистр "ЗУБР" Каталог на TIGA.BY, а также  новости, работа, объявления, фото и многое другое Рейтинг@Mail.ru Rambler's Top100 Белорусский каталог программ Faststart - рейтинг сайтов, каталог интернет ресурсов, счетчик посещаемос­ти Яндекс.Метрика
Hosted by uCoz