Скачиваний:
18
Добавлен:
01.05.2014
Размер:
5.8 Кб
Скачать
unit gen;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Spin, Math;

type
TGenForm = class(TForm)
GroupBox1: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
btnGenerate1: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
sePointNumber: TSpinEdit;
Label1: TLabel;
Label2: TLabel;
Label9: TLabel;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
StaticText2: TStaticText;
StaticText4: TStaticText;
seRoundArea: TSpinEdit;
seSquaerArea: TSpinEdit;
Label6: TLabel;
Label7: TLabel;
seDev: TSpinEdit;

procedure RadioButtonChange();
procedure btnGenerate1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

procedure Generate(items: integer; dev:integer);
procedure RoundAreaGen(items: integer; Height: integer);
procedure SquaerAreaGen(items: integer; Height: integer);

var
GenForm: TGenForm;

implementation

uses Main, error;

{$R *.DFM}
////////////////////////////////////////////////////////////////////////////////
procedure TGenForm.btnGenerate1Click(Sender: TObject);
var
nd: integer;
begin
ClearAll();

MainForm.LDotsNum.Caption := IntToStr(sePointNumber.Value);
nd:=sePointNumber.Value;


if ((nd>0) and (nd<=MaxDots)) then
begin
if RadioButton1.Checked then
Generate(sePointNumber.Value, 0);
if RadioButton2.Checked then
Generate(sePointNumber.Value, seDev.Value);
if RadioButton3.Checked then
RoundAreaGen(sePointNumber.Value, seRoundArea.Value);
if RadioButton4.Checked then
SquaerAreaGen(sePointNumber.Value, seSquaerArea.Value);

DrawPoints();
//GenForm.Close();
end
else ErrorForm.ShowModal();
end;
////////////////////////////////////////////////////////////////////////////////
// Генерация точек
////////////////////////////////////////////////////////////////////////////////
procedure Generate(items: integer; dev:integer);
var
i,min_x,max_x,min_y,max_y: integer;
l_x,l_y:real;
begin
DotsNum := items;
for i:=1 to DotsNum do
begin
if dev<>0 then
begin
Dots[i].X:=Round(RandG(Mean,Dev-10));
Dots[i].Y:=Round(RandG(Mean,Dev-10));
end
else
begin
Dots[i].X:=Random(GenX-50)+25;
Dots[i].Y:=Random(GenY-50)+25;
end;
Dots[i].color:=clBlue;
end;
DotsFlag:=true;
MainForm.StatusBar1.SimpleText:='Множество точек сгенерировано случайным образом';
end;
////////////////////////////////////////////////////////////////////////////////
procedure RoundAreaGen(items: integer; Height: integer);
var i: integer;
dx, dy : integer;
begin
DotsNum := items;
i := 1;
Randomize;
while (i <= DotsNum) do
begin
dx := Random(Height*2) - Height;
dy := Random(Height*2) - Height;
if (sqrt(dx*dx + dy*dy) <= Height) then
begin
Dots[i].x:= round(dx + MainForm.PaintBox1.ClientWidth);
Dots[i].y:= round(dy + MainForm.PaintBox1.ClientHeight);
Dots[i].color:=clBlue;
i := i + 1;
end;
end;

DotsNum := items;
DotsFlag:=true;
MainForm.StatusBar1.SimpleText:='Множество точек сгенерировано в круговой области';
end;
////////////////////////////////////////////////////////////////////////////////
procedure SquaerAreaGen(items: integer; Height: integer);
var
i : integer;
begin
DotsNum := items;

Randomize;

for i:=1 to DotsNum do begin
Dots[i].x:= round(Random(Height) + (MainForm.PaintBox1.ClientWidth - Height/2));
Dots[i].y:= round(Random(Height) + (MainForm.PaintBox1.ClientHeight - Height/2));
Dots[i].color:=clBlue;
end;

DotsNum := items;
DotsFlag:=true;
MainForm.StatusBar1.SimpleText:='Множество точек сгенерировано в прямоугольной области';
end;
////////////////////////////////////////////////////////////////////////////////
procedure TGenForm.RadioButton2Click(Sender: TObject);
begin
RadioButtonChange();
end;
////////////////////////////////////////////////////////////////////////////////
procedure TGenForm.RadioButton1Click(Sender: TObject);
begin
RadioButtonChange();
end;
////////////////////////////////////////////////////////////////////////////////
procedure TGenForm.RadioButton3Click(Sender: TObject);
begin
RadioButtonChange();
end;
////////////////////////////////////////////////////////////////////////////////
procedure TGenForm.RadioButton4Click(Sender: TObject);
begin
RadioButtonChange();
end;
////////////////////////////////////////////////////////////////////////////////
procedure TGenForm.RadioButtonChange();
begin
if RadioButton1.Checked then
begin
GenForm.seDev.Enabled := false;
GenForm.seRoundArea.Enabled := false;
GenForm.seSquaerArea.Enabled := false;
end;
if RadioButton2.Checked then
begin
GenForm.seDev.Enabled := true;
GenForm.seRoundArea.Enabled := false;
GenForm.seSquaerArea.Enabled := false;
end;
if RadioButton3.Checked then
begin
GenForm.seDev.Enabled := false;
GenForm.seRoundArea.Enabled := true;
GenForm.seSquaerArea.Enabled := false;
end;
if RadioButton4.Checked then
begin
GenForm.seDev.Enabled := false;
GenForm.seRoundArea.Enabled := false;
GenForm.seSquaerArea.Enabled := true;
end;
end;
////////////////////////////////////////////////////////////////////////////////

end.
Соседние файлы в папке SOURCE
  • #
    01.05.20142.37 Кб18error.~dfm
  • #
    01.05.2014501 б19error.~pas
  • #
    01.05.20148.12 Кб18GEN.DCU
  • #
    01.05.201451 б18GEN.ddp
  • #
    01.05.20147.88 Кб18GEN.dfm
  • #
    01.05.20145.8 Кб18GEN.PAS
  • #
    01.05.201451 б18GEN.~ddp
  • #
    01.05.20147.88 Кб18GEN.~dfm
  • #
    01.05.20145.97 Кб18GEN.~PAS
  • #
    01.05.20141.78 Кб18LIST.DCU
  • #
    01.05.2014979 б18List.pas