
Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовой проект Задача о трёх телах / Runge / Unit2
.pas unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SkinBoxCtrls, SkinCtrls, StdCtrls, Mask, ComCtrls, SkinTabs, ExtCtrls, unit4, unit5,
jpeg, EasyGraph, DynamicSkinForm, SkinData, spSkinShellCtrls;
type
TForm2 = class(TForm)
spSkinPageControl1: TspSkinPageControl;
spSkinTabSheet1: TspSkinTabSheet;
spSkinTabSheet4: TspSkinTabSheet;
Image3: TImage;
Chk2: TspSkinCheckRadioBox;
chk3: TspSkinCheckRadioBox;
chk4: TspSkinCheckRadioBox;
CHk1: TspSkinCheckRadioBox;
spSkinCheckRadioBox1: TspSkinCheckRadioBox;
spSkinCheckRadioBox2: TspSkinCheckRadioBox;
spSkinCheckRadioBox3: TspSkinCheckRadioBox;
spSkinEdit12: TspSkinEdit;
spSkinLabel17: TspSkinLabel;
EasyGraph4: TEasyGraph;
spSkinLabel1: TspSkinLabel;
spSkinLabel3: TspSkinLabel;
spSkinLabel4: TspSkinLabel;
spSkinLabel5: TspSkinLabel;
spSkinLabel6: TspSkinLabel;
spSkinPanel1: TspSkinPanel;
spSkinPanel2: TspSkinPanel;
Image1: TImage;
lblTime: TspSkinLabel;
lblX: TspSkinLabel;
lblY: TspSkinLabel;
spSkinLabel7: TspSkinLabel;
spDynamicSkinForm1: TspDynamicSkinForm;
spSkinData1: TspSkinData;
spCompressedStoredSkin1: TspCompressedStoredSkin;
Button1: TspSkinButton;
spSkinLabel2: TspSkinLabel;
spSkinNumericEdit1: TspSkinNumericEdit;
spSkinNumericEdit2: TspSkinNumericEdit;
spSkinLabel8: TspSkinLabel;
spSkinLabel9: TspSkinLabel;
spSkinButton1: TspSkinButton;
procedure FormCreate(Sender: TObject);
procedure chk3Click(Sender: TObject);
procedure spSkinCheckRadioBox3Click(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1Click(Sender: TObject);
procedure spSkinEdit12Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Image1MouseLeave(Sender: TObject);
procedure spSkinButton1Click(Sender: TObject);
procedure spSkinPanel2MouseLeave(Sender: TObject);
private
t: TGraphicsRunge;
//prog: trunge;
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses math, password;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var i: integer;
p,q: double;
begin
EasyGraph4.Series[0].Clear;
for i := 0 to t.RightInd-1 do begin
p:=t.GetInd(i,1);
q:=t.GetInd(i,3);
EasyGraph4.Series[0].Add(p,q);
end;
end;
procedure TForm2.chk3Click(Sender: TObject);
var i: integer;
begin
if (sender as TspSkinCheckRadioBox) = chk1 then i:=0
else if (sender as TspSkinCheckRadioBox) = chk2 then i:=1
else if (sender as TspSkinCheckRadioBox) = chk3 then i:=2
else i:=3;
t.Visible[i]:=(sender as TspSkinCheckRadioBox).Checked;
end;
procedure TForm2.FormCreate(Sender: TObject);
var prog: CRunge;
begin
if spSkinCheckRadioBox1.Checked then
prog:=TProg1
else if spSkinCheckRadioBox2.Checked then
prog:=TProg2
else //if spSkinCheckRadioBox3.Checked then
prog:=TProg3;
t:=TGraphicsRunge.Assign(Prog);
t.eps:=strtofloat(spSkinEdit12.Text);
t.Canvas:=Image1.Canvas;
t.Size:=Point(Image1.Width, Image1.Height);
chk1.Checked:=t.Visible[0];
chk2.Checked:=t.Visible[1];
chk3.Checked:=t.Visible[2];
chk4.Checked:=t.Visible[3];
t.Rect:=SRect(-5,-10,5,10);
EasyGraph4.Series.add;
EasyGraph4.Series[0].DrawStyle:=dsPoints;
EasyGraph4.VisRect:=rect2d(-100,-100,100,100);
end;
procedure TForm2.Image1Click(Sender: TObject);
begin
t.MouseClick;
end;
procedure TForm2.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
t.MouseDown(Button, Shift, X, Y);
end;
procedure TForm2.Image1MouseLeave(Sender: TObject);
begin
lblX.Caption:='-';
lblY.Caption:='-';
t.MouseLeave;
end;
procedure TForm2.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var i: integer;
begin
lblX.Caption:=floattostrf(X*t.ScaleX+t.Rect.EXa, ffGeneral,round(-Log10(t.eps))+1,round(-Log10(t.eps))+1);
lblY.Caption:=floattostrf(-Y*t.Scaley+t.Rect.EYB,ffGeneral,round(-Log10(t.eps))+1,round(-Log10(t.eps))+1);
t.MouseMove(Shift,X,Y);
if spSkinCheckRadioBox2.Checked then begin
Image1.Canvas.Pen.Color:=clLime;
image1.Canvas.MoveTo(0,round((-sin(t.Rect.EXa) + t.rect.eYB)/t.ScaleY));
for i := 0 to image1.Width do
image1.Canvas.lineTo(i, round((-sin(i*t.ScaleX+t.Rect.EXa) + t.rect.eYB)/t.ScaleY));
end else if spSkinCheckRadioBox3.Checked then begin
Image1.Canvas.Pen.Color:=clLime;
image1.Canvas.MoveTo(0,round((-exp(t.Rect.EXa)-1 + t.rect.eYB)/t.ScaleY));
for i := 0 to image1.Width do
image1.Canvas.lineTo(i, round((-exp(i*t.ScaleX+t.Rect.EXa) - (1)+ t.rect.eYB)/t.ScaleY));
end;
end;
procedure TForm2.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
t.MouseUp(Button, Shift, X,Y);
end;
procedure TForm2.spSkinButton1Click(Sender: TObject);
var xa, xb, ya, yb: double;
begin
xb:=spSkinNumericEdit1.Value;
xa:=spSkinNumericEdit2.Value;
if xa = xb then exit;
if xb < xa then begin
ya:=max(xa, 0.5);
yb:=min(xb, -0.5);
end else begin
ya:=min(xa, -0.5);
yb:=max(xb, 0.5);
end;
t.Rect:=SRect(xa, ya, xb, yb);
end;
procedure TForm2.spSkinCheckRadioBox3Click(Sender: TObject);
begin
if t <> nil then
t.Free;
FormCreate(self);
end;
procedure TForm2.spSkinEdit12Change(Sender: TObject);
begin
try
t.eps:= strtofloat(spSkinEdit12.Text);
t.ReCreateArr;
t.Redraw;
except
end;
end;
procedure TForm2.spSkinPanel2MouseLeave(Sender: TObject);
begin
// Mouse.CursorPos.X
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SkinBoxCtrls, SkinCtrls, StdCtrls, Mask, ComCtrls, SkinTabs, ExtCtrls, unit4, unit5,
jpeg, EasyGraph, DynamicSkinForm, SkinData, spSkinShellCtrls;
type
TForm2 = class(TForm)
spSkinPageControl1: TspSkinPageControl;
spSkinTabSheet1: TspSkinTabSheet;
spSkinTabSheet4: TspSkinTabSheet;
Image3: TImage;
Chk2: TspSkinCheckRadioBox;
chk3: TspSkinCheckRadioBox;
chk4: TspSkinCheckRadioBox;
CHk1: TspSkinCheckRadioBox;
spSkinCheckRadioBox1: TspSkinCheckRadioBox;
spSkinCheckRadioBox2: TspSkinCheckRadioBox;
spSkinCheckRadioBox3: TspSkinCheckRadioBox;
spSkinEdit12: TspSkinEdit;
spSkinLabel17: TspSkinLabel;
EasyGraph4: TEasyGraph;
spSkinLabel1: TspSkinLabel;
spSkinLabel3: TspSkinLabel;
spSkinLabel4: TspSkinLabel;
spSkinLabel5: TspSkinLabel;
spSkinLabel6: TspSkinLabel;
spSkinPanel1: TspSkinPanel;
spSkinPanel2: TspSkinPanel;
Image1: TImage;
lblTime: TspSkinLabel;
lblX: TspSkinLabel;
lblY: TspSkinLabel;
spSkinLabel7: TspSkinLabel;
spDynamicSkinForm1: TspDynamicSkinForm;
spSkinData1: TspSkinData;
spCompressedStoredSkin1: TspCompressedStoredSkin;
Button1: TspSkinButton;
spSkinLabel2: TspSkinLabel;
spSkinNumericEdit1: TspSkinNumericEdit;
spSkinNumericEdit2: TspSkinNumericEdit;
spSkinLabel8: TspSkinLabel;
spSkinLabel9: TspSkinLabel;
spSkinButton1: TspSkinButton;
procedure FormCreate(Sender: TObject);
procedure chk3Click(Sender: TObject);
procedure spSkinCheckRadioBox3Click(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1Click(Sender: TObject);
procedure spSkinEdit12Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Image1MouseLeave(Sender: TObject);
procedure spSkinButton1Click(Sender: TObject);
procedure spSkinPanel2MouseLeave(Sender: TObject);
private
t: TGraphicsRunge;
//prog: trunge;
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses math, password;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var i: integer;
p,q: double;
begin
EasyGraph4.Series[0].Clear;
for i := 0 to t.RightInd-1 do begin
p:=t.GetInd(i,1);
q:=t.GetInd(i,3);
EasyGraph4.Series[0].Add(p,q);
end;
end;
procedure TForm2.chk3Click(Sender: TObject);
var i: integer;
begin
if (sender as TspSkinCheckRadioBox) = chk1 then i:=0
else if (sender as TspSkinCheckRadioBox) = chk2 then i:=1
else if (sender as TspSkinCheckRadioBox) = chk3 then i:=2
else i:=3;
t.Visible[i]:=(sender as TspSkinCheckRadioBox).Checked;
end;
procedure TForm2.FormCreate(Sender: TObject);
var prog: CRunge;
begin
if spSkinCheckRadioBox1.Checked then
prog:=TProg1
else if spSkinCheckRadioBox2.Checked then
prog:=TProg2
else //if spSkinCheckRadioBox3.Checked then
prog:=TProg3;
t:=TGraphicsRunge.Assign(Prog);
t.eps:=strtofloat(spSkinEdit12.Text);
t.Canvas:=Image1.Canvas;
t.Size:=Point(Image1.Width, Image1.Height);
chk1.Checked:=t.Visible[0];
chk2.Checked:=t.Visible[1];
chk3.Checked:=t.Visible[2];
chk4.Checked:=t.Visible[3];
t.Rect:=SRect(-5,-10,5,10);
EasyGraph4.Series.add;
EasyGraph4.Series[0].DrawStyle:=dsPoints;
EasyGraph4.VisRect:=rect2d(-100,-100,100,100);
end;
procedure TForm2.Image1Click(Sender: TObject);
begin
t.MouseClick;
end;
procedure TForm2.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
t.MouseDown(Button, Shift, X, Y);
end;
procedure TForm2.Image1MouseLeave(Sender: TObject);
begin
lblX.Caption:='-';
lblY.Caption:='-';
t.MouseLeave;
end;
procedure TForm2.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var i: integer;
begin
lblX.Caption:=floattostrf(X*t.ScaleX+t.Rect.EXa, ffGeneral,round(-Log10(t.eps))+1,round(-Log10(t.eps))+1);
lblY.Caption:=floattostrf(-Y*t.Scaley+t.Rect.EYB,ffGeneral,round(-Log10(t.eps))+1,round(-Log10(t.eps))+1);
t.MouseMove(Shift,X,Y);
if spSkinCheckRadioBox2.Checked then begin
Image1.Canvas.Pen.Color:=clLime;
image1.Canvas.MoveTo(0,round((-sin(t.Rect.EXa) + t.rect.eYB)/t.ScaleY));
for i := 0 to image1.Width do
image1.Canvas.lineTo(i, round((-sin(i*t.ScaleX+t.Rect.EXa) + t.rect.eYB)/t.ScaleY));
end else if spSkinCheckRadioBox3.Checked then begin
Image1.Canvas.Pen.Color:=clLime;
image1.Canvas.MoveTo(0,round((-exp(t.Rect.EXa)-1 + t.rect.eYB)/t.ScaleY));
for i := 0 to image1.Width do
image1.Canvas.lineTo(i, round((-exp(i*t.ScaleX+t.Rect.EXa) - (1)+ t.rect.eYB)/t.ScaleY));
end;
end;
procedure TForm2.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
t.MouseUp(Button, Shift, X,Y);
end;
procedure TForm2.spSkinButton1Click(Sender: TObject);
var xa, xb, ya, yb: double;
begin
xb:=spSkinNumericEdit1.Value;
xa:=spSkinNumericEdit2.Value;
if xa = xb then exit;
if xb < xa then begin
ya:=max(xa, 0.5);
yb:=min(xb, -0.5);
end else begin
ya:=min(xa, -0.5);
yb:=max(xb, 0.5);
end;
t.Rect:=SRect(xa, ya, xb, yb);
end;
procedure TForm2.spSkinCheckRadioBox3Click(Sender: TObject);
begin
if t <> nil then
t.Free;
FormCreate(self);
end;
procedure TForm2.spSkinEdit12Change(Sender: TObject);
begin
try
t.eps:= strtofloat(spSkinEdit12.Text);
t.ReCreateArr;
t.Redraw;
except
end;
end;
procedure TForm2.spSkinPanel2MouseLeave(Sender: TObject);
begin
// Mouse.CursorPos.X
end;
end.
Соседние файлы в папке Runge