Понятия фрактал и фрактальная геометрия были предложены Бенуа Мандельбротом в 1975 году для обозначения нерегулярных, но самоподобных структур, которыми он занимался. Рождение фрактальной геометрии принято связывать с выходом в 1977 году книги Мандельброта «The Fractal Geometry of Nature». В его работах использованы научные результаты других ученых, работавших в период 1875-1925 годов в той же области (Пуанкаре, Фату, Жюлиа, Кантор, Хаусдорф). Но только в наше время удалось объединить их работы в единую систему.
Одним из основных свойств фракталов является самоподобие. В самом простом случае небольшая часть фрактала содержит информацию о всем фрактале.
Определение фрактала, данное Мандельбротом, звучит так: «Фракталом называется структура, состоящая из частей, которые в каком-то смысле подобны целому».
Алгоритм построения треугольника Серпинского:
var n: integer;
procedure 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;
MoveTo(x31, y31);
LineTo(x12, y12);
LineTo(x23, y23);
LineTo(x31, y31);
FloodFill(x23, y23-3, clwhite);
TRI(x31, y31, x23, y23, x3, y3, n - 1);
TRI(x12, y12, x2, y2, x23, y23, n - 1);
TRI(x1, y1, x12, y12, x31, y31, n - 1)
end;
end;
begin
write('n='); readln(n);
MoveTo(320, 0);
LineTo(640, 480);
LineTo(0, 480);
LineTo(320, 0);
FloodFill(320, 3, clgreen);
TRI(320, 0, 640, 480, 0, 480, n);
end.
Пример 2. Красная водоросль
Алгоритм построения красной водоросли:
Данная программа позволяет рисовать изображение в зависимости от введённого пользователем n уровней.
Фрактал состоит из сочетания линий, координаты начала и конца определяются процедурой
Line(x, y, Round(x + l * cos(u)), Round(y - l * sin(u))), l отвечает за длину ветви, u – за угол наклона.
var n: integer;
procedure Draw(x, y: integer; l, u: real; n: integer);
begin
if n > 0 then
begin
Line(x, y, round(x + l * cos(u)), round(y - l * sin(u)));
x := round(x + l * cos(u));
y := round(y - l * sin(u));
Draw(x, y, l * 0.4, u - Pi / 4, n - 1);
Draw(x, y, l * 0.4, u + Pi / 4, n - 1);
Draw(x, y, l * 0.7, u, n - 1);
end;
end;
begin
write('n='); readln(n);
SetPenColor(clred);
Draw(320, 460, 140, Pi / 2, n);
end.
Номер варианта | Задание |
---|---|
1 | Напишите программу, позволяющую построить фрактал Ковер Серпинского в зависимости от введённого пользователем n уровней. Возьмите за основу пример построения треугольника Серпинского. |
2 | Напишите программу, позволяющую построить фрактал Кладбище Серпинского в зависимости от введённого пользователем n уровней. Возьмите за основу пример построения треугольника Серпинского. |
3 | Напишите программу, позволяющую построить фрактал Дерево в зависимости от введённого пользователем n уровней. Возьмите за основу пример построения красной водоросли. |
4 | Напишите программу, позволяющую построить фрактал Дерево в зависимости от введённого пользователем n уровней. Возьмите за основу пример построения красной водоросли. |
5 | Напишите программу, позволяющую построить фрактал Прямоугольники в зависимости от введённого пользователем n уровней. |
6 | Напишите программу, позволяющую построить фрактал Дерево в зависимости от введённого пользователем n уровней. Возьмите за основу пример построения красной водоросли. |
7 | Напишите программу, позволяющую построить фрактал Дерево в зависимости от введённого пользователем n уровней. Возьмите за основу пример построения красной водоросли. |