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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” кафедра АТ Графічно-розрахункова робота № 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.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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