Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Pascal 2005 Часть2.doc
Скачиваний:
3
Добавлен:
27.08.2019
Размер:
846.34 Кб
Скачать

5. Построение фрактальных изображений.

Фрактал – это самоподобный объект, у которого любая меньшая часть похожа на целый объект. Обычно фрактальные фигуры строятся с помощью рекурсивных подпрограмм. Простейшим примером фрактальной фигуры является снежинка:

Алгоритм рисования снежинки: из одной точки – центра вырастают k кристалликов-отрезков длины r, свободный конец каждого из которых служит центром новой снежинки с длиной кристаллика–отрезка, в 3 раза меньшей r. Указанный процесс продолжается n раз. Выше показаны снежинки при n=1,2 и k=6.

Для построения снежинок введем рекурсивную процедуру, параметрами которой будут координаты центра снежинок x0, y0, радиус– длина r и глубина рекурсии n. Для размещения рисунка в центре экран начальный радиус определим по формуле: , полагая dim=240, k=1/3. Получим: k=160/(1–1/3n). Координаты концов отрезка (x,y) будем находить, используя параметрическое задание уравнения окружности со смещением на заданный угол:

.

Чтобы величины и не вычислялись в цикле многократно, запомним их значения в массивах C и S.

Program Sneg;

Uses Graph;

Const

k=6; {количество кристаллов}

n=5; {глубина рекурсии}

t=2*Pi/k; {угол поворота}

Var

Driver,Mode,I :Integer;

C,S :array[1..k] of Real;

Procedure Snow(x0,y0,r,m:Integer);

Var

x,y,i:Integer;

Begin

For i:=1 to k do

begin

x:=x0+Round(r*C[i]);

y:=y0-Round(r*S[i]);

Line(x0,y0,x,y);

If m>1 then Snow(x,y,r div 3,m-1)

end;

End;

Begin

Driver:=Detect;

InitGraph(Driver,Mode,'');

For i:=1 to k do

begin

C[i]:=Cos(i*t);

S[i]:=Sin(i*t);

end;

Snow(GetMaxX div 2,GetMaxY div 2,

Round(160/(1-1/(Exp(n*Ln(3))))),n);

ReadLn;

CloseGraph;

End.

Литература

  1. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. Пособие / Ю.С.Бородич, А.Н.Вальвачев, А.И.Кузьмич. – Мн.: Выш. шк.: БФ ГИТМП «НИКА», 1991. – 365 с.

  2. Вальвачев А.Н., Крисевич В.С. Программирование на языке Паскаль для персональных ЭВМ ЕС: Справ. пособие. – Мн.: Выш.шк., 1989. – 223 с.: ил.

  3. Офицеров Д.В. и др. Программирование на персональных ЭВМ: Практикум: Учеб. Пособие / Д.В.Офицеров, А.Б. Долгий, В.А.Старых; Под общ. ред. Д.В.Офицерова. – Мн.: Выш.шк., 1993. – 256 с.

  4. Немнюгин С.А. Turbo Pascal: практикум – СПб: Питер, 200. – 256 с.:ил.

  5. Пантелеева З.Т. Графика вычислительных процессов: Учеб.пособие. – М.: Финансы и статистика, 1983. – 167 с., ил.

  6. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. – М.: «Нолидж», 1997. – 616 с., ил.

  7. Фигурнов В.Э. IBM PC для пользователя. Изд. 7-е, перераб. И доп. – М.: ИНФРА – М, 1997. – 640 с.: ил.

Учебное издание

Ружицкая Елена Адольфовна

Карасёва Галина Леонидовна

Орлов Владимир Васильевич

Смородин Виктор Сергеевич

Дёмова Тамара Максимовна

Богданова Татьяна Григорьевна

Программирование на языке Pascal. Практическое пособие в двух частях. Часть 2.

В авторской редакции

Подписано в печать 01.10.2005 г. (№132). Формат издания 60x84 1/16.

Бумага писчая №1. Печать на ризографе. Гарнитура Таймс.

Усл.п.л. 5,4. Уч-изд.л. 4,3. Тираж 20 экз.

Учреждение образования

«Гомельский государственный университет

имени Франциска Скорины»,