Копм’ютерна графіка

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра захисту інформації

Інформація про роботу

Рік:
2024
Тип роботи:
Розрахункова робота
Предмет:
Комп'ютерна графіка

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра «Захисту інформації»  Розрахункова робота З курсу: “Копм’ютерна графіка” Варіант: 18 № варіанту Функція f(x) Діапазон зміни аргументу  18 z=arcctg(x) [-1000; 1000]   № варіанту Структура зображення Пояснення   18   Хрест з довжинами сторін a та b безперервно котиться по горизонтальній поверхні довжиною L. При досягненні стінок напрямок кочення змінюється на протилежний.   Код програми: Program rozrah; Uses Crt, Graph; Var Gd, Gm, xs, ys, n, kr:integer; x, xprv, xcrnt, xnxt, y, yprv, ycrnt, ynxt, k: extended; xh, yh, xc, yc, tmp: extended; startx, endx, r: extended; alpha,alpha1:extended; h:real; s:string; size:word; p:pointer; rn,xn,yn:extended; Procedure Linii; Begin line (1,GetMaxY div 2,GetMaxX-2,GetMaxY div 2); line (GetMaxX div 2,1,GetMaxX div 2,GetMaxY-200); OutTextXY ((GetMaxX div 2)+10,(GetMaxY div 2)+10,'0'); line (319,1,317,10); line (319,1,321,10); OutTextXY (325,2,'Y'); line (639,239,629,237); line (639,239,629,241); OutTextXY (631,224,'X'); end; Procedure ArcCtgX; Begin x:=-1000.0; y:=k*(pi/2-arctan(x)); xprv:=k*y+xs; yprv:=k*x+ys; x:=x+h; while x<=1000.0 do begin y:=k*(pi/2-arctan(x)); xcrnt:=k*x+xs; ycrnt:=k*y+ys; line(trunc(xprv),trunc(yprv),trunc(xcrnt),trunc(ycrnt)); xprv:=xcrnt; yprv:=ycrnt; x:=x+h; end; end; Procedure ramka; Begin line((GetMaxX div 2)+10, GetMaxY-1, (GetMaxX div 2)+172, GetMaxY-1); line((GetMaxX div 2)+10, GetMaxY-1, (GetMaxX div 2)+10, GetMaxY-20); line((GetMaxX div 2)+172, GetMaxY-1, (GetMaxX div 2)+172, GetMaxY-20); end; Procedure hrest(xh,yh:integer; alpha:extended); var r,rm,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12:extended; alpha1,alpha2,alpha3,alpha4,alpha5,alpha6,alpha7,alpha8,alpha9,alpha10,alpha11,alpha12:extended; Begin alpha:=alpha*pi/180; r:=16; rm:=8; alpha1:=(alpha+22)*pi/180; alpha2:=(alpha+45)*pi/180; alpha3:=(alpha+67)*pi/180; alpha4:=(alpha+112)*pi/180; alpha5:=(alpha+135)*pi/180; alpha6:=(alpha+157)*pi/180; alpha7:=(alpha+202)*pi/180; alpha8:=(alpha+225)*pi/180; alpha9:=(alpha+247)*pi/180; alpha10:=(alpha+292)*pi/180; alpha11:=(alpha+315)*pi/180; alpha12:=(alpha+337)*pi/180; x1:=r*cos(alpha1)+xh; y1:=r*sin(alpha1)+yh; x2:=rm*cos(alpha2)+xh; y2:=rm*sin(alpha2)+yh; x3:=r*cos(alpha3)+xh; y3:=r*sin(alpha3)+yh; x4:=r*cos(alpha4)+xh; y4:=r*sin(alpha4)+yh; x5:=rm*cos(alpha5)+xh; y5:=rm*sin(alpha5)+yh; x6:=r*cos(alpha6)+xh; y6:=r*sin(alpha6)+yh; x7:=r*cos(alpha7)+xh; y7:=r*sin(alpha7)+yh; x8:=rm*cos(alpha8)+xh; y8:=rm*sin(alpha8)+yh; x9:=r*cos(alpha9)+xh; y9:=r*sin(alpha9)+yh; x10:=r*cos(alpha10)+xh; y10:=r*sin(alpha10)+yh; x11:=rm*cos(alpha11)+xh; y11:=rm*sin(alpha11)+yh; x12:=r*cos(alpha12)+xh; y12:=r*sin(alpha12)+yh; line(trunc(x1),trunc(y1),trunc(x2),trunc(y2)); line(trunc(x2),trunc(y2),trunc(x3),trunc(y3)); line(trunc(x3),trunc(y3),trunc(x4),trunc(y4)); line(trunc(x4),trunc(y4),trunc(x5),trunc(y5)); line(trunc(x5),trunc(y5),trunc(x6),trunc(y6)); line(trunc(x6),trunc(y6),trunc(x7),trunc(y7)); line(trunc(x7),trunc(y7),trunc(x8),trunc(y8)); line(trunc(x8),trunc(y8),trunc(x9),trunc(y9)); line(trunc(x9),trunc(y9),trunc(x10),trunc(y10)); line(trunc(x10),trunc(y10),trunc(x11),trunc(y11)); line(trunc(x11),trunc(y11),trunc(x12),trunc(y12)); line(trunc(x12),trunc(y12),trunc(x1),trunc(y1)); end; Begin clrscr; Gd:=DETECT; InitGraph(Gd, Gm, ''); if GraphResult = grOK then begin h:=1.0; k:=5; xs:=GetMaxX div 2; ys:=(GetMaxY div 2)-80; alpha:=0; startx:=(GetMaxX div 2)+26; endx:=(GetMaxX div 2)+156; xc:=startx; yc:=GetMaxY-17; xh:=startx; yh:=yc; r:=16.0; n:=5; xn:=16; yn:=0; while (not keypressed) do begin ClearDevice; linii; ArcCtgX; ramka; hrest(trunc(xh),trunc(yh),alpha); if xh=endx then alpha1:=-80; if xh=startx then alpha1:=80; alpha:=alpha+alpha1; if xh=endx then n:=-1; if xh=startx then n:=1; xh:=xh+n; delay(2500); end; end; ReadLn; FreeMem(p,size); CloseGraph; End. Блок-схема: Ні Так Висновок: На даній лабораторній роботі я згадав навички роботи в графічному середовищі мови програмування Турбо Паскаль та здійснив вивід на екран заданого зображення.
Антиботан аватар за замовчуванням

13.07.2012 22:07-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!