Самоорганизация и неравновесные
процессы в физике, химии и биологии
 Мысли | Доклады | Самоорганизация 
  на первую страницу НОВОСТИ | ССЫЛКИ   

Звездные фракталы
от 22.08.06
  
Самоорганизация


День Государственного флага Российской Федерации

Вологодское кружево
5
Звездный фрактал состоит из правильной пятиконечной звезды и гирляндой из пяти меньших образцов. Каждая из этих пяти более мелких звезд несет на своих четырех свободных концах еще более мелкие звезды. Этот процесс можно продолжать бесконечно, и в результате мы получим звездный фрактал изображенный на рисунке. Этот фрактал строится как замкнутая ломаная линия последовательные отрезки всегда пересекаются под одним и тем же углом. Фрагмент с а = 4pi/5 изображен на рисунке ниже
72
Предположим, что отрезки пронумерованы от 0 до n = 1279. Если первый отрезок с индексом n = 0 имеет направление ф = 0, то направление произвольного отрезка с индексом n будет аn. При построении такого фрактала мы должны иметь правило, по которому определяется длина n-ого отрезка, если мы знаем длину (n-1)-го отрезка. Для случая, изображенного на рисунке, имеем 5 различных длин: 1, r, r2, r3, r4, где r - показатель уменьшения.
Правило на котором основано построение будет следующее:
n = 1, 2, 3, 5, 6, 7, 9, 10, 11, 13,... длина r4
n = 4, 8, 12, 20, 24, 28, 36, 40, 44, 52,... длина r3
n = 16, 32, 48, 80, 96, 112,... длина r2
n = 64, 128, 192, 320, 384, 448,... длина r1
n = 0, 256, 512, 768, 1024,... длина r0
Отсюда следует, что длина отрезка с индексом n зависит от числа множителей 4 в n. Приведем программу реализующую данный алгоритм:
program Zvezda;
uses Crt, Graph;
const
  it = 1280;
  r = 0.35;
  l = 300;
  da = 4*pi/5;
  v = 4;

var
   gd,gm : Integer;
   a     : Real;
   x, y  : Real;
   xn,yn : Real;
   i     : Integer;

function Mn(nn: Integer): Real;
begin
  if nn mod (v*v*v*v) = 0 then Mn:=1     else
  if nn mod (v*v*v)   = 0 then Mn:=r     else
  if nn mod (v*v)     = 0 then Mn:=r*r   else
  if nn mod (v)       = 0 then Mn:=r*r*r else
                               Mn:=r*r*r*r;
end;
begin
   gd := Detect;
   InitGraph(gd,gm,'c:\bp\bgi');
   a:=0;
   x:=200;
   y:=320;
   for i:=0 to it do begin
     xn:=x+sin(a)*l*Mn(i);
     yn:=y-cos(a)*l*Mn(i);
     Line(Round(x), Round(y), Round(xn), Round(yn));
     x:=xn;
     y:=yn;
     a:=a+da;
   end;
   ReadKey;
   closegraph;
end.
Т.к. мы строим только приближение или как еще называют предфрактал, то вообще-то мы в последнем случае должны вычитать некую маленькую величину, зависящую от приближения - R(p) = rp/(1-r), во избежания некрасивых эффектов, проявляющихся в том, что последняя звездочка больше чем предпоследняя.
Теперь обобщим это правило так, чтобы можно было построить другой звездный фрактал. Обозначим число шагов через p и возмем произвольное число н вместо 4. Тогда мы получим следующее правило:
n не имеет множителя н длина rp - 1
n имеет один множитель н длина rp - 2
... ...
n имеет, по крайней мере, (p-1) множителей н длина r0
В общем случае индекс отрезка меняется от 0 до (н + 1)нp - 1. Их ровно н + 1 отрезков самой большой длины 1; (н + 1)(н - 1) - длины r; (н + 1)(н2 - н) - длины r2 и.т.д.
Если положить p = 7, н = 3, а = pi/2, r = 0.47, то получим квадратичный звездный фрактал. Звездные фракталы, полученные с различными параметрами, приведены на рисунках ниже.
45
3
А.Д. Морозов. Введение в теорию фракталов
http://fractalworld.xaoc.ru/article/zvezd.html


  


СТАТИСТИКА