Показать сообщение отдельно
  #1  
Старый 20.02.2011, 20:45
zibazon zibazon вне форума
Прохожий
 
Регистрация: 10.02.2011
Сообщения: 13
Репутация: 10
Вопрос Помогите убрать одну лопасть у мельницы VB

Есть программа в которой мельница вращается с заданной скоростью. Необходимо убрать одну лопасть и уравнять расстояние между другими тремя лопастями, что бы были симметричные.
Вот исходник программного кода:
Код:
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.
Админ: Пользуемся тегами и не меняем размер шрифта без необходимости!

Спасибо всем за своевременную помощь.