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

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

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

Рік:
2010
Тип роботи:
Завдання
Предмет:
Комп'ютерна графіка
Група:
СІ-22

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”   ПОБУДОВА ГРАФІКІВ ФУНКЦІЙ ЗАСОБАМИ МОВИ ТУРБО-ПАСКАЛЬ ДО ЛАБОРАТОРНОЇ РОБОТИ № 2 З КУРСУ “КОМП’ЮТЕРНА ГРАФІКА” ПОВНИЙ ТЕКСТ ЗАВДАННЯ Ознайомитися з методами побудови графіків функцій на екрані монітора комп’ютера. Вивчити основні процедури мови Турбо-Паскаль для виведення тексту в графічному режимі. Написати програму, яка будує в середині екрану систему координат XY і на ній графік функції Y=F(X), використовуючи графічні оператори мови Турбо Паскаль, якщо аргумент або параметр змінюється на проміжку [a;b] з кроком h. Варіанти завдань беруть з таблиці 1 за вказівкою викладача. Таблиця 1. N% п/п Функція Інтервал Крок  3  x=[0;180] h=0.15   ОСТАТОЧНА ВЕРСІЯ БЛОК-СХЕМИ АЛГОРИТМУ Функція Chartstuff 1 2 3 Процедура BuilderX 1 1 2 3 4 5 6 7 8 9 10 11 Процедура BuilderY 1 2 3 4 5 6 7 8 9 10 11 Процедура Coordinate 1 2 3 так ні 4 5 так ні 6 7 так ні 8 9 так ні 10 11 12 13 14 15 16 ні 17 так  18 19 так ні 20 21 22 23 24 25 26 27 28 29 ні 30 так 31 32 33 так ні 34 35 36 37 38 Процедура Parameter 1 2 3 Процедура Chart 1 1 2 3 4 5 6 7 ні так 8 9 10 11 12 Головна програма 1 2 3 4 5 6 7 8 9 10 11 12 13 ні 14 так 15 16 17 18 ні так 19  20 так ні 21 22 так ні 23 24 25 ні так 26 так 27 ні 28 29 так ні 30 31 32 33 34 СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ПРОЦЕДУР ТА ФУНКЦІЙ, ВИКОРИСТАНИХ У БЛОК-СХЕМІ АЛГОРИТМУ І ПРОГРАМИ, ТА ЇХ ПОЯСНЕННЯ СПИСОК : Driver Mode ERROR A B H STDIMX STDIMY YMAX YMIN X Y KX KY MAXRX MAXRY X0 Y0 BUFMIN POZ POZX POZY STEP GX GY MAXGX MAXGY SKY SKX ARROW VALUEX VALUEY MAXGZONEX MAXGZONEY I YCOUT XCOUT TEXT ПОЯСНЕННЯ ІДЕНТИФІКАТОРІВ ЗМІННИХ : Driver – характеризує тип графічного драйвера Mode – визначає режим роботи графічного адаптера Error – код помилки A – ліва межа табулювання B – права межа табулювання H – крок табулювання Stdimx – найменше розширення по х Stdimy – найменше розширення по у Ymax – максимальне значення функції Ymin – мінімальне значення функції X – координата по осі абсцис Y – координата по осі ординат Kx – коефіцієнт перетворення по осі абсцис Ky – коефіцієнт перетворення по осі ординат Maxrx – проміжок на якому графік лежить по осі абсцис Maxry – проміжок на якому графік лежить по осі ординат X0 – координата графічного центра по осі абсцис Y0 – координата графічного центра по осі ординат Bufmin – покрокове сумування значень по осі абсцис чи ординат Poz – положення тексту при виводі по осі абсцис чи ординат Pozx – положення графічного центру по осі абсцис для розмітки осі абсцис Pozy – положення графічного центру по осі ординат для розмітки осі ординат Step – крок табулювання для розмітки осей абсцис та ординат Gx – графічна координата по осі абсцис Gy – графічна координата по осі ординат Maxgx – максимальне горизонтальне розширення екрану Maxgy – максимальне вертикальне розширення екрану Sky – відступ по осі ординат для мінімального розширення Skх – відступ по осі абсцис для мінімального розширення Arrow – розмір стрілок Valuex – коефіцієнт перетворення екрану по осі абсцис відносно мінімального розширення Valuey - коефіцієнт перетворення екрану по осі ординат відносно мінімального розширення Maxgzonex – область що займатиме графік по осі абсцис на екрані Maxgzoney – область що займатиме графік по осі ординат на екрані I – лічильник Ycout – лічильник для розмітці осі ординат Xcout – лічильник для розмітці осі абсцис Text – змінна для виводу тексту розмітки ПОЯСНЕННЯ ПРОЦЕДУР ТА ФУНКЦІЙ : INITGRAPH – ініціалізує графічний режим GRAPHRESULT – тестує роботу графічного режиму Chartstuff – функція для графіка функції Coordinate – процедура розмітки осей BuilderХ – процедура побудови осі абсцис BuilderY – процедура побудови осі ординат Str – процедура перетворення числового значення у текстове Settextstyle – процедура, що задає тип шрифта та його положення Setcolor – процедура ,що задає колір ліній Outtextxy – процедура виводу тексту на екран у вказаній точці Chart – процедура побудови графіка функції Lineto – процедура побудови ліній від поточного положення вказівника до вказаної точки Setlinestyle – процедура, що задає тип ліній Moveto – процедура, що переміщає вказівник у вказане положення Parameter – процедура для визначення коефіцієнтів перетворення графіку ОСТАТОЧНА ВЕРСІЯ ПРОГРАМИ Program ChartBuilder; Uses Graph,crt; var Driver,Mode,Error:integer; a,b,h,stdimx,stdimy,ymax,ymin,x,y,kx,ky,maxrx,maxry,x0,y0,bufmin,bufmax,poz,pozx,pozy,step:real; gx,gy:real; maxgx,maxgy,sky,skx,arrow,valuex,valuey,maxgzonex,maxgzoney:integer; i,ycout,xcout:integer; text:string; {Specified Function for chart building start} function ChartStuff(x:real):real; begin ChartStuff:=90*cos(x+ln(x)/20); end; {Specified Function for chart building start} {Building OX and OY and Writing Coordinates Start} procedure Coordinate(x0,y0:real); procedure BuilderX(x0,y0:real); begin moveto(trunc(x0),trunc(y0)); lineto(skx*valuex,trunc(y0)); moveto(trunc(x0),trunc(y0)); lineto(maxgx-skx*valuex,trunc(y0)); lineto(maxgx-trunc(skx*valuex/2),trunc(y0)); lineto(maxgx-trunc(skx*valuex/2)-arrow*valuex,trunc(y0)+arrow*valuey); moveto(maxgx-trunc(skx*valuex/2),trunc(y0)); lineto(maxgx-trunc(skx*valuex/2)-arrow*valuex,trunc(y0)-arrow*valuey); outtextxy(maxgx-trunc(skx*valuex/2)-arrow*valuex,trunc(y0)+arrow*arrow*valuey,'X'); end; procedure BuilderY(x0,y0:real); begin moveto(trunc(x0),trunc(y0)); lineto(trunc(x0),maxgy-sky*valuey); moveto(trunc(x0),trunc(y0)); lineto(trunc(x0),sky*valuey); lineto(trunc(x0),trunc(sky*valuey/2)); lineto(trunc(x0)-arrow*valuex,trunc(sky*valuey/2)+arrow*valuey); moveto(trunc(x0),trunc(sky*valuey/2)); lineto(trunc(x0)+arrow*valuex,trunc(sky*valuey/2)+arrow*valuey); outtextxy(trunc(x0)+arrow*arrow*valuex,trunc(sky*valuey/2)+arrow*valuey,'Y'); end; begin x0:=trunc(skx*valuex-a*kx); y0:=trunc(sky*valuey+ymax*ky); if(x0<=skx*valuex) then x0:=skx*valuex else if(x0>=maxgx-skx*valuex) then x0:=maxgx-skx*valuex; if(y0<=sky*valuey) then y0:=sky*valuey else if(y0>=maxgy-sky*valuey) then y0:=maxgy-sky*valuey; builderX(x0,y0); builderY(x0,y0); pozx:=x0; pozy:=y0; {X Step Select} step:=abs(b-a)/20; {X Step Select} {Writing Coordinates x Start} x0:=trunc(skx*valuex-a*kx); y0:=trunc(pozy); BufMin:=a; for xcout:=1 to 21 do begin Poz:=trunc(x0+BufMin*kx); str(BufMin:2:1,text); if((bufmin>=-step/(b-a))and(bufmin<=step/(b-a))) then text:='0' else line(trunc(poz),trunc(y0+arrow*valuey),trunc(poz),trunc(y0-arrow*valuey)); settextstyle(SansSeriffont,1,0); outtextxy(trunc(poz),trunc(y0+arrow*valuey),text); bufMin:=BufMin+step; end; {Writing Coordinates x end} {Y Step Select} step:=abs(ymax-ymin)/20; {Y Step Select} {Writing Coordinates y} y0:=trunc(sky*valuey+ymax*ky); x0:=trunc(pozx); BufMin:=ymin; for ycout:=1 to 21 do begin Poz:=trunc(y0-BufMin*ky); str(Bufmin:2:1,text); if(not((bufmin>=-step/(b-a))and(bufmin<=step/(b-a)))) then begin settextstyle(SansSeriffont,0,0); outtextxy(trunc(x0+arrow*valuex),trunc(poz),text); line(trunc(x0)+arrow*valuex,trunc(poz),trunc(x0)-arrow*valuex,trunc(poz)); end; bufMin:=BufMin+step; end; {Writing Coordinates y End} end; {Building OX and OY and Writing Coordinates End} {Searching increase values Start} procedure Parameter(a,b,ymax,ymin:real); begin maxgzonex:=maxgx-2*skx*valuex; maxgzoney:=maxgy-2*sky*valuey; maxrx:=abs(b-a); maxry:=ymax-ymin; kx:=maxgzonex/maxrx; ky:=maxgzoney/maxry; end; {Searching increase values End} {Building of Chart Start} procedure Chart(x0,y0:real); begin setlinestyle(3,0,3); setcolor(yellow); x0:=trunc(skx*valuex-a*kx); y0:=trunc(sky*valuey+ymax*ky); x:=a; gx:=x0+kx*(x); gy:=y0-chartstuff(x)*ky; moveto(trunc(gx),trunc(gy)); while(x<=b) do begin x:=x+h; gx:=x0+kx*x; gy:=y0-ky*chartstuff(x); lineto(trunc(gx),trunc(gy)); end; setlinestyle(0,0,1); setcolor(white); {Building of Chart End} end; begin clrscr; {Starting Conditions Input Start} writeln('Enter Driver Type(15 is recommended;Auto Choice - 0) : '); readln(Driver); writeln('Enter Driver Mode(3 is recommended;Auto Choice - 0) : '); readln(Mode); Writeln('Enter left Tabulation Border a(variant 3 = 0.15) : '); readln(a); Writeln('Enter Right Tabulation Border b(variant 3 = 180) : '); readln(b); writeln('Enter Tabulation step h(variant 3 = 0.15) : '); readln(h); {Starting Conditions Input End} {Graph Mode Initialization Start} InitGraph(Driver,Mode,''); {Graph Mode Initialization End} {Error Self-Checking Procedure Start} Error:=GraphResult; if Error<>grOk then begin writeln(GraphErrorMsg(Error)); end; {Error Self-Checking Procedure End} maxgx:=trunc(getmaxx); maxgy:=trunc(getmaxy); {Standart Dimensions Start} stdimx:=320; stdimy:=200; skx:=30; sky:=25; arrow:=3; {Standart Dimensions End} {Searching for Chart Machine Area Start} for i:=1 to 20 do begin valuey:=trunc(maxgy/stdimy); valuex:=trunc(maxgx/stdimx); if(valuex=i) then skx:=trunc(valuex*skx/i); if(valuey=i) then sky:=trunc(valuey*sky/i); end; {Searching for Chart Machine Area End} {Searching Y max and Y min Value Start} x:=a; ymin:=chartstuff(x); x:=b; ymax:=chartstuff(x); x:=a; while(x<=b) do begin y:=chartstuff(x); x:=x+h; if(y>=ymax) then ymax:=y else if(y<=ymin) then ymin:=y; end; {Searching Y max and Y min Value End} {Building Graph Start} parameter(a,b,ymax,ymin); chart(x0,y0); coordinate(x0,y0); {Building Graph End} readln; end. РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ 
Антиботан аватар за замовчуванням

14.11.2011 03:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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