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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” кафедра АТ Графічно-розрахункова робота № 1 З курсу “Комп’ютерна графіка” Варіант №10 1.Мета роботи: Набути практичних навиків в складанні програм для побудови зображень на екрані комп’ютера за допомогою засобів мови Турбо-Паскаль. 2. Завдання: Побудувати графік функції z=ex, заданої таблично. Графік повинен відображати результати розрахунків, яуі записані у файлі на диску. Масштаб розмітки осей координат графіка повинен відповідати реальним результатам розрахунків. Параметри для побудови графіка: Тип лінії – штрих-пунктирна, товщина –3 пікселя, колір лінії – Cyan, шрифт розмітки осей графіка – Small. 3. Виведення необхідних формул для побудови графіка: 3.1 Перетворення реальних координат до машинних: Для ього використовують такі вирази: Xмаш=X0маш + Xреальн* kx; Yмаш=Y0маш –Yреальн*ky, де Xмаш ,Yмаш – поточні машинні координати точки в пікселях, X0маш,Y0маш – відображення центру реальних координат на екрані в машинних координатах; 3.2 Коефіцієнти перетворення: Коефіцієнти перетворення необхідні, щоб графік помістився на екрані, або розтягнувся на весь екран. 4.2. Загальна блок-схема алгоритму програми (2), що будує графік табульованої функції. Початок 1 Ініціалізація графічного режиму 2 Задання кольору фону і кольору ліній та сим- волів 3 Встановлення стилю для побудови ліній 4 Визначення максима- льних і мінімальних значень змінних X,Z 5 Визначення коефіцієн- тів масштабування та координат точки цен- тру координат 6 I=0 7. Відкриття файлу data.dat і зчитування з нього зна- чення змінних x,z 4 3 7 8 Встановлення курсора в точку з координатами (x/kx+x0+i,y0-y/ky) 9 прочитано весь так файл? ні 10 Зчитування з файлу значе- нь змінних x,y.Проведення лінії до точки з координа- тами (x/kx+x0+i,y0-y/ky) 11 ні так 12. Закриття файлу data.dat 13. Встановлення кольору ліній та символів;встано- влення стилю для побу- дови ліній. 14 Побудова координат- них осей 515 414 . 15. 3 14 16. Завершення роботи в графічному режимі Кінець 4.3. Деталізована блок схема блоку № 15 Початок 1 Закриття графічниго режиму Кінець 4.4. Деталізована блок-схема блоку №1 Початок 1 Ініціалізація графіч- ного режиму так 2 Помилки ні ініціалізації графіч- ного режиму? 3 Помилка ініціалізації графічного режиму 4 Вихід із програми Кінець 4.5. Деталізована блок-схема блоку №4 Початок 1 Відкриття файлу data.dtp зчитування з файлу зна- чень змінних x,y 2 maxX=x; minx=x; maxY=y; minY=y; 3 Прочитаний увесь файл 4 Зчитування з файлу зна- чень змінних x,y 5 6 maxX<x maxX:=x 7 8 minX:=x minX>x 9 10 maxY<y maxY:=y 11 12 minY:=y minY>y Кінець 4.6. Деталізована блок-схема блоку №5 Початок 1 Lx:=maxX-minX Ly:=maxY-minY 2 3 P1:=(640*minx)/Lx Kx:=Lx/620 maxX>0,minX<0 4 5 P1:=15 maxX>=0,minX>=0 Kx:=maxX/620 6 7 P1:=590 Kx:=minx/620 maxX<=0,minX<=0 9 P2:=480- maxY>0,minY<0 (480*minY)/Ly+5 Ky:=maxX/440 10 11 P2:=465 Ky:=maxY/440 maxY>=0,minY>=0 12 13 P2:=12 maxY<=0,minY<=0 Ky:=minY/440 14 X0:=P1; Y0:=P2; Кінець 4.7. Деталізована блок-схема блоку №13 Початок 1 Будуємо лінію задаючи координати її початкової і кінцевої точки (x0,0,x0,480); 2 Будуємо лінію задаючи координати її початкової і кінцевої точки (0,y0,640,y0); 3 Будуємо лінію задаючи координати її початкової і кінцевої точки (630,y0-5,640,y0); 4 Будуємо лінію задаючи координати її початкової і кінцевої точки (630,y0+5,640,y0); 5 Будуємо лінію задаючи координати її початкової і кінцевої точки (x0-5,10,x0,0); 6 Будуємо лінію задаючи координати її початкової і кінцевої точки (x0+5,10,x0,0); Кінець 4.8. Деталізована блок-хема блоку №14 Початок 1 Побудова засічок та їх номерація на осі ОХ справа від центру коор- динат 2 Побудова засічок та їх номерація на осі ОХ зліва від центру коор- динат 3 Побудова засічок та їх номерація на осі ОY під віссю ОХ 4 Побудова засічок та їх номерація на осі ОY над віссю ОХ Кінець 4. Блок-схеми алгоритмів програми. 4.1. Блок-схема алгоритму програми (1), що табулює задану функцію. Початок Відкриття файлу data.dat x:=a x<=b z:=x/3; запис у файл зна- чень змінних x,y; x:=x+h Закриття файлу data.dat Кінець 5. Остаточний текст програми: 5.1 Текст програми (1), що табулює задану функцію: var a,b:integer; x,y,h,t:real; f:file of real; begin a:=-500; b:=500; h:=3; assign(f, 'd:\data.dat'); rewrite(f); x:=a; while x<=b do begin y:=abs(sqr(x)*x); write(f,x); write(f,y); x:=x+h; end; close(f); end. 5.2 Текст програми (2), котра будує графік протабульованої функції: uses Graph,crt; {******************************************} Procedure IntGraphMode(Regim:integer); var Driver,Error:integer; begin Driver:=Detect; Initgraph(Driver,Regim,'d:\tp\bgi' ); Error:=GraphResult; if error <>grOk then begin writeln(GraphErrorMsg(error)); halt(1); end; end; {********************************************} Procedure CloseGraphMode; begin CloseGraph; end; {*********************************************} procedure osi(x0,y0:integer); begin line (x0,0,x0,480); line (0,y0,640,y0); line (630,y0-5,640,y0); line (630,y0+5,640,y0); line (x0-5,10,x0,0); line (x0+5,10,x0,0); end; {*******************************} procedure rosmitka (X0,Y0:integer;Kx,Ky:real); Var i,V:integer; st:string; begin { SetUserCharSize(1, 3, 1, 3);} for i:=1 to 20 do BEGIN line(X0+64*i,Y0-3,X0+64*i,Y0+3); STR((64*i*Kx):0:2,st); outtextxy(x0+64*i, y0+5,st); line(X0-64*i,Y0-3,X0-64*i,Y0+3); STR(-(64*i*Kx):0:2,st); outtextxy(x0-64*i, y0+5,st); line(X0+3,Y0+24*i,X0-3,Y0+24*i); STR(-(24*i*Ky):0:2,st); outtextxy(x0+5, y0+24*i,st); line(X0+3,Y0-24*i,X0-3,Y0-24*i); STR((24*i*Ky):0:2,st); outtextxy(x0+5, y0-24*i,st); outtextXY(x0+5,Y0+2,'0'); end; end; {*************************************************************} procedure MaxMinEl (var X0,Y0:integer;var Kx,Ky); var f :file of real; x,y:real; maxX, maxY,minY ,minX:real ; P1,p2:integer; begin assign (f, 'D:\data.dtp'); reset(f); read(f,x); read (f,y); maxX:=x; maxY:=y; minY:=y; minX:=x; while not (eof(f)) do begin read (f,x); read (f,y); if maxX<x then maxX:=x; if minX>x then minX:=x; if maxY<y then maxy:=y; if minY>y then minY:=y; end; end; {************************************************************************} procedure rosraxynok (var X0,Y0:integer;var Kx,Ky:real); var f :file of real; x,y:real; maxX, maxY,minY ,minX,Lx,Ly:real ; P1,p2:integer; begin Lx:=maxX-minX; Ly:=maxy-minY; if ((maxX>0) and (minX<0)) then begin P1:=round(abs((640*minX))/Lx); Kx:= LX/620; end; if ((maxX>=0) and (minX>=0)) then begin P1:=15; Kx:= maxX/620; end; if ((maxX<=0) and (minX<=0)) then begin P1:=590; Kx:=ABS(minX)/620; end; if ((maxY>0) and (minY<0)) then begin P2:=480-round(abs((480*minY)/LY))+5; Ky:=LY/440; end; if ((maxY>=0) and (minY>=0)) then begin P2:=480-15; Ky:=maxY/440; end; if ((maxY<=0) and (minY<=0)) then begin P2:=12; Ky:=abs(minY)/440; end; X0:=P1; Y0:=P2; end; {*******************************************************************} var tmp1:integer; X0,Y0:integer; Kx,Ky:real; maxX, maxY,minY ,minX,Lx,Ly:real ; I,k:integer ; f:file of real; x,y:real; begin IntGraphMode(VGAMed); setcolor(3); setlinestyle(1,3,3); assign (f, 'D:\data.dat'); MaxMinEl (X0,Y0,Kx,Ky); rosraxynok ( X0,Y0, Kx,Ky); begin for i:=0 to 1 do begin reset(f); read(f,x); read(f,y); {**********************************} tmp1:=3; if (kx=0) then kx:=1; if ky=0 then ky:=1; if ky=0 then tmp1:=1; { moveto(round(x)} moveto( round(x/Kx)+X0-tmp1+i, -round(y/Ky)-tmp1+Y0); while not eof(f) do Begin read(f,x); read(f,y); lineto (round(x/Kx)+X0-tmp1+i,-round(y/Ky)-tmp1+Y0); End; close(f); end; end; setcolor(2);т setlinestyle(0,0,0); osi(x0,y0 ); rosmitka(X0,Y0,Kx,Ky); readln; CloseGraph; end.
Антиботан аватар за замовчуванням

2015

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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