Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
05.02.2016
Размер:
3.02 Кб
Скачать
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
masiv=array[0..3] of real;

var
Form1: TForm1;
x,y:masiv;
y0,x0,mahtab:integer;

implementation

function xk(xb:real):integer;
begin
xk:=round(x0+xb*mahtab);
end;

function yk(yb:real):integer;
begin
yk:=round(y0-yb*mahtab);
end;

{$R *.dfm}

function p3_0(t:real):real;
begin
p3_0:=(1-t)*(1-t)*(1-t);
end;
function p3_1(t:real):real;
begin
p3_1:=3*t*(1-t)*(1-t);
end;
function p3_2(t:real):real;
begin
p3_2:=3*t*t*(1-t);
end;
function p3_3(t:real):real;
begin
p3_3:=t*t*t;
end;

procedure bezie(x,y:masiv);
var
t,xb,yb:real;
i,xbk,ybk:integer;
begin
t:=0;
xb:=p3_0(t)*x[0]+p3_1(t)*x[1]+p3_2(t)*x[2]+p3_3(t)*x[3];
yb:=p3_0(t)*y[0]+p3_1(t)*y[1]+p3_2(t)*y[2]+p3_3(t)*y[3];
xbk:=xk(xb);
ybk:=yk(yb);
Form1.Image1.Canvas.MoveTo(xbk,ybk);
Form1.Image1.Canvas.Pen.Width:=1;
Form1.Image1.Canvas.Pen.Color:=clred;
while t<=1 do
begin
t:=t+0.01;
xb:=p3_0(t)*x[0]+p3_1(t)*x[1]+p3_2(t)*x[2]+p3_3(t)*x[3];
yb:=p3_0(t)*y[0]+p3_1(t)*y[1]+p3_2(t)*y[2]+p3_3(t)*y[3];
xbk:=xk(xb);
ybk:=yk(yb);
Form1.Image1.Canvas.LineTo(xbk,ybk);
end;
Form1.Image1.Canvas.Pen.Width:=1;
Form1.Image1.Canvas.Pen.Color:=clblue;
Form1.Image1.Canvas.MoveTo(xk(x[0]),yk(y[0]));
Form1.Image1.Canvas.LineTo(xk(x[1]),yk(y[1]));
Form1.Image1.Canvas.LineTo(xk(x[2]),yk(y[2]));
Form1.Image1.Canvas.LineTo(xk(x[3]),yk(y[3]));
for i:=0 to 3 do
begin
Form1.Image1.Canvas.Ellipse(xk(x[i])-2,yk(y[i])-2,xk(x[i])+2,yk(y[i])+2);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
xi,yi:integer;
begin
x0:=200; y0:=200;
Form1.Image1.Canvas.Pen.Width:=2;
Form1.Image1.Canvas.Pen.Color:=clblack;
Form1.Image1.Canvas.MoveTo(20,200);
Form1.Image1.Canvas.LineTo(380,200);
Form1.Image1.Canvas.MoveTo(200,20);
Form1.Image1.Canvas.LineTo(200,380);

mahtab:=20;

Form1.Image1.Canvas.Pen.Width:=1;
Form1.Image1.Canvas.Pen.Color:=clblack;

xi:=20;
while (xi<370) do
begin
xi:=xi+mahtab;
Form1.Image1.Canvas.MoveTo(xi,205);
Form1.Image1.Canvas.LineTo(xi,195);
end;

yi:=20;
while (yi<370) do
begin
yi:=yi+mahtab;
Form1.Image1.Canvas.MoveTo(195,yi);
Form1.Image1.Canvas.LineTo(205,yi);
end;

x[0]:=-5;
y[0]:=-3;
x[1]:=0;
y[1]:=4;
x[2]:=1;
y[2]:=-4;
x[3]:=-2;
y[3]:=5;
bezie(x,y);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Image1.Picture:=nil;
end;

end.
Соседние файлы в папке laba 2
  • #
    05.02.2016188 б6Project1.dpr
  • #
    05.02.2016876 б7Project1.res
  • #
    05.02.20167.22 Кб6Unit1.dcu
  • #
    05.02.201651 б6Unit1.ddp
  • #
    05.02.2016791 б6Unit1.dfm
  • #
    05.02.20163.02 Кб7Unit1.pas
  • #
    05.02.2016590 б6Unit1.~dfm
  • #
    05.02.20162.83 Кб6Unit1.~pas