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

Фракталы из окружностей

Множество Апполона


Множество Аполлона

program Apollony;
uses CRT, Graph;
var
	gd, gm: Integer;
	x, y, a, b: Real;
	r: Real;
	a0, b0: Real;
	a1, b1, a2, b2: Real;
	f1x, f1y: Real;
	x1, y1: Real;
	
begin
	gd := detect;
	InitGraph(gd, gm, 'c:\bp\bgi');
	x := 0.2;
	y := 0.3;
	a := 0;
	b := 0;
	Randomize;
	r := Sqrt(3);
	while not KeyPressed do 
	begin
		a := Random;
		a0 := 3*(1+r-x)/(sqr(1+r-x)+sqr(y))-(1+r)/(2+r);
		b0 := 3*y/(sqr(1+r-x)+sqr(y));
		if (a <= 1/3) and (a>=0) then 
		begin
			x1 := a0;
			y1 := b0;
		end;
		a1 := -1/2;
		b1 := r/2;
		a2 := -1/2;
		b2 := -r/2;
		f1x := a0/(sqr(a0)+sqr(b0));
		f1y := -b0/(sqr(a0)+sqr(b0));
		if (a <= 2/3) and (a > 1/3) then 
		begin
			x1 := f1x*a1-f1y*b1;
			y1 := f1x*b1+f1y*a1;
		end;
		if (a <= 3/3) and (a > 2/3) then 
		begin
			x1 := f1x*a2-f1y*b2;
			y1 := f1x*b2+f1y*a2;
		end;
		x := x1;
		y := y1;
		PutPixel(320+Round(x*50), 240+Round(y*50), 15);
	end;
	ReadKey;
	CloseGraph;
end.

Целующиеся круги


Целующиеся круги

uses CRT, Graph;
var
	gd, gm : Integer;
const
	Min = 1;
	n = 7;
	m = 5;
  
procedure Draw(x, y : Integer; Size : Word);

var
  s1, s2 : Integer;
  i : Integer;
  
begin
	if Size > Min then 
	begin
		s1 := Size div n;
		s2 := Round(Size * (n-1)/n);
		for i := 1 to m do 
		begin
			Draw(x - Round(s2*sin(2*pi/m*i)),
				y + Round(s2*cos(2*pi/m*i)), s1);
		end;
		Draw(x,y,s1); {center}
	end;
	Circle(x, y, Size);
end;

begin
	gd := Detect;
	InitGraph(gd,gm,'c:\bp\bgi');
	Draw(320,240,200);
	ReadKey;
	CloseGraph;
end.

Целующиеся круги Целующиеся круги

Смотрите также:

Ссылки: