Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая работа / Программа / Окончательная / Unit1
.pas unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
image1: TImage;
xpmanifest1: TXPManifest;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses unit2;
procedure gf;
const
iterations = 500000; //Кол-во итераций
var
t, x, y: real;
p: real;//CЛУЧАЙНАЯ ВЕЛИЧИНА
k: longint;
mid_x, mid_y, radius: integer;
begin
mid_x := form1.width div 2;{выбор координат центра рисунка}
mid_y := form1.height -200 ;
radius := trunc(0.1 * mid_y);{масштабирование папоротника}
randomize;
x := 1.0;
y := 0.0;
for k := 1 to iterations do
begin
p := random;
t := x;
if p <= 0.85 then //Построение верхней части листа
begin
x := 0.84 * x -0.045 * y;
y := 0.045 * t + 0.86 * y + 1.6;
end
else
if p <= 0.92 then //Построение левого листа
begin
x := 0.25 * x - 0.26 * y;
y := 0.23 * t + 0.25 * y + 1.6;
end //Построение правого листа
else
if p <= 0.99 then
begin
x := -0.135 * x + 0.28 * y;
y := 0.26 * t + 0.245 * y + 0.44;
end
else
begin //Построение стебля
x := 0.0;
y := 0.16 * y ;
end;
Form1.image1.Canvas.Pixels[mid_x+round(radius*x), mid_y-round(radius*y)+35]:=clGreen
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
gf;
button1.enabled:=false;
Button3.Enabled:=True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Visible:=false;
form2.show;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
image1.Canvas.Rectangle(0,0,ClientHeight,ClientWidth);
Button3.Enabled:=False;
Button1.Enabled:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button3.Enabled:=False;
image1.Canvas.Rectangle(0,0,ClientHeight,ClientWidth);
Form1.BorderIcons := [biSystemMenu,biMinimize];//http://www.az-design.ru/index.shtml?Support&SoftWare&Delphi/D3/SB62BorderIcons
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
image1: TImage;
xpmanifest1: TXPManifest;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses unit2;
procedure gf;
const
iterations = 500000; //Кол-во итераций
var
t, x, y: real;
p: real;//CЛУЧАЙНАЯ ВЕЛИЧИНА
k: longint;
mid_x, mid_y, radius: integer;
begin
mid_x := form1.width div 2;{выбор координат центра рисунка}
mid_y := form1.height -200 ;
radius := trunc(0.1 * mid_y);{масштабирование папоротника}
randomize;
x := 1.0;
y := 0.0;
for k := 1 to iterations do
begin
p := random;
t := x;
if p <= 0.85 then //Построение верхней части листа
begin
x := 0.84 * x -0.045 * y;
y := 0.045 * t + 0.86 * y + 1.6;
end
else
if p <= 0.92 then //Построение левого листа
begin
x := 0.25 * x - 0.26 * y;
y := 0.23 * t + 0.25 * y + 1.6;
end //Построение правого листа
else
if p <= 0.99 then
begin
x := -0.135 * x + 0.28 * y;
y := 0.26 * t + 0.245 * y + 0.44;
end
else
begin //Построение стебля
x := 0.0;
y := 0.16 * y ;
end;
Form1.image1.Canvas.Pixels[mid_x+round(radius*x), mid_y-round(radius*y)+35]:=clGreen
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
gf;
button1.enabled:=false;
Button3.Enabled:=True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Visible:=false;
form2.show;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
image1.Canvas.Rectangle(0,0,ClientHeight,ClientWidth);
Button3.Enabled:=False;
Button1.Enabled:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button3.Enabled:=False;
image1.Canvas.Rectangle(0,0,ClientHeight,ClientWidth);
Form1.BorderIcons := [biSystemMenu,biMinimize];//http://www.az-design.ru/index.shtml?Support&SoftWare&Delphi/D3/SB62BorderIcons
end;
end.
Соседние файлы в папке Окончательная