Узор №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.
Все. Ничего особенного в этой программе нет, но она дает совершенно потрясающие результаты!