Professional Documents
Culture Documents
Lab 1
Lab 1
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
"ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Затверджено на засіданні
кафедри АСУ. Протокол № 3
від 10.05.2004.
Львів – 2010
РОБОТА В ДЕКАРТОВІЙ СИСТЕМІ КООРДИНАТ: Методичні
вказівки до лабораторної роботи № 1 з курсу "Комп’ютерна графіка" для
студентів спеціальності «Видавничо-поліграфічна справа» / Укл.: О.Я.
Різник, М.А. Назаркевич, Д. Скрибайло-Леськів - Львів: Видавництво
Національного університету "Львівська політехніка", 2004. - 12 с.
ТЕОРЕТИЧНІ ОСНОВИ
мал.1.1
y, y* y, y*
P* P P*
6) а=d=1, c=0. Зсув
x y
1 b
x bx y x * y * P T= [ 10 b1 ] T= [ 1c 10 ]
0 1 x, x* x, x*
.
A
T= [ 13 21 ]
A*
x, x*
мал. 1.7
1.4 Обертання
B* C*
3 1 1 3
0 1
6 1 1 6 .
6 4 1 0 4 6
В результаті отримаємо трикутник А*B*C*.
y, y*
B* C*
1.5 Відображення.
C
T= [ 01 10]
Відображення визначається поворотом на 180° A* B
навколо осі, що лежить у площині х у. На простій A x, x*
мові це дзеркальне відображення трикутника. A*
1) Обертання навколо прямої y=x задається
0 1
матрицею: .
1 0
Після декартового добутку одержимо матрицю:
3 1 1 3
0 1
6 1 1 6 .
6 4 1 0 4 6
В результаті отримаємо трикутник А*B*C*.
ЗМІСТ ЗВІТУ
Звіт повинен містити:
1) назву роботи;
2) мету роботи;
3) короткий теоретичний вступ;
4) завдання до лабораторної роботи;
5) тексти розроблених і відлагоджених програм;
6) рисунки з реалізацією програми;
7) висновки.
Приклад програми реалізації
unit Unit1; end;
interface
uses procedure T;
Windows, SysUtils, Classes, Graphics, Controls, begin
Forms, StdCtrls, ExtCtrls; with form1.p do
type begin
TForm1 = class(TForm) canvas.moveto((Width div 2)+(v[1]*dx),(Height div
E1: TEdit; 2)-(v[2]*dx));
E2: TEdit; canvas.lineto((Width div 2)+(v[3]*dx),(Height div
e7: TEdit; 2)-(v[4]*dx));
e8: TEdit; canvas.MoveTo((Width div 2)+(v[3]*dx),(Height div
e9: TEdit; 2)-(v[4]*dx));
Label4: TLabel; canvas.LineTo((Width div 2)+(v[5]*dx),(Height div
Button1: TButton; 2)-(v[6]*dx));
Button2: TButton; canvas.MoveTo((Width div 2)+(v[5]*dx),(Height div
Button3: TButton; 2)-(v[6]*dx));
Button4: TButton; canvas.LineTo((Width div 2)+(v[1]*dx),(Height div
Button5: TButton; 2)-(v[2]*dx));
e10: TEdit; end;
Button6: TButton; end;
Button7: TButton;
Button8: TButton; procedure TForm1.Button1Click(Sender: TObject);
E3: TEdit; begin
e4: TEdit; getparam;
E5: TEdit; p.Canvas.Pen.Width:=p.Canvas.Pen.Width+10;
E6: TEdit; p.Canvas.Pen.Color:=cllime;
P: TPaintBox; p.Canvas.MoveTo((p.Width div 2)+(v[1]*dx),
Label1: TLabel; (p.Height div 2)-(v[2]*dx));
Button9: TButton; p.Canvas.LineTo((p.Width div 2)+(v[1]*dx),
procedure Button1Click(Sender: TObject); (p.Height div 2)-(v[2]*dx));
procedure Button2Click(Sender: TObject); p.Canvas.Pen.Width:=p.Canvas.Pen.Width-10;
procedure Button3Click(Sender: TObject); end;
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject); procedure TForm1.Button2Click(Sender: TObject);
procedure Button6Click(Sender: TObject); begin
procedure Button7Click(Sender: TObject); getparam;
procedure PPaint(Sender: TObject); p.Canvas.Pen.Width:=p.Canvas.Pen.Width+10;
procedure Button8Click(Sender: TObject); p.Canvas.Pen.Color:=cLYELLOW;
procedure FormCreate(Sender: TObject); p.Canvas.Moveto((p.Width div 2)+(v[1]*dx)*v[7]
procedure Button9Click(Sender: TObject); ,(p.Height div 2)-(v[2]*dx));
private p.Canvas.Lineto((p.Width div 2)+(v[1]*dx)*v[7]
{ Private declarations } ,(p.Height div 2)-(v[2]*dx));
public p.Canvas.Pen.Width:=p.Canvas.Pen.Width-10;
{ Public declarations } end;
end;
var procedure TForm1.Button3Click(Sender: TObject);
Form1: TForm1; begin
y2,x2,x,y,i,j,k,kk,Dx:integer; getparam;
v:array[1..10] of integer; p.Canvas.Pen.Color:=cLgreen;
error:boolean=false; p.Canvas.Pen.Width:=p.Canvas.Pen.Width+10;
implementation p.Canvas.moveto((p.Width div 2)+(v[1]*dx)*v[7]
{$R *.DFM} ,(p.Height div 2)-(v[2]*dx)*v[10]);
procedure getparam; p.Canvas.Lineto((p.Width div 2)+(v[1]*dx)*v[7]
begin ,(p.Height div 2)-(v[2]*dx)*v[10]);
with form1 do p.Canvas.Pen.Width:=p.Canvas.Pen.Width-10;
for i := 1 to 10 do end;
if TEdit(FindComponent('E' +
IntToStr(i))).Text <>'' then procedure TForm1.Button4Click(Sender: TObject);
v[i]:=StrToInt(TEdit(FindComponent('E' + begin
IntToStr(i))).Text) else error:=true; getparam;
p.Canvas.Pen.Color:=cLwhite; if w<>0 then
p.Canvas.Pen.Width:=p.Canvas.Pen.Width+10; textout((p.width div 2)+5,i-7,IntToStr(w));
p.Canvas.moveto((p.Width div 2)+(v[1]*dx)*-1 i:=i+dx;
,(p.Height div 2)-(v[2]*dx)); dec(w);
p.Canvas.Lineto((p.Width div 2)+(v[1]*dx)*-1 end;
,(p.Height div 2)-(v[2]*dx)); end;
p.Canvas.Pen.Width:=p.Canvas.Pen.Width-10; end;
end;
procedure TForm1.Button7Click(Sender: TObject);
procedure TForm1.Button5Click(Sender: TObject); var k,kk:integer;
begin begin
getparam; getparam;
p.Canvas.Pen.Color:=cLAqua; x:=(p.Width div 2)+(v[1]*dx);
p.Canvas.Pen.Width:=p.Canvas.Pen.Width+10; y:=(p.Height div 2)-(v[2]*dx);
p.Canvas.moveto((p.Width div 2)+(v[1]*dx)*-1 ppaint(form1);
,(p.Height div 2)-(v[2]*dx)*-1); x2:=(p.Width div 2)+(v[3]*dx);
p.Canvas.Lineto((p.Width div 2)+(v[1]*dx)*-1 y2:=(p.Height div 2)-(v[4]*dx);
,(p.Height div 2)-(v[2]*dx)*-1); p.Canvas.MoveTo(x,y);
p.Canvas.Pen.Width:=p.Canvas.Pen.Width-10; p.Canvas.LineTo(x2,y2);
end; k:=((v[7]*v[1])+(v[9]*v[2]));
kk:=((v[8]*v[1])+(v[10]*v[2]));
procedure TForm1.Button6Click(Sender: TObject); x:=(p.Width div 2)+(k*dx);
begin y:=(p.Height div 2)-(kk*dx);
getparam;
p.Canvas.Pen.Color:=cLred; k:=((v[7]*v[3])+(v[9]*v[4]));
p.Canvas.Pen.Width:=p.Canvas.Pen.Width+10; kk:=((v[8]*v[3])+(v[10]*v[4]));
k:=(p.Height div 2)-((v[1]*v[8]+v[2])*dx); x2:=(k*dx)+(p.Width div 2);
p.Canvas. moveto((p.Width div 2)+(v[1]*dx),k); y2:=(p.Height div 2)-(kk*dx);
p.Canvas. Lineto((p.Width div 2)+(v[1]*dx),k);
p.Canvas.Pen.Width:=p.Canvas.Pen.Width-10; p.Canvas.MoveTo(x,y);
end; p.Canvas.LineTo(x2,y2);
end;
procedure TForm1.PPaint(Sender: TObject);
var w:integer; procedure TForm1.Button8Click(Sender: TObject);
begin var vv:array[0..10] of integer;
i:=1; begin
w:=-10; getparam;
with p.Canvas do ppaint(form1);
begin t;
p.Canvas.FillRect(rect(0,0,p.width,p.height)); // for xy=z & y=0
pen.Color:=clwhite; for i:=1 to 10 do
moveto(p.Width div 2,0); vv[i]:=v[i];
lineto(p.Width div 2,p.Height-0); vv[1]:=v[1]*v[7]+v[2]*v[9];
moveto(0,p.Height div 2); vv[2]:=v[1]*v[8]+v[2]*v[10];
lineto(p.Width-0,p.Height div 2); vv[3]:=v[3]*v[7]+v[4]*v[9];
dX:=p.Width div 20; vv[4]:=V[3]*v[8]+v[4]*v[10];
font.Color:=cllime; vv[5]:=v[5]*v[7]+v[6]*v[9];
while i<p.Width do vv[6]:=v[5]*v[8]+v[6]*v[10];
begin for i:=1 to 10 do
moveto(i,(p.Height div 2)); v[i]:=vv[i];
lineto(i,(p.height div 2)+5); t;
if w<>0 then end;
textout(i-4,(p.height div 2)+6,
IntToStr(w)); procedure TForm1.FormCreate(Sender: TObject);
i:=i+dX; begin
inc(w); label4.Caption:='a : b: '+
end; #10+#13+#10+#13+#10+#13+'c : d :';
i:=1; label1.Caption:='X1 X2
w:=10; X3'+#10+#13
while i<p.Height do +#10+#13+'Y1 Y2
begin Y3';
moveto((p.width div 2),i); end;
lineto((p.width div 2)+5,i);
procedure TForm1.Button9Click(Sender: TObject);
var vv:array[0..10] of integer;
begin
getparam;
ppaint(form1);
t;
// a=n;b=m;
for i:=1 to 10 do
vv[i]:=v[i];
vv[1]:=v[1]+v[8];
vv[2]:=v[2]+v[7];
vv[3]:=v[3]+v[8];
vv[4]:=V[4]+v[7];
vv[5]:=v[5]+v[8];
vv[6]:=v[6]+v[7];
for i:=1 to 10 do
v[i]:=vv[i];
t;
end;
end.