МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра САПР
ЗВІТ
до лабораторної роботи №2
на тему:
“ Афінні перетворння та анімація засобами мови Turbo Pascal 7.0”
з курсу:
« Геометричне моделювання у конструюванні інженерних обєктів та систем »
Індивідуальне завдання
Виконання завдання
uses Graph,Crt;
const MaxShar = 1;
type shar = object
x,y:integer;
x2,y2:integer;
r:word;
color:byte;
dx,dy:shortint;
constructor initShar(x0,y0:integer; r0:word; color0:byte; dx0,dy0:shortint;x20,y20:integer);
procedure Move; procedure Show; procedure Hide; procedure CheckBorder;
procedure revertXDirection; procedure revertYDirection;
end;
var bgColor,i:byte;
x,y,dx,dy,ErrCode:integer;
r:word;
shars: array[1..MaxShar] of shar;
sh:shar;
Procedure shar.Move;
begin
x:=x+dx;
y:=y+dy;
end;
procedure shar.Show;
begin
setColor(15);
circle(x,y,r);
line(x2,y2,x,y);
end;
procedure shar.Hide;
begin
setColor(0);
circle(x,y,r);
line(x2,y2,x,y);
end;
procedure shar.revertXDirection;
begin
dx:=-dx;
x:=x+dx;
end;
procedure shar.revertYDirection;
begin
dy:=-dy;
y:=y+dy;
end;
constructor shar.initShar(x0, y0 :integer; r0 :word; color0 :byte; dx0, dy0 :shortint;x20,y20:integer);
begin
x:=x0;
y:=y0;
x2:=x20;
y2:=y20;
r:=r0;
color:=color0;
dx:=dx0;
dy:=dy0;
end;
procedure shar.CheckBorder;
begin
if (r+x>GetMaxX-1) or (x-r<=1) then revertXDirection;
if (y+r>GetMaxY-1) or (y-r<=1) then revertYDirection;
end;
function initializeGraph:integer;
var Driver : Integer;
Regim : Integer;
begin
Driver:=Detect;
InitGraph(Driver, Regim, 'c:\BP\BGI\');
initializeGraph:=GraphResult;
end;
begin
ErrCode:=initializeGraph;
if ErrCode <> grOk then
WriteLn('ERROR!', GraphErrorMsg(ErrCode))
else
begin
bgColor:=0;
for i:=1 to MaxShar do
begin
r:=20;
shars[i].initShar(1+r+random(GetMaxX-2*r),1+r+random(GetMaxY-2*r),r,1,random(15)-7,random(12)-6,310,210);
end;
repeat
for i:=1 to MaxShar do
shars[i].Show;
Delay(3000);
for i:=1 to MaxShar do
shars[i].Hide;
for i:=1 to MaxShar do
begin
shars[i].Move;
shars[i].CheckBorder;
end;
for i:=1 to MaxShar do
until keyPressed;
for i:=1 to 20 do
begin
shars[1].Show;
readln;
shars[1].Hide;
shars[1].Move;
shars[1].CheckBorder;
keyPressed;
end;
CloseGraph;
end
end.
Висновки: на даній лабораторній роботі я ознайомився із методами афінних меретворень, а також реалізації анімації за допомогою мов програмування. Закріпив свої знання виконанням індивідуального завдання- реалізація анімації.