
- •Менський Микола Іванович побудова фрактальних зображень
- •Основна частина Що таке фрактал ?
- •Множина Мандельброта
- •Фрактальні орбіти
- •Ітераційні функціональні системи (ifs)
- •Геометричні фрактали.
- •Побудова графічного зображення трикутника Серпінського
- •Побудова графічного зображення кривої Коха
- •Крива Гільберта
- •Крива Безьє
- •Технічне завдання Опис схеми програмного продукту «Фрактальний сад»
- •Вимоги до програмного забезпечення
- •Вимоги до апаратного забезпечення
- •Стадії та етапи розробки
- •Опис застосування
- •Висновок
- •Рекомендації
- •Список використаної літератури:
- •Додатки
- •Построение фракталов. Часть первая.
Побудова графічного зображення трикутника Серпінського
Побудова графічного зображення трикутника Серпінського з використанням методу L-системи
Const
iter = 5;
Procedure tr(x1, y1, x2, y2, x3, y3: Real);
Begin
Form1.PaintBox1.Visible:=False;
Form1.Image1.Visible:=True;
Form1.Image2.Visible:=False;
Form1.Image4.Visible:=False;
Form1.Image3.Visible:=False;
Form1.Image1.Canvas.LineTo(round(x1), round(y1));
Form1.Image1.Canvas.LineTo(round(x2), round(y2));
Form1.Image1.Canvas.LineTo(round(x2), round(y2));
Form1.Image1.Canvas.LineTo(round(x3), round(y3));
Form1.Image1.Canvas.LineTo(round(x3), round(y3));
Form1.Image1.Canvas.LineTo(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);
Form1.Image1.Canvas.LineTo(round(x1), round(y1));
Form1.Image1.Canvas.LineTo(round(x2), round(y2));
Form1.Image1.Canvas.LineTo(round(x2), round(y2));
Form1.Image1.Canvas.LineTo(round(x3), round(y3));
Form1.Image1.Canvas.LineTo(round(x3), round(y3));
Form1.Image1.Canvas.LineTo(round(x1), round(y1));;
End;
End;
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
tr(265,10,545,470,5,470);
draw(265,10,545,470,5,470,10);
end;
IFS- алгоритм
Трикутник Серпінського легко можна побудувати з допомогою трьох IFS-перетворень. Програма для побудови трикутника Серпінського цим методом на мові Delphi має вигляд:
procedure TForm1.BitBtn1Click(Sender: TObject);
const iter = 50000;
Var
t, x, y, p : Real;
my, rad : Integer;
Begin
my := 548;
rad := my;
Randomize;
x := 0.0;
y := 0.0;
repeat
ProgressBar1.Position:=ProgressBar1.Position+2;
p := Random;
t := x;
If p <= 1/3 Then Begin
x := 0.50 * x + 0.00 * y + 0.0;
y := 0.00 * t + 0.50 * y + 0.5;
End
Else
If p <= 2/3 Then Begin
x := 0.50 * x + 0.00 * y - 0.25;
y := 0.00 * t + 0.50 * y + 0.0;
End
Else Begin
x := 0.50 * x + 0.00 * y + 0.25;
y := 0.00 * t + 0.50 * y + 0.0;
End;
Image2.Canvas.Ellipse(275 + Round(rad * x), 549 - Round(rad * y), 276 + Round(rad * x), 550 - Round(rad * y));
until Form1.ProgressBar1.Position=150000;
end;
Ще один спосіб побудови трикутника Серпінського- використання нелінійних перетворень.
procedure TForm1.BitBtn8Click(Sender: TObject);
var
l, x, y: Real;
Begin
Randomize;
Repeat
Form1.ProgressBar1.Position:=ProgressBar1.Position+2;
l:=2/3*pi*random(3);
x:=x/2+cos(l);
y:=y/2+sin(l);
Image4.Canvas.Ellipse(220 + Round(x*130), 260 - Round(y*130), 221 + Round(X*130), 261- Round(y*130));
until ProgressBar1.Position=xc;{60000}
End;