Экспериментальное моделирование собственных фракталов
Фрактальная графика на паскале.
Мною были понятия такие как :
Фрактал – (лат. fractus — дроблёный, сломанный, разбитый) — математическое множество, обладающее свойством самоподобия, то есть однородности в различных шкалах измерения.
Самоподобие, самоподобный объект — объект, в точности или приближённо совпадающий с частью себя самого (то есть целое имеет ту же форму, что и одна или более частей). Самоподобие есть характеристическое свойство фрактала. Многие объекты реального мира обладают свойством самоподобия.
Язык программирования Паскаль - язык программирования общего назначения. Один из наиболее известных языков программирования, используется для обучения программированию в школах, ССУЗах, ВУЗах, в дальнейшем он служит базой для ряда других языков.
Классификация фракталов
Вообще фракталом называется предмет который обладает одним из указанных свойств:
· Обладает нетривиальной структурой на всех масштабах. В этом и есть отличие от регулярных фигур, таких как окружность или эллипс. Если мы рассмотрим небольшой фрагмент регулярной фигуры в крупном масштабе, то он будет похож на фрагмент прямой. Для фрактала увеличение масштаба не ведет к упрощению структуры, на всех шкалах мы увидим одинаково сложную картину.
· Является самоподобным или приближенно самоподобным.
· Обладает дробной метрической размерностью.
|
|
В основном фракталы классифицируют по трём видам:
· Алгебраические фракталы .
· Геометрические фракталы .
· Стохастические фракталы.
Алгебраические фракталы - это самая крупная группа фракталов, получившая название за использование алгебраических формул.
Геометрические фракталы. Это самый первый, ранний тип фракталов, с которых, по сути, и началась история фракталов. Фракталы этого класса самые наглядные, потому что в них сразу видна самоподобность. В двухмерном случае такие фракталы можно получить, задав некоторую ломаную, называемую генератором. За один шаг алгоритма каждый из отрезков, составляющих ломаную, заменяется на ломаную-генератор. В результате бесконечного повторения этой процедуры (а, точнее, при переходе к пределу) получается фрактальная кривая. При видимой сложности полученной кривой, её общий вид задается только формой генератора.
Стохастические фракталы. Типичный представитель данного класса фракталов "Плазма". Для ее построения возьмем прямоугольник и для каждого его угла определим цвет. Далее находим центральную точку прямоугольника и раскрашиваем ее в цвет равный среднему арифметическому цветов по углам прямоугольника плюс некоторое случайное число. Чем больше случайное число - тем более "рваным" будет рисунок. Если мы теперь скажем, что цвет точки это высота над уровнем моря - получим вместо плазмы - горный массив. Именно на этом принципе моделируются горы в большинстве программ.
|
|
Мною были построены и изучены следующие фрактальные объекты:
1. Дерево Пифагора
2. Ковер Серпинского
3. Фрактальное дерево
Рассмотрим их более подробно:
1. Дерево Пифагора
uses CRT, GraphABC; Procedure Rect(x1, y1, l: Integer; a1: Real); Begin MoveTo(x1, y1); LineTo(x1 + Round(l * cos(a1)), y1 - Round(l * sin(a1))); LineTo(x1 + Round(l * sqrt(2) * cos(a1 + pi/4)), y1 - Round(l * sqrt(2) * sin(a1 + pi/4))); LineTo(x1 + Round(l * cos(a1 + pi/2)), y1 - Round(l * sin(a1 + pi/2))); LineTo(x1, y1) End; Procedure Draw(x, y, l, a: Real); Begin If l > 4 Then Begin Rect(Round(x), Round(y), Round(l), a); Draw(x - l*sin(a), y - l * cos(a), l / sqrt(2), a + pi / 4); Draw( x - l * sin(a) + l / sqrt(2) * cos(a + pi/4), y - l * cos(a) - l / sqrt(2) * sin(a + pi/4), l / sqrt(2), a - pi/4) End End; Begin SetWindowCaption('Фракталы: Дерево Пифагора'); SetWindowSize(730,500); ClearWindow; Draw(280, 460, 100, 0); Repeat Until KeyPressed End. |
2. Ковер Серпинского
|
|
|
3. Треугольник Серпинского
Uses CRT, GraphABC; Const Z = 7; { Глубина фрактала } Procedure tr(x1, y1, x2, y2, x3, y3: Real); Begin Line(Round(x1), Round(y1), Round(x2), Round(y2)); Line(Round(x2), Round(y2), Round(x3), Round(y3)); Line(Round(x3), Round(y3), Round(x1), Round(y1)); End; Procedure draw(x1, y1, x2, y2, x3, y3: Real; n: Integer); Var x1n, y1n, x2n, y2n, x3n, y3n : Real; Begin If n > 0 Then Begin x1n := (x1 + x2) / 2; y1n := (y1 + y2) / 2; x2n := (x2 + x3) / 2; y2n := (y2 + y3) / 2; x3n := (x3 + x1) / 2; y3n := (y3 + y1) / 2; tr(x1n, y1n, x2n, y2n, x3n, y3n); draw(x1, y1, x1n, y1n, x3n, y3n, n - 1); draw(x2, y2, x1n, y1n, x2n, y2n, n - 1); draw(x3, y3, x2n, y2n, x3n, y3n, n - 1) End End; Begin SetWindowCaption('Фракталы: Треугольник Серпинского'); SetWindowSize(650,500); ClearWindow; tr(320,10,600,470,40,470); draw(320,10,600,470,40,470,Z); Repeat Until KeyPressed End. |
Экспериментальное моделирование собственных фракталов
В своих исследованиях я пытался, используя разработанные алгоритмы модифицировать фрактальные изображения и построить свои фракталы. В предложенной работе мной выполнено программирование своего изображения фрактала на языке программирования Pascal.
|
|
uses crt, graphABC;
var n,i,x1,x2,x3,y1,y2,y3: integer;
begin
x1:=150;x2:=250;x3:=200;y1:=270;y2:=270;y3:=180;
setpenwidth(5);
for n:=1 to 16 do
begin
if (n mod 2 =0) then
begin
setpencolor(clred);
moveto(x1,y1);lineto(x2,y2);lineto(x3,y3);lineto(x1,y1)
end
else
begin
setpencolor(clgreen);
moveto(x1,y1);lineto(x2,y2);lineto(x3,y3);lineto(x1,y1);
end;
x1:=x1-8;x2:=x2+8;y1:=y1+4;y2:=y2+4;y3:=y3-8;
end;
end.
В процессе исследования проведена следующая работа:
- изучены понятия, «фрактал», «Самоподобие, самоподобный объект», «язык программирования».
- выявлены существующие приемы и способы программирования фракталов;
- проанализированы программы для построения фракталов, с использованием изученных способов;
Следует отметить, что при проведении эксперимента выяснилось, что зная способы программирования фракталов, разбираясь в сути рекурсивных алгоритмов можно создать программы для построения собственных геометрических фракталов, а затем и многомерных поверхностей. Именно поэтому работу по изучению способов программирования следует продолжить, изучая при этом возможности других языков программирования и попытаться составить программы для построения многомерных поверхностей.
Практическое применение данного вопроса подразумевает возможность создания средствами программирования живых моделей любых фрактальных объектов на основе составления программ для самоподобных форм.
Дата добавления: 2019-01-14; просмотров: 586; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!