Рекурсивные графические построения - Разработка Windows-приложений в среде Borland Delphi

Цель Работы: Получить навыки использования рекурсии.

Пояснения к работе

Рекурсивным называется объект, частично состоящий или определяемый с помощью самого себя. Рекурсия встречается не только в математике, но и в повседневной жизни.

В жизни Вам не раз приходилось сталкиваться с рекурсией. Вспомните хотя бы стихотворение "У попа была собака" или "10 негритят пошли купаться в море..."

Или то, как, сидя в поезде, вы ловили свое отражение в зеркале, которое отражалось в зеркале напротив, которое отражалось в зеркале напротив...

Слово "рекурсия" происходит от латинского слова "recursio" - возвращение.

Определение: Если подпрограмма обращается сама к себе как к подпрограмме непосредственно или через цепочку подпрограмм, то это называется рекурсией. А такие подпрограммы называются рекурсивными.

Для завершения рекурсивных вызовов в рекурсивной подпрограмме обязательно должно быть условие выхода из нее, заканчивающееся возвратом в вызывающую программу.

Постановка задачи

Разработать приложение для рекурсивного построения изображения, представленного на рис.

Порядок выполнения

    21. Создать новый проект. 22. Объявить глобальные переменные

K, gd, gm, mx, my:integer; ch :char;

23. Создать следующие процедуры

Procedure TForm1.FormCreate(Sender: TObject);

Begin

K:=15;//минимальный размер окружности

End;

Procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

Begin

Krug(X, Y, Y div 2);

End;

Procedure tform1.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;

Form1.Canvas. Ellipse (x-r, y-r, x+r, y+r);

End;

    24. Проверить работу программы. 25. Изменить процедуры Tform1.krug И FormMouseDown,Проверить работу программы

If r>k then

Begin

Form1.Canvas. Pen. Color:=RGB(Random(255),Random(255),Random(255));

Krug(x+r+(r Div 2),Y, r div 2);

Krug(x, y+r+(R Div 2),r div 2);

Krug(x-r-(r Div 2),Y, r div 2);

Krug(x, y-r-(R Div 2),r div 2);

End;

Form1.Canvas. Ellipse (x-r, y-r, x+r, y+r);

End;

Krug(X, Y, Y div 4)

    26. Заменить рисование окружности на рисование прямоугольника и просмотреть результат. 27. Самым знаменитым примером площадного геометрического фрактала является треугольник Серпинского (см. рис.), строящийся путем разбиения треугольника, необязательно равностороннего - средними линиями на четыре подобных треугольника, исключением центрального и рекурсивного разбиения угловых треугольников до получения площадных элементов желаемого разрешения.

Добавить на форму командную кнопку и ввести для нее следующий код

Tri(150,150,225,0,300,150,5);

Создать и объявить следующую процедуру

PROCEDURE tform1.TRI(x1,y1,x2,y2,x3,y3, N: integer);

Var x12,y12,x23,y23,x31,y31: integer;

Begin If N<>0 then

Begin

X12:=(x1+x2) div 2; y12:=(y1+y2) div 2;

X23:=(x2+x3) div 2; y23:=(y2+y3) div 2;

X31:=(x3+x1) div 2; y31:=(y3+y1) div 2;

Form1.Canvas. MoveTo(x31,y31);

Form1.Canvas. LineTo(x12,y12);

Form1.Canvas. LineTo(x23,y23);

Form1.Canvas. LineTo(x31,y31);

TRI(x1,y1,x12,y12,x31,y31, N-1);

TRI(x2,y2,x12,y12,x23,y23, N-1);

TRI(x3,y3,x31,y31,x23,y23, N-1)

End;

End;

28. Проверить работу программы.

Самостоятельно Разработать Программу, которая рисует множество Кантора.

Рисунок множество Кантора образован квадратами. Каждый следующий квадрат в четыре раза меньше предыдущего. Центр каждого следующего квадрата расположен в вершине предыдущего квадрата и т. д. Так как рисунок состоит из однотипных элементов, и есть явная зависимость, как размеров, так и положения, следовательно, при создании данного рисунка можно использовать в программе рекурсию.

ПРАКТИЧЕСКАЯ РАБОТА № 10

Похожие статьи




Рекурсивные графические построения - Разработка Windows-приложений в среде Borland Delphi

Предыдущая | Следующая