Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра «Захисту інформації»
Звіт Про виконання лабораторної роботи #4 На тему: “ ПОБУДОВА РУХОМИХ ЗОБРАЖЕНЬ ”
Мета роботи: - набути практичних навиків в складанні програм для побудови рухомих зображень на екрані комп’ютера за допомогою матричних перетворень. Варіант: 24 № варіанту Структура зображення Пояснення
24
Замальований квадрат котиться по горизонтальній поверхні. При досягненні стінок напрямок руху змінюється на протилежний. Параметри : L=150, a=25.
Код програми: Program lab4; Uses Crt, Graph; Var Gd, Gm:integer; k,i,x,y,xn,yn:integer; procedure kv(x,i:integer); var x1e,y1e,x2e,y2e,x3e,y3e:extended; alpha:integer; x1,y1,x2,y2,x3,y3:integer; begin y:=GetMaxY div 2; x1e:=x; y1e:=y1-25; x2e:=x-25; y2e:=y-25; x3e:=x-25; y3e:=y; if ((i mod 3)=0) then begin x1:=trunc(x1e); x2:=trunc(x2e); x3:=trunc(x3e); y1:=trunc(y1e); y2:=trunc(y2e); y3:=trunc(y3e); line(x,y,x1,y1); line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x,y); end; if ((i mod 3)=1) then begin alpha:=75; x1e:=x1e*cos(alpha)-y1e*sin(alpha); y1e:=y1e*cos(alpha)+x1e*sin(alpha); x2e:=x2e*cos(alpha)-y2e*sin(alpha); y2e:=y2e*cos(alpha)+x2e*sin(alpha); x3e:=x3e*cos(alpha)-y3e*sin(alpha); y3e:=y3e*cos(alpha)+x3e*sin(alpha); x1:=trunc(x1e); x2:=trunc(x2e); x3:=trunc(x3e); y1:=trunc(y1e); y2:=trunc(y2e); y3:=trunc(y3e); line(x,y,x1,y1); line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x,y); end; if ((i mod 3)=2) then begin alpha:=165; x1e:=x1e*cos(alpha)-y1e*sin(alpha); y1e:=y1e*cos(alpha)+x1e*sin(alpha); x2e:=x2e*cos(alpha)-y2e*sin(alpha); y2e:=y2e*cos(alpha)+x2e*sin(alpha); x3e:=x3e*cos(alpha)-y3e*sin(alpha); y3e:=y3e*cos(alpha)+x3e*sin(alpha); x1:=trunc(x1e); x2:=trunc(x2e); x3:=trunc(x3e); y1:=trunc(y1e); y2:=trunc(y2e); y3:=trunc(y3e); line(x,y,x1,y1); line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x,y); end; end; Begin clrscr; Gd:=DETECT; InitGraph(Gd, Gm, ''); if GraphResult = grOK then begin x:=(GetMaxX div 2)-50; y:=GetMaxY div 2; k:=25; i:=3; while (not keypressed) do begin clrscr; line(GetMaxX-75,(GetMaxY div 2)+25, GetMaxX-75,(GetMaxY div 2)-25); line(GetMaxX+75,(GetMaxY div 2)+25, GetMaxX+75,(GetMaxY div 2)-25); line(GetMaxX-75,GetMaxY div 2, GetMaxX+75,GetMaxY div 2); delay(20000); kv(x,i); if ((i mod 3)=2) then x:=x+k; i:=i+1; if x>=((GetMaxX div 2)+74) then k:=-25; if x<=((GetMaxX div 2)-50) then k:=25; end; ReadLn; CloseGraph; end; End. Блок-схема: Ні Так Ні Так Ні Так
Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі та їх пояснення: Kv() – ф-ія, яка малює квадрат, у відповідному положенні. line(x1,y1,x2,y2) – ф-ія, що будує лінію між точками (x1,y1) та (x2,y2). gd,gm – ідентифікатори, які використовуються для визначення графічного драйверу та графічного режиму, відповідно. Висновок: На даній лабораторній роботі я згадав навички роботи в графічному середовищі мови програмування Турбо Паскаль та здійснив вивід на екран заданого зображення.