Использование рекурсии в графикеРекурсия часто используется в графике. Рассмотрим некоторые примеры. Задача. Составить рекурсивный алгоритм рисования окружностей следующего вида: Центральная окружность радиуса 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. |