Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет “Львівська політехніка”
кафедра АТ
Звіт
до лабораторної роботи №4 з курсу
“Комп’ютерна графіка”
на тему:
“Побудова рухомих зображень”
Варіант №16
1.Мета роботи:
Набути практичних навиків в складанні прграм для побудови рухомих зображень на екрані комп’ютера за допомогою матричних перетворень.
2. Завдання:
2.1 Вивчити основні матричні перетворення на площині для побудови рухомих зображень.
2.2 Вивести результуючу матрицю руху для свого варіанту завдання, визначеного нижче.
2.3 Написати програму мовою Турбо-Паскаль, що дозволяє сформувати на екрані комп’ютера рухоме зображення.
2.4 Текст завдання: Затухаючі коливання кола з діаметром 20 , висота 100.
3. Блок-схеми алгоритмів програми
3.1
3.2
3.3
3.1 Деталізована блок-схема блоку № 1 (ініціалізація графічного режиму) загальної блок-схеми:
1
2
3
ні ні так
4
5
3.2 Деталізована блок-схема блоку № 2 (рух квадрату) загальної блок-схеми:
1
2
3
4
5
6
7
8
9
10
11
так
ні
так
ні
так
ні
3.3 Деталізована блок-схема блоку № 3 (завершення графічного режиму) загальної блок-схеми:
1
4. Список ідентифікаторів, змінних процедур і функцій.
H – висота з якої падає коло
D – діаметр кола
n – приймає занчення 1 або 0, використовується для зміни сторінок.
Процедура IntGraphMode ініціалізує графічний режим.
Процедура CloseGraphMode - завершує роботу графічного режиму.
5. Остаточно відлагоджений текст програми:
uses graph,crt;
Procedure IntGraphMode(Mode:integer);
var Driver, Error: integer;
begin
Driver:=Detect;
InitGraph(Driver, Mode, '');
Error:=GraphResult;
if Error <> grOk then
begin
writeln(GraphErrorMsg(Error));
halt(1);
end;
end;
{******************************}
Procedure CloseGraphMode;
begin
CloseGraph;
end;
{******************************}
var x:array[1..180] of integer;
y:array[1..180] of integer;
j,r,xc,yc,i,n,M:integer;
alfa:real;
begin
R:=90; { расстояние от вершин до центра xc, yc }
xc:= GetMaxX div 2; yc:= GetMaxY div 2;
for j:= 1 to 180 do
begin
alfa:= (j+1) * pi/90;
x[j]:= xc + round(R * cos(-alfa));
y[j]:= yc + round(R * sin(-alfa));
end;
repeat
for j:=1 to 180 do begin
for i:= 1 to 40 do begin
if (i mod 2)>0 then N:=0 else N:=1;
if (i mod 2)>0 then M:=1 else M:=0;
SetActivePage(N);
MoveTo(x[j]+round(sqrt(4000)*cos(i*pi/90)),y[j]+round(sqrt(4000)*sin(i*pi/90)));
LineTo(x[j]+round(sqrt(4000)*cos(i*pi/90+pi/2)),y[j]+round(sqrt(4000)*sin(i*pi/90+pi/2)));
LineTo(x[j]+round(sqrt(4000)*cos(i*pi/90+pi)),y[j]+round(sqrt(4000)*sin(i*pi/90+pi)));
LineTo(x[j]+round(sqrt(4000)*cos(i*pi/90+(3*pi/2))),y[j]+round(sqrt(4000)*sin(i*pi/90+(3*pi/2))));
LineTo(x[j]+round(sqrt(4000)*cos(i*pi/90+2*pi)),y[j]+round(sqrt(4000)*sin(i*pi/90+2*pi)));
Circle(xc,yc,R);
delay(90);
{ SetVisualPage(m); }
delay(7300);
cleardevice;
Circle(Xc,Yc,R);
i:=i+1;
if keypressed then halt(1);
end;
j:=j+1;
end;
until keypressed;
end;
{******************************}
begin
IntGraphMode(VGAMed);
Kvadrat;
CloseGraphMode;
end.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!