Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Построение фрактальных изображений⇐ ПредыдущаяСтр 25 из 25
Фрактал – это самоподобный объект, у которого любая меньшая часть похожа на целый объект. Обычно фрактальные фигуры строятся с помощью рекурсивных подпрограмм. Простейшим примером фрактальной фигуры является снежинка: Алгоритм рисования снежинки: из одной точки – центра вырастают k кристалликов-отрезков длины r, свободный конец каждого из которых служит центром новой снежинки с длиной кристаллика–отрезка, в 3 раза меньшей r. Указанный процесс продолжается n раз. Выше показаны снежинки при n =1,2 и k =6. Для построения снежинок введем рекурсивную процедуру, параметрами которой будут координаты центра снежинок x 0, y 0, радиус– длина r и глубина рекурсии n. Для размещения рисунка в центре экран начальный радиус определим по формуле: , полагая dim=240, k =1/3. Получим: k =160/(1–1/3 n). Координаты концов отрезка (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 с.: ил.
Учебное издание
Ружицкая Елена Адольфовна Карасёва Галина Леонидовна Орлов Владимир Васильевич Смородин Виктор Сергеевич Дёмова Тамара Максимовна Богданова Татьяна Григорьевна
Date: 2015-10-19; view: 311; Нарушение авторских прав |