Узор №2

С помощью этого примера вы сможете создать очень красивые узоры. Этот проект основан на  гипотрохоидах и эпитрохоидах.

посмотреть скриншоты

поместите объект Image1: Timage на форму.

Нам естественно понадобятся переменные=)

var

  Form1: TForm1;

  r1,r2,h,x,y,m:real;

  t:integer; //время

  r,g,b:integer; //составляющие цвета

 

далее надо провести инциализацию.

 

procedure init;

begin

  r1:=40;

  r2:=20;

  h:=10;

  m:=r1/r2; // вспомогательная величина

  form1.image1.Canvas.brush.Color:=clblack; //цвет заднего фона

end;

процедура прорисовки одной линии с данным цветом:

procedure draw;

begin

  form1.Image1.Canvas.Pen.Color:=tcolor(rgb(r,g,b));

  form1.image1.Canvas.LineTo(round(x),round(y));

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

  randomize;

  init;

end;

 

теперь нажмите два раза на Image1 и напишите следующее:

procedure TForm1.Image1Click(Sender: TObject);

begin

  t:=1;

  x:=(r2+m*r2)*cos(m*t)-h*cos(t+m*t)+500;

  y:= (r2+m*r2)*sin(m*t)-h*sin(t+m*t)+350;

  image1.Canvas.moveTo(round(x),round(y));

  form1.image1.Canvas.Rectangle(0,0,1024,768);

  for t:=2 to 3600 do

  begin

    x:=(r2+m*r2)*cos(m*t)-h*cos(t+m*t)+500; // это основные формулы программы

    y:= (r2+m*r2)*sin(m*t)-h*sin(t+m*t)+350; // без них вы не получите таких узоров

    r:=round(x); //составляющие цвета

    g:=round(x); //можно делать любыми

    b:=round(x); //это уж насколько вашей фантазии хватит

    draw;

  end;

  image1.Picture.SaveToFile(inttostr(random(1000000))+'.bmp'); // сохраняем картинку в файл со случайным именем

end;

end.

 

Все. Ничего особенного в этой программе нет, но она дает совершенно потрясающие результаты!

Посмотреть весь текст

Hosted by uCoz