Цель работы. Освоить создание фрактальных композиций при помощи среды программирования Паскаль.
Освоить создание фрактальных композиций при помощи среды программирования Паскаль. Задачи работы Научиться использовать графические возможности языка Паскаль.
Порядок выполнения работы Одним из приложений теории фракталов является генерация фрактальных деревьев. 3.1 Загрузите среду программирования Паскаль. Создайте с ее помощью фрактальную композицию, основанную на повторении элементов дерева. Образец фрактальной композиции предложен на рисунке. program Vetka2; uses Graph, CRT; Const min = 1; Var gd, gm: Integer;
procedure lineto1(x, y: Integer; l, u: real); Begin Line(x, y, Round(x + l * cos(u)), Round(y - l * sin(u))); end;
procedure Draw(x, y: Integer; l, u: real); Begin if KeyPressed then exit; if l > min then begin lineto1(x, y, l, u); x:= Round(x + l * cos(u)); y:= Round(y - l * sin(u)); Draw(x, y, l*0.4, u - pi/4); Draw(x, y, l*0.4, u + pi/4); Draw(x, y, l*0.7, u); end; end;
Begin gd:= Detect; InitGraph(gd, gm, 'c:\bp\bgi'); Draw(320, 460, 120, pi/2); ReadKey; CloseGraph; end. ... procedure Draw(x, y: Integer; l, u: real); Begin if KeyPressed then exit; if l > min then begin lineto1(x, y, l, u); x:= Round(x + l * cos(u)); y:= Round(y - l * sin(u)); Draw(x, y, l*0.4, u - pi/4); Draw(x + Round(l*0.4*cos(u)), y - Round(l*0.4*sin(u)), l*0.4, u + pi/4); Draw(x, y, l*0.7, u); end; end; ...
3.2 Ознакомьтесь с примером программы, создайте фрактальные композиции. В отчете представьте все варианты деревьев.
program Tree3; uses CRT, Graph; Var gd, gm: Integer;
procedure FrTree(x, y, l, u: Real; t: Integer); Begin if t>0 then begin l:= l*0.5; Line(Round(x),Round(y),Round(x+l*cos(u)),Round(y-l*sin(u))); x:= Round(x + l * cos(u)); y:= Round(y - l * sin(u)); FrTree(x, y, l, u, t-1); FrTree(x, y, l, u+pi/4, t-1); FrTree(x, y, l, u-pi/4, t-1); end; end;
Begin gd:=Detect; InitGraph(gd, gm, 'c:\bp\bgi'); FrTree(320, 460, 350, pi/2, 6); FrTree(320, 460, 350, 3*pi/4, 6); FrTree(320, 460, 350, pi/4, 6); ReadKey; CloseGraph end.
3.3 Преобразовать алгоритм создания плоских деревьев трехмерный вариант. Для этого строится ствол дерева случайной длины, от него строятся несколько ветвей тоже случайной длины, при этом толщина уменьшается, далее от каждой ветки строится еще несколько веток, и цикл повторяется. При этом на каждом шаге проверяется длина ветки, если она меньше некоторой заранее определенной величины, то вместо веток рисуется лист, и для этой ветки процесс прекращается. При этом можно изменять самые разные параметры, от ветвистости, толщины ствола и веток, до угла наклона веток и цвета листьев. Изменяя параметры и палитру, можно получить осеннее дерево. Представить свой вариант дерева. program FracTree; uses Graph, CRT; procedure Tree(x, y: Integer; a: Real; l: Integer); Var x1, y1: Integer; p, s: Integer; i: Integer; a1: Real; Begin if l<8 then exit; x1:= Round(x + l*cos(a)); y1:= Round(y + l*sin(a)); if l > 100 then p:=100 else p:=l; if p < 40 then begin {Генерация листьев} if Random > 0.5 then SetColor(10) else SetColor(2); {4, 14} for i:=0 To 3 do Line(x+i, y, x1, y1) End
|