четверг, 23 декабря 2010 г.

Лабораторная работа №9.

Код программы.

procedure TForm1.Button1Click(Sender: TObject);
 const n=6;l=2;
       m: array[1..n,1..l]of real=((15,15),(15,40),(25,40),(20,35),(25,30),(15,30));
  var p:array[1..l,1..l] of real;
      pn:array[1..n,1..l] of real;
      i,j,g,OXsc,OYsc:integer;
      kx,ky,Xmax,Ymin,Ymax,Xmin,ugol:real;
  begin
   Xmax:=110;
   Ymin:=-110;
   Ymax:=110;
   Xmin:=-90;
   Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height);
   Image1.Canvas.pen.Color := clblue;
   kx:=Image1.Width/(Xmax-Xmin);
   ky:=Image1.Height/(Ymax-Ymin);
   OXsc:=Round((0-Xmin)*kx);
   OYsc:=Round(Image1.Height-(0-Ymin)*ky);
   Image1.Canvas.MoveTo(OXsc,0);
   Image1.Canvas.LineTo(OXsc,Image1.Height);
   Image1.Canvas.MoveTo(0,OYsc);
   Image1.Canvas.LineTo(Image1.Width,OYsc);
   Image1.Canvas.Pen.Color:=clblue;
   Image1.canvas.moveto(Round((m[1,1]-Xmin)*kx),Round(Image1.Height-(m[1,2]-Ymin)*ky));
   for i:=2 to n do
      Image1.canvas.lineto(Round((m[i,1]-Xmin)*kx),Round(Image1.Height-(m[i,2]-Ymin)*ky));
   ugol:=(StrtoInt(Edit1.Text))*(pi/180);
   p[1,1]:=cos(ugol);
   p[1,2]:=sin(ugol);
   p[2,1]:=-sin(ugol);
   p[2,2]:=cos(ugol);
    for i:=1 to n do
     for j:=1 to l do
    begin
     pn[i,j]:=0;
      for g:=1 to l do
        pn[i,j]:=pn[i,j]+m[i,g]*p[g,j];
     end;
   Image1.Canvas.pen.Color := clwhite;
   Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height);
   Image1.Canvas.pen.Color := clblue;
   Image1.Canvas.MoveTo(OXsc,0);
   Image1.Canvas.LineTo(OXsc,Image1.Height);
   Image1.Canvas.MoveTo(0,OYsc);
   Image1.Canvas.LineTo(Image1.Width,OYsc);
   Image1.canvas.moveto(Round((pn[1,1]-Xmin)*kx),Round(Image1.Height-(pn[1,2]-Ymin)*ky));
 for i:=2 to n do
    Image1.canvas.lineto(Round((pn[i,1]-Xmin)*kx),Round(Image1.Height-(pn[i,2]-Ymin)*ky));
end;

Интерфейс.



Комментариев нет:

Отправить комментарий