Фрактал Lace

Screen_Lace.png

Построить фрактал Lace.

Для построения фрактал Лейс используем параметр А - случайный коеффициент в диапазоне [0,1].
Если коэффициент А <= 1/4,то мы вычисляем значения по формулам

w:=Arctg(x-1, y);
Y1:=-r0*cos(w)/2+1;
X1:=-r0*sin(w)/2;

а если коэффициент А<=2/4,то по этим

w:=Arctg(x+1/2, y-sqrt(3)/2);
Y1:=-r0*cos(w)/2-1/2;
X1:=-r0*sin(w)/2+sqrt(3)/2;

если коэффициент А<=3/4(других быть не может), то по этим

w:= Arctg(x+1/2, y+sqrt(3)/2);
Y1:=-r0*cos(w)/2-1/2;
X1:=-r0*sin(w)/2-sqrt(3)/2;

Program Lace;
Uses CRT, Graph;
Var                     {Обьявление}
  gd, gm: Integer;
  x, y, a, x1, y1: Real;
  n: Integer;
  r0, w: Real;
Function Arctg(x,y:Real):Real;       {Function}
Var
  w:Real;
Begin
  w:=arctan(abs(y/x));
  If (y>0)and(x<0) then w:=pi-w Else
  If (y<0)and(x<0) then w:=w+pi Else
  If (y<0)and(x>0) then w:=-w;
  Arctg:=w;          {Return w}
End;
 
Begin
  gd:=Detect;
  InitGraph(gd, gm, ' ');   {Инициализация графики}
  x:=0.1;
  y:=0.1;
  While not KeyPressed do Begin     {Нажатие для выхода из проги}
    a:=Random;            {Случайное значение а}
    r0:=sqrt(x*x+y*y);
    w:=Arctg(x-1, y);
    If a <= 1/4 then Begin
      w:=Arctg(x-1, y);
       Y1:=-r0*cos(w)/2+1;
       X1:=-r0*sin(w)/2;
    End Else
    If (a<=2/4) then Begin
       w:=Arctg(x+1/2, y-sqrt(3)/2);
       Y1:=-r0*cos(w)/2-1/2;
       X1:=-r0*sin(w)/2+sqrt(3)/2;
    End Else
    If (a<=3/4) then Begin
       w:= Arctg(x+1/2, y+sqrt(3)/2);
       Y1:=-r0*cos(w)/2-1/2;
       X1:=-r0*sin(w)/2-sqrt(3)/2;
    End Else
    Begin
       w:=Arctg(x, y);
       Y1:=-r0*cos(w)/2;
       X1:=-r0*sin(w)/2;
    End;   {End while}
    x:=x1;
    y:=y1;
    PutPixel(Round(320+130*x), Round(200+130*y), 14);    {Вырисовка }
  End;
  ReadKey;
  CloseGraph;
End.

Ключевые слова: 
Фрактал Lace
ВложениеРазмер
Lace.zip20.33 кб