unit Main;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Menus;
const
n = 8;
type
TMainForm = class(TForm)
Button1: TButton;
Stop: TButton;
Label1: TLabel;
Edit1: TEdit;
Timer1: TTimer;
Start: TButton;
Clear: TButton;
procedure Button1Click(Sender: TObject);
procedure StopClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure StartClick(Sender: TObject);
procedure ClearClick(Sender: TObject);
end;
mas=array[1..n] of integer;
var
MainForm: TMainForm;
x,y:mas;
Radius,Alfa,Alfa2,dl:integer;
implementation
{$R *.DFM}
procedure TMainForm.StopClick(Sender: TObject);
begin
if timer1.Enabled=true then timer1.Enabled:=false;
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
const
xc:integer=150;
yc:integer=150;
var
dx,dy,dx2,dy2,dx3,dy3,dx4,dy4,scale:real;
begin
// Стираемо лопасті
with MainForm, Canvas do
begin
Pen.Width:=3;
Pen.Color:=clGreen;
Brush.Color:=clGreen;
Polygon([Point(xc,yc),Point(x[1],y[1]), Point(x[5],y[5]),
Point(x[7],y[7]), Point(x[3],y[3]), Point(xc,yc),
Point(x[2],y[2]), Point(x[6],y[6]), Point(x[8],y[8]),
Point(x[4],y[4]), Point(xc,yc)]);
end;
// Малюємо основу млина
with MainForm, Canvas do
begin
Pen.Width:=2;
Pen.Color:=clBlack;
Brush.Color:=clGray;
Polygon([Point(100,250), Point(150,110), Point(200,250)]);
end;
// Знаходимо дійсні координати точок
dx := Radius * cos((Pi/180)*Alfa);
dy := Radius * sin((Pi/180)*Alfa);
dx2 := Radius * cos((Pi/180)*Alfa2);
dy2 := Radius * sin((Pi/180)*Alfa2);
dx3 := Radius * cos((Pi/180)*(Alfa - 30));
dy3 := Radius * sin((Pi/180)*(Alfa - 30));
dx4 := Radius * cos((Pi/180)*(Alfa2 - 30));
dy4 := Radius * sin((Pi/180)*(Alfa2 - 30));
// Знаходимо екранні координати точок
x[1] := Round(xc + dx); y[1] := Round(yc - dy);
x[2] := Round(xc + dx2); y[2] := Round(yc - dy2);
x[3] := Round(xc - dx); y[3] := Round(yc + dy);
x[4] := Round(xc - dx2); y[4] := Round(yc + dy2);
x[5] := Round(xc + dx3); y[5] := Round(yc - dy3);
x[6] := Round(xc + dx4); y[6] := Round(yc - dy4);
x[7] := Round(xc - dx3); y[7] := Round(yc + dy3);
x[8] := Round(xc - dx4); y[8] := Round(yc + dy4);
// Малюємо лопасті по координатах
with MainForm, Canvas do
begin
Pen.Width := 3;
Pen.Color := clBlack;
Brush.Color := clWhite;
Polygon([Point(xc,yc), Point(x[1],y[1]), Point(x[5],y[5]),
Point(x[7],y[7]), Point(x[3],y[3]), Point(xc,yc),
Point(x[2],y[2]), Point(x[6],y[6]), Point(x[8],y[8]),
Point(x[4],y[4]), Point(xc,yc)]);
end;
// До кожного значення кута додаємо значення введене користувачем в поле Edit
Alfa := Alfa + dl;
Alfa2 := Alfa2 + dl;
end;
procedure TMainForm.StartClick(Sender: TObject);
var
s: string;
begin
s := Edit1.Text;
if Length(s) > 0 then
begin
dl := StrToInt(S);
if (dl >= 0)and(dl <= 20) then
begin
Radius := 70;
timer1.Enabled := true;
end
else ShowMessage('Скорость ветра: [0,20]');
Alfa:=0;
Alfa2:=90;
end;
end;
procedure TMainForm.ClearClick(Sender: TObject);
begin
Refresh;
Timer1.Enabled:=false;
end;
procedure TMainForm.Button1Click(Sender: TObject);
begin
Close;
end;
end.