Матрица статей        Список статей        Всячина        Контакты       

Звёздные фракталы


Звёздный фрактал

Звёздный фрактал состоит из правильной пятиконечной звезды с гирляндой из пяти меньших образцов. Каждая из этих пяти более мелких звёзд несёт на своих четырёх свободных концах ещё более мелкие звёзды. Этот процесс можно продолжать бесконечно, и в результате мы получим звёздный фрактал изображённый на рисунке. Этот фрактал строится как замкнутая ломаная линия, каждый следующий отрезок которой отклоняется всега на один и тот же угол . Фрагмент с изображён на рисунке ниже.


Схема построения звёздного фрактала

Рассмотрим предфрактал пятого порядка. Предположим, что отрезки пронумерованы от 0 до . Если первый отрезок с индексом имеет направление , то направление произвольного отрезка с индексом будет . При построении такого фрактала мы должны иметь правило, по которому определяется длина -ого отрезка, если мы знаем длину -го отрезка. Для случая, изображённого на рисунке, имеем 5 различных длин: , , , , , где — показатель уменьшения.

Правило, на котором основано построение, следующее:

Отсюда следует, что длина отрезка с индексом n зависит от числа множителей в . Приведём программу реализующую данный алгоритм:

program Star;

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.

Теперь обобщим это правило на другие звёздные фракталы. Обозначим порядок предфрактала символом и возмём произвольное число вместо 4. Тогда мы получим следующее правило:


Звёздный фрактал Звёздный фрактал Звёздный фрактал

Ссылки:

  • Star Fractal ,
  • А. Д. Морозов Введение в теорию фракталов. — Москва-Ижевск: Институт компьютерных исследований, 2002. 50—53.