![]() |
Матрица статей Список статей Всячина Контакты | ||||||||||||
|
Фракталы из окружностей Множество Апполона
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.
Смотрите также: Ссылки: |