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

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

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

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

Рік:
2010
Тип роботи:
Розрахункова робота
Предмет:
Комп'ютерна графіка
Група:
ІБ – 44

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра «Захисту інформації»  Розрахункова робота З курсу: “Копм’ютерна графіка” Варіант: 18 № варіанту Функція f(x) Діапазон зміни аргументу  18 z=arcctg(x) [-1000; 1000]   № варіанту Структура зображення Пояснення   18   Хрест безперервно котиться по горизонтальній. При досягненні стінок напрямок кочення змінюється на протилежний.   Код програми: Program rozrah; Uses Graph, CRT; var xmax, ymax, px0, py0: integer; kx, ky, x0, y0:real; alpha1,n,xn,yn,kr,xh,yh,xc,yc,r,alpha,startx,endx,xs,ys:extended; const delta:integer = 50; ws_delta:integer = 10; a:integer = 150; b:integer = 90; d:integer = 25; cur_x:integer = 9; cur_y:integer = 5; cur_p:integer = 8; np_x:integer = 10; np_y:integer = 7; c_xa:integer = -1000; c_xb:integer = 1000; 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 setlinestyle(0,1,1); setcolor(15); ramka; 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; procedure InitGrp; var r,d:integer; begin d:=detect; InitGraph(d, r, 'bgi'); r:=GraphResult; if r<>grok then begin Writeln (GraphErrorMsg(r)); readln; Halt(1); end; setfillstyle(1,15); end; function GetY(x:real) : real; begin GetY:=arctan(x); end; procedure GetMinMaxY(var min:real; var max:real; ax:real; bx:real); var h,y,x:real; begin h:=(bx-ax)/(GetMaxX-2*delta); min:=1e23; max:=-1e23; x:=ax; while (x<=bx) do begin y:=GetY(x); if(y>max) then max:=y; if(y<min) then min:=y; x:=x+h; end; end; function ToX(x:real):integer; var ret:real; begin ret:=round(GetMaxX/2) + (x)*kx; ToX:=round(ret); end; function ToY(y:real):integer; var ret:real; begin ret:=py0 + (y0-y)*ky; ToY:=round(ret); end; procedure PaintXY(ax:real; bx:real); var fmin, fmax, gx_min, gx_max, gy_min, gy_max, t:real; x,y,i:integer; s:string[50]; begin gx_min:=ax; gx_max:=bx; if(bx<0) then begin gx_max:=0; end else if(ax>0) then gx_min:=0; GetMinMaxY(gy_min, gy_max, ax, bx); if(gy_max<0) then begin gy_max:=0; end else if(gy_min>0) then gy_min:=0; if((kx=0) or (ky=0)) then begin kx:=(GetMaxX-2*delta)/(gx_max-gx_min); ky:=(GetMaxY-2*delta)/(gy_max-gy_min); x0:=gx_min; y0:=gy_min; px0:=delta; py0:=GetMaxY-delta; end; SetColor(7); SetLineStyle(0,0,0); SetTextStyle(SansSerifFont,0,0); y:=ToY(0); Line(px0, y, GetMaxX-delta, y); MoveTo(GetMaxX-delta, y); LineRel(-cur_x,-cur_y); MoveRel(cur_x, cur_y); LineRel(-cur_x, cur_y); t:=(gx_max-gx_min)/np_x; for i:=1 to np_x-1 do begin x:=ToX(gx_min+t*i); MoveTo(x,round(y+cur_p/2)); LineRel(0,-cur_p); str(gx_min+t*i:0:0, s); OutTextXY(x-3, y+cur_p, s); end; OutTextXY(GetMaxX-delta, y+10, 'X'); x:=ToX(0); Line(x, py0, x, delta); MoveTo(x, delta); LineRel(cur_y,cur_x); MoveRel(-cur_y, -cur_x); LineRel(-cur_y, cur_x); t:=(gy_max-gy_min)/np_y; for i:=1 to np_y-1 do begin y:=ToY(gy_min+t*i); MoveTo(round(x-cur_p/2), y); LineRel(cur_p, 0); if(gy_max-gy_min>100) then begin str(gy_min+t*i:0, s); OutTextXY(round(x+cur_p/2), y-3, s); end else begin str(gy_min+t*i:3:1, s); OutTextXY(round(x+cur_p/2), y-3, s); end; end; OutTextXY(x+10, delta, 'Y'); end; procedure PaintGraph(ax:real; bx:real); var h,x:real; px,py,nx,ny:integer; const dXY:integer = 4; begin PaintXY(ax, bx); SetColor(5); SetLineStyle(3,0,3); h:=(bx-ax)/(GetMaxX-2*delta); x:=ax; px:=ToX(x); py:=ToY(GetY(x)); MoveTo(px,py); while (x<bx) do begin nx:=ToX(x); ny:=ToY(GetY(x)); if((abs(nx-px)>dXY) or (abs(ny-py)>dXY)) then begin LineTo(nx, ny); px:=nx; py:=ny; end; x:=x+h; end; end; begin InitGrp; 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; kr:=1; while (not keypressed) do begin ClearDevice; PaintGraph(c_xa, c_xb); 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; ReadLn; ReadLn; end. Блок-схема: Висновок: На даній лабораторній роботі я згадав навички роботи в графічному середовищі мови програмування Турбо Паскаль та здійснив вивід на екран заданого зображення.
Антиботан аватар за замовчуванням

21.12.2011 21:12-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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