Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:мат моделирование / проги / laba 1 / Unit1
.pas unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Xo,Yo,Mx,My:integer;
X,Y:integer;
implementation
function Xk(Xm:real):integer;
begin
Xk:=round(Xo+Mx*Xm);
end;
function Yk(Ym:real):integer;
begin
Yk:=round(Yo-My*Ym);
end;
function x_t(t:real):real;
begin
x_t:=(-3*(t-3)*(t-4)*(t-6))/((-9)*(-10)*(-12))
+(4*(t+6)*(t-4)*(t-6))/(9*(-1)*(-3))
+(4*(t+6)*(t-3)*(t-6))/(10*1*(-2))+
(3*(t+6)*(t-3)*(t-4))/(12*3*2);
end;
function y_t(t:real):real;
begin
y_t:=(5*(t-3)*(t-4)*(t-6))/((-9)*(-10)*(-12))
-(5*(t+6)*(t-4)*(t-6))/(9*(-1)*(-3))
-(5*(t+6)*(t-3)*(t+6))/(10*1*(-2))+
(6*(t+6)*(t-3)*(t-4))/(12*3*2);
end;
{$R *.dfm}
Procedure Graphic (tmin,tmax:real);
var t:real;
begin
X:=Xk(x_t(tmin));
Y:=Yk(y_t(tmin));
Form1.Image1.Canvas.MoveTo(X,Y);
t:=tmin;
while t<tmax do
begin
t:=t+0.01;
X:=Xk(x_t(t));
Y:=Yk(y_t(t));
Form1.Image1.Canvas.LineTo(X,Y);
end;
Form1.Image1.Canvas.pen.Color:=clred;
Form1.Image1.Canvas.Ellipse(Xk(-3)-2,Yk(5)-2,Xk(-3)+2,Yk(5)+2);
Form1.Image1.Canvas.Ellipse(Xk(4)-2,Yk(-5)-2,Xk(4)+2,Yk(-5)+2);
Form1.Image1.Canvas.Ellipse(Xk(4)-2,Yk(-5)-2,Xk(4)+2,Yk(-5)+2);
Form1.Image1.Canvas.Ellipse(Xk(4)+2,Yk(6)+2,Xk(4)-2,Yk(6)-2);
end;
procedure Oci(Xo,Yo,Mx,My:integer);
begin
Form1.Image1.Canvas.MoveTo(5,Yo);
Form1.Image1.Canvas.LineTo(Form1.Image1.Width-5,Yo);
Form1.Image1.Canvas.MoveTo(Xo,5);
Form1.Image1.Canvas.LineTo(Xo,Form1.Image1.Height-5);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Xo:=200;
Yo:=400;
Mx:=10;
My:=1;
Oci(Xo,Yo,Mx,My);
end;
procedure TForm1.Button2Click(Sender: TObject);
var tmin,tmax:integer;
begin
tmin:=-20;
tmax:=20;
Graphic (tmin,tmax);
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Xo,Yo,Mx,My:integer;
X,Y:integer;
implementation
function Xk(Xm:real):integer;
begin
Xk:=round(Xo+Mx*Xm);
end;
function Yk(Ym:real):integer;
begin
Yk:=round(Yo-My*Ym);
end;
function x_t(t:real):real;
begin
x_t:=(-3*(t-3)*(t-4)*(t-6))/((-9)*(-10)*(-12))
+(4*(t+6)*(t-4)*(t-6))/(9*(-1)*(-3))
+(4*(t+6)*(t-3)*(t-6))/(10*1*(-2))+
(3*(t+6)*(t-3)*(t-4))/(12*3*2);
end;
function y_t(t:real):real;
begin
y_t:=(5*(t-3)*(t-4)*(t-6))/((-9)*(-10)*(-12))
-(5*(t+6)*(t-4)*(t-6))/(9*(-1)*(-3))
-(5*(t+6)*(t-3)*(t+6))/(10*1*(-2))+
(6*(t+6)*(t-3)*(t-4))/(12*3*2);
end;
{$R *.dfm}
Procedure Graphic (tmin,tmax:real);
var t:real;
begin
X:=Xk(x_t(tmin));
Y:=Yk(y_t(tmin));
Form1.Image1.Canvas.MoveTo(X,Y);
t:=tmin;
while t<tmax do
begin
t:=t+0.01;
X:=Xk(x_t(t));
Y:=Yk(y_t(t));
Form1.Image1.Canvas.LineTo(X,Y);
end;
Form1.Image1.Canvas.pen.Color:=clred;
Form1.Image1.Canvas.Ellipse(Xk(-3)-2,Yk(5)-2,Xk(-3)+2,Yk(5)+2);
Form1.Image1.Canvas.Ellipse(Xk(4)-2,Yk(-5)-2,Xk(4)+2,Yk(-5)+2);
Form1.Image1.Canvas.Ellipse(Xk(4)-2,Yk(-5)-2,Xk(4)+2,Yk(-5)+2);
Form1.Image1.Canvas.Ellipse(Xk(4)+2,Yk(6)+2,Xk(4)-2,Yk(6)-2);
end;
procedure Oci(Xo,Yo,Mx,My:integer);
begin
Form1.Image1.Canvas.MoveTo(5,Yo);
Form1.Image1.Canvas.LineTo(Form1.Image1.Width-5,Yo);
Form1.Image1.Canvas.MoveTo(Xo,5);
Form1.Image1.Canvas.LineTo(Xo,Form1.Image1.Height-5);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Xo:=200;
Yo:=400;
Mx:=10;
My:=1;
Oci(Xo,Yo,Mx,My);
end;
procedure TForm1.Button2Click(Sender: TObject);
var tmin,tmax:integer;
begin
tmin:=-20;
tmax:=20;
Graphic (tmin,tmax);
end;
end.