Міністерство освіти і науки України 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Міністерство освіти і науки України



Міністерство освіти і науки України

Курсова робота:

"Програмування трьохмірної графіки та анімації засобами Turbo Pascal "


ЗМІСТ

ВСТУП

РОЗДІЛ І. МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ ТРЬОХМІРНОЇ ГРАФІКИ ТА АНІМАЦІЇ

1.1 Операції над векторами й матрицями

1.2 Використання проекцій

1.3 Алгоритми видалення невидимих ребер та граней

1.4 Методи програмування динамічних зображень

РОЗДІЛ ІІ. ПРАКТИЧНА РЕАЛІЗАЦІЯ 3D ОБ’ЄКТІВ ТА ДИНАМІЧНИХ ПОДІЙ

2.1 Модуль обробки 3d об’єктів Graph3d

2.2 Відображення об’ємних фігур в різних проекціях

2.3 Побудова поверхонь

2.4 Відсікання невидимих ліній, використання модуля Graph3d

ВИСНОВКИ

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ


ВСТУП

Комп’ютерна графіка з’явилась достатньо давно – вже у 60-х минулого століття існували повноцінні програми роботи з графікою. Сьогодні прийнято користуватися термінами "комп’ютерна графіка" і "комп’ютерна анімація". Поняття "комп’ютерна графіка" об’єднує всі види робот зі статичними зображеннями, "комп’ютерна анімація" має справи з зображеннями, які динамічно змінюються [21].

Сучасний етап розвитку технологій обумовив швидкий ріс графічних додатків, що використовують технологію трьохвимірного відображення. Це і тривимірне телебачення, тривимірні програми моделювання різноманітних пристроїв, деталей. Тривимірність швидко увійшла в наше життя у вигляді мультфільмів, фільмів із героями створеними у редакторах об’ємних фігур. Іграшки на даний час все більше і більше вражають нас своєю реалістичністю, і почасти дуже важко знайти різницю між реальністю і вигадкою, реалізованою на екранах монітора і телевізора [24].

Розвитку трьохмірного графічного проектування, в першу чергу передувало створення нових потужних процесорів, відеокарт та іншого апаратного забезпечення, що дозволяло швидше обробляти більші масиви даних, та відображення їх у реальному часі. Також із часом змінилися програмні засоби, які дозволяли прискорити обробку, винайшли більш швидкі алгоритми роботи, в чомусь відмовилися від несуттєвого акцентуючи увагу на основному.

На даний час основними є дві бібліотеки для роботи із графікою, це бібліотека DirectX та OpenGL. Хоча вони і по різному реалізовані, виконують практично ідентичні функції. Програмування 3d-графіки з їх допомогою значно полегшується, необхідно знати, звичайно, основні команди, поняття і вміти ними користуватися. Проте вони не надають учням основних понять у програмуванні. Так, вони служать в певному роді графічним двигуном, що обробляє дані, проте не надає відповіді, як же проходить перехід від 3d до 2d координат, яким чином відбувається обрахунок нових координат вершини тетраедра при його повороті, як відбувається його масштабування. Всі ці поняття вже закладені у бібліотеці і вважаються зрозумілими [22].

Проте, для початківців було б позитивним моментом знати всі ці нюанси, розуміти їх і вміти запрограмувати.

Метою курсової роботи є надати основні математичні поняття по роботі із 3d-графікою. Вказати шляхи реалізації основних алгоритмів, як то поворот, рух, проекція та відображення та розробити наочні приклади побудови фігур.

Актуальність мети – випливає із того, що програмування 3d-об’єктів є перспективним напрямком у створенні ігор, технічного ПЗ для створення об’ємних фігур, середовища. Набуття навиків у створенні об’ємної графіки передбачає взаємодію із математичними методами, їх розумінням та можливістю застосування на практиці. Показує зв’язок математики та інформатики.

Об’єкт роботи: є прикладне програмне забезпечення, середовище програмування та засоби математичного моделювання.

Предмет роботи: трьохмірна графіка та її алгоритми програмування.

Мета роботи: є розробка методичного матеріалу, реалізованих програмних продуктів з програмування графічних процесів.

 


Використання проекцій

 

При побудові реалістичних об’ємних зображенні варто враховувати ефект перспективи, що полягає в тому, що паралельні лінії, що віддаляються від спостерігача, на відстані здаються людині збіжними.

З спостерігачем пов’язана точка спостереження й напрямок спостереження. Ефект перспективи обернено-пропорційний відстані від об’єкта до точки спостереження. Якщо око розташоване далеко від об’єкту, то паралельні лінії про об’єкта будуть здаватися паралельними й спостерігачеві. Якщо приблизитися до об’єкта на досить близьку відстань, ефект перспективи підсилиться

Положення об’єкта задається в системі світових координат. При побудові зображення тривимірного об’єкта світові координати його точок треба перетворювати у двовимірні екранні координати. Проектування – це перехід від світових координат до екранних [25].

Перехід відбувається у два етапи. Є система видових координат, пов’язана зі спостерігачем. Світові координати перетворяться у видові за допомогою видового перетворення, потім видові координати перетворюються в екранні. Це – перспективне перетворення.

Тип проектування на плоску, а не викривлену поверхню, де як в якості проекторів використаються прямі. а не скривлені лінії, називається плоскою геометричною проекцією. Плоскі геометричні проекції діляться на два види: центральні й паралельні. Якщо центр проекції перебуває на визначеній відстані від проекційної площини, то проекція - центральна. Якщо ж центр проекції віддалений на нескінченність, то проекція - паралельна.

Точкою сходження називається точка перетинання центральних проекцій будь-якої сукупності паралельний прямих, які не паралельні проекційної площини. Існує нескінченна множина точок сходження. Точка сходження називається головної, якщо сукупність прямих паралельна одній з координатних осей. Залежно від того, скільки координатних осей перетинає проекційну площину розрізняють одно-, двох- і трьохточкові проекції.

Прямокутні координати точки спостереження у світовій системі координат зв’язані зі сферичними координатами (ρ, φ, θ) наступними співвідношеннями:

 

,(1.28)

 (1.29)

(1.30)

(1.31)

 

Перетворення координат точки з світової системи координат у видову виконується за допомогою перетворення:

 

 (1.32)

 

де V - матриця перетворення

 

(1.33)


У паралельних проекціях ігнорується видиме порушення пропорцій, що виникає внаслідок різної віддалі об’єкта та його частин до спостерігача. Це відповідає віддаленню точки спостереження на нескінченну відстань. При цьому паралельні геометричні лінії об’єкта залишаються паралельними й після проектування В перспективних проекціях ефект перспективи враховується [26].

Різновидність паралельної проекції – ортогональна проекція – отримуються ігноруванням z -координати після переходу у видову систему координат.

В ізометричній проекції осі х, у и z світової системи координат складають рівні кути із площиною екрана. Матриця ізометричної проекції має вигляд:

 

(1.34)

 

У диметричній проекції, що також відноситься до числа ортогональних, вісь z проектується на вісь v екранної системи координат, а проекції осей x і y складають заданий кут а з негативною й позитивною півосями осі u. Диметрична проекція включає ізометричну як частковий випадок [17].

У косокутній проекції осі y i z світової системи координат співпадають з осями u i v екранної системи, а проекція осі х становить заданий кут а з негативною півосю v.


Модуль обробки 3d об’єктів

 

Для відображення можливостей роботи із об’ємними фігурами нами було створено відповідний модуль, що дає змогу:

- перетворювати 3d координати в 2d координати монітора;

- вибирати відповідну проекцію за бажанням користувача;

- повертати точку відносно центру координат;

- повертати точку відносно певного вектору;

- відображати на екрані лінію, точку задану відповідними просторовими координатами;

- проводити масштабування точок відносно початку координат;

- рухати точку у довільному напрямку.

Розглянемо більш детально даний модуль:

Перш за все, в ньому оголошено глобальні зміні, які відповідатимуть за координати точки в просторі, на екрані:

 

type vector=array[1..3] of Real;

projection=array[1..2] of vector;

type Toch2d=record

x,y:integer;

end;

type Toch3d=record

x,y,z:real;

end;

var

abs_x_center, abs_y_center: Integer; DriverP: Pointer;


Даний модуль містить ряд функцій, а саме, функції Procedure open_graph та Procedure close_graph відповідають за ініціалізацію та вихід із графічного режиму.

Процедура Procedure out_text_XY(ss: String; x,y:integer; color: Word) відповідає за відображення текстового рядка заданим кольором за відповідними координатами.

Процедура Procedure put_picxel(d2:Toch2d; color: Word) за координатами точки у двохвимірному просторі за заданим кольором відображає її на екран.

Процедура Procedure norm_line(d2_0,d2_1:Toch2d; color:word) за координатами 2 точок у двохвимірному просторі за заданим кольором будує на екран лінію.

Дані процедури побудовані на основі стандартних функцій.

Відповідно до формул 1.33 та 1.34 вибору проекцій відображення побудовані матриці перетворення в ізометричній, диметричній та ортогональній проекції. Дані матриці необхідні для переходу від 3d до 2d координат:

 

Procedure computer_isometric_matrix(var P:projection);

Begin

P[1,1]:=-1.0/Sqrt(2.0);

P[1,2]:=-P[1,1];

P[1,3]:=0.0;

P[2,1]:=-1.0/Sqrt(6.0);

P[2,2]:=P[2,1];

P[2,3]:=-2.0*P[2,1];

End;

Procedure computer_dimetric_matrix(alpha: Real; var P: projection);

Var

t: Real;

Begin

alpha:=pi*alpha/180.0;

P[1,1]:=-1.0/Sqrt(2.0);

P[1,2]:=-P[1,1];

P[1,3]:=0.0;

t:=Sin(alpha)/cos(alpha);

P[2,1]:=t*P[1,1];

P[2,2]:=P[2,1];

P[2,3]:=Sqrt(1.0-Sqr(t));

End;

Procedure computer_oblique_matrix(alpha: Real; var P: projection);

Begin

alpha:=pi*alpha/180.0;

P[1,1]:=-Sin(alpha);

P[1,2]:=1.0;

P[1,3]:=0.0;

P[2,1]:=-Cos(alpha);

P[2,2]:=0.0;

P[2,3]:=1.0;

End;

 

Процедура повороту точки відносно початку координат побудована у відповідності до формул 1.12 – 1.22 і має вигляд:

 

Procedure povorot(var mas:Toch3d; kx,ky,kz:real);

var tx,ty,tz,y,x,z:real;

Begin

tx:=mas.x;

ty:=mas.y*cos(kx*pi/180)+mas.z*sin(kx*pi/180);

tz:=mas.y*(-sin(kx*pi/180))+mas.z*cos(kx*pi/180);

y:=ty;

x:=tx*cos(ky*pi/180)+tz*(-sin(ky*pi/180));

z:=tx*sin(ky*pi/180)+tz*cos(ky*pi/180);

mas.z:=z;

mas.x:=x*cos(kz*pi/180)+y*sin(kz*pi/180);

mas.y:=-x*sin(kz*pi/180)+y*cos(kz*pi/180);

End;

У відповідності до формули 1.25 побудована процедура руху точки:

Procedure rux(var mas:Toch3d; dx,dy,dz:real);

Begin

mas.x:=mas.x+dx;

mas.y:=mas.y+dy;

mas.z:=mas.z+dz;

End;

 

У відповідності до формули 1.27 побудована процедура масштабування:

 

Procedure mach(var mas:Toch3d; mx,my,mz:real);

Begin

mas.x:=mas.x*mx;

mas.y:=mas.y*my;

mas.z:=mas.z*mz;

End;

 

Для переходу з трьохмірої моделі до двомірної використовується процедура project(const P:projection; const d3:Toch3d; const c:Toch2d; var d2:Toch2d), що за заданими координатами 3d точки та вибраною матрицею проекції проводить перевід у двовимірні координати монітору:

Procedure project(const P:projection; const d3:Toch3d; const c:Toch2d; var d2:Toch2d);

 

Begin

d2.x:=c.x+Round(P[1,1]*d3.x+P[1,2]*d3.y+P[1,3]*d3.z);

d2.y:=c.y+Round(P[2,1]*d3.x+P[2,2]*d3.y+P[2,3]*d3.z);

End;

 

Даного модуля в принципі достатньо для реалізації побудови 3d об’єктів, анімації. Адже більшість операцій відбувається саме із вершинами об’єкта, а даний модуль саме їх і описує.

 

Побудова поверхонь

Для побудови поверхні була використана формула 1.38 і показана можливість її виведення 2 способами, стандартними засобами та із використанням сторінки відеопам’яті.

 

function f(x,y: Real): Real;

begin

f:=20*Sin(t*Sqrt(x*x+y*y));

end;

procedure anim(tt: Byte);

begin

ux:=Abs(b-a)/(nx-1);

uy:=Abs(d-c)/(ny-1);

d3.x:=a; d3.y:=c; d3.z:=f(d3.x,d3.y);

project(P,d3,cc,d2[1,1]);

d2[1,1].x:=d2[1,1].x+GetMaxX div 2;

d2[1,1].y:=GetMaxy div 2 - d2[1,1].y;

xmin:=d2[1,1].x; xmax:=xmin;

ymin:=d2[1,1].y; ymax:=ymin;

for i:=1 to nx do

begin

d3.y:=c;

for j:=1 to ny do

begin

d3.z:=f(d3.x,d3.y);

project(P,d3,cc,d2[i,j]);

d2[i,j].x:=d2[i,j].x+GetMaxX div 2;

d2[i,j].y:=GetMaxY div 2 - d2[i,j].y;

if xmin>d2[i,j].x then xmin:=d2[i,j].x

else if xmax<d2[i,j].x then xmax:=d2[i,j].y;

if ymin>d2[i,j].y then ymin:=d2[i,j].y

else if ymax<d2[i,j].y then ymax:=d2[i,j].y;

d3.y:=d3.y+uy;

end;

d3.x:=d3.x+ux;

end;

SetColor(tt);

for i:=1 to nx do

begin

MoveTo(d2[i,1].x,d2[i,1].y);

for j:=2 to ny do LineTo(d2[i,j].x,d2[i,j].y);

end;

for j:=1 to ny do

begin

MoveTo(d2[1,j].x,d2[1,j].y);

for j:=1 to nx do LineTo(d2[i,j].y,d2[i,j].x);

end;

end;

Begin

open_graph;

t:= 0;

theta:= 20;

repeat

computer_dimetric_matrix(theta, P);

anim(12);

anim(0);

t:=t+0.0001;

delay(10000);

until KeyPressed;

 

Відмінність у побудові поверхні із використанням відеопам’яті полягає в тому, що немає необхідності перемальовувати зображення щоразу, а просто зміннюючи відеосторінку, очищаємо її на активній малюємо малюнок і робимо її видимою:

 

SetGraphMode(VGAMed);

k:=1;

t:= 0;

theta:= 20;

repeat

computer_dimetric_matrix(theta, P);

k:=1-k;

SetActivePage(k);

ClearDevice;

anim(12);

SetActivePage(k);

t:=t+0.001;

until Keypressed;

ВИСНОВКИ

Проаналізувавши проблему використання комп’ютерної графіки, зокрема об’ємних фігур, ролі анімації та методів її відображення і у відповідності до мети курсової роботи було виконано наступне:

1. проведено детальний аналіз літератури та Інтернет-джерел за темою "Тривимірна графіка. Анімація"; 2. виокремлення основних понять, формул і методів роботи із об’єктами у тривимірному просторі;3. проведено детальний аналіз розділу математики "Вектори, матриці", де було виокремлено основні поняття по роботі з векторами, матрицями, які спрощують розуміння учнями основних подій в 3d просторі; 4. практично реалізовано основні алгоритми роботи по діям над точкою в просторі:

- рух;

- поворот;

- масштабування;

5. сформовано лекційний теоретичний матеріали.

Результатом роботи є лекційний курс по програмування тримірної графіки та методика відображення анімаційних проектів з допомогою стандартних засобів мови програмування Pascal, без використання сторонніх бібліотек. Даний лекційний курс побудований лише на математичних функціях і їх використанні на мові програмування. Він охоплює такі області як векторна, матрична математика. Даний курс доповнений реалізованими прикладами, що дають практичне уявлення про застосування математичних моделей у програмуванні, вчать аналітично реалізовувати поставленні завдання, покладаючись на різноманітні алгоритми та методи. Кінцевий продукт має практичну цінність у застосуванні при роботі із поєднання програмування із математикою, даючи наглядне розуміння взаємодії і використання математичних методів та фунцій, їх застосування на практиці.


СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. Turbo Pascal – Издательская група К.: ВНV, 2000. – 320 с.

2. Абрамов В. Г. Введение в язык Pascal: Учебное пособие для студентов вузов по специальности Прикладная математика. – М.: Наука, 1988. – 158 с.

3. Абрамов С. А. Начала программирования на языке Pascal. - М.: Наука, 1987. – 126 с.

4. Аммерал А. Машинная графика на языке С, в 4-х томах, изд-во Сол. Систем, – 1992. – 230 с.

5. Власик А.П. Практикум з програмування в середовищі Turbo Pascal. – Рівне. – НУВГ,- 53 с.

6. Вэн-Дэм. А. Основы интерактивной машинной графики, т.1-2, М. Мир, 1985. – 257 с.

7. Гилой. Интерактивная машинная графика. – М., Мир, –1981. – 210 с.

8. Грайс. Графические средства персональных компьютеров. – М., – Мир, 1980. – 142 с.

9. Грис Д. Наука программирования. M.: Мир, 1984. – 230 с.

10. Джонс Ж., Харроу К. Решение задач в системе Турбо Паскаль. М, 1991. – 709 с.

11. Жикин А.Е. Компьютерная графика. Динамика, реалистические ихображения, М., Диалог-МИФИ, – 1995 – 324 с.

12. Зуев Е. А. Язык программирования Турбо Паскаль 6.0, 7.0. – М.: Радио и связь, 1993. – 150 с.

13. Ковалюк Т.В. Основи програмування. Київ: Видавнича група ВНV, 2005. – 385 с.

14. Культин Н. Б. Программирование в TurboPascal 7.0 и Delphi. - Санкт- петербург,1999. – 120 с.

15. Майкл Ласло. Вычислительная геометрия и компьютерная графика на С++. Москва – Бином, 1997. – 440 с.

16. Марченко А.И., Марченко Л.А. Программирование в среде Turbo Pascal 7.0. К.: ВЕК, – 2000. – 441 с.

17. Немнюгин С.А. Turbo Pascal Практикум. 2-е издание. – С-Пб., – Питер– 2003, - 267 с.

18. Перминов О. Н. Программирование на языке Паскаль. – М.: Радио и связь, – 1988. – 97 с.

19. Перминов О. Н. Язык программирования Pascal. – М.: Радио и связь,– 1989. – 205 с.

20. Препарата Ф. Вычислительная геометрия: Введение, М. Мир, 1989.  ч.1.- Рівне: НУВГП, 2005. – 179 с.

21. Роджерс, Адамс, Математические основы машинной графики, – М.? Машиностроение, – 1985.– 102 c.

22. Роджерс С.А. алгоритмические основы машинной графики. М. Мир, 1989. – 235 с.

23. Тихомиров Ю. Программирование трехмерной графики, С.-Пб.: БХВ‑Санкт-Петербург,1999. – 350 с.

24. Томпсон Н. Секреты программирования трехмерной графики для Windows 95. Перев с англ. – СПб: Питер, – 1997. – 352 с.

25. Фокс А. Вычислительная геометрия, М., Мир, – 1982. – 421 с.

26. Хонич А. Как самому создать трехмерную игру. М.:МИКРОАРТ, 1996. – 220 с.

Міністерство освіти і науки України

Курсова робота:

"Програмування трьохмірної графіки та анімації засобами Turbo Pascal "


ЗМІСТ

ВСТУП

РОЗДІЛ І. МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ ТРЬОХМІРНОЇ ГРАФІКИ ТА АНІМАЦІЇ

1.1 Операції над векторами й матрицями

1.2 Використання проекцій

1.3 Алгоритми видалення невидимих ребер та граней

1.4 Методи програмування динамічних зображень

РОЗДІЛ ІІ. ПРАКТИЧНА РЕАЛІЗАЦІЯ 3D ОБ’ЄКТІВ ТА ДИНАМІЧНИХ ПОДІЙ

2.1 Модуль обробки 3d об’єктів Graph3d

2.2 Відображення об’ємних фігур в різних проекціях

2.3 Побудова поверхонь

2.4 Відсікання невидимих ліній, використання модуля Graph3d

ВИСНОВКИ

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ


ВСТУП

Комп’ютерна графіка з’явилась достатньо давно – вже у 60-х минулого століття існували повноцінні програми роботи з графікою. Сьогодні прийнято користуватися термінами "комп’ютерна графіка" і "комп’ютерна анімація". Поняття "комп’ютерна графіка" об’єднує всі види робот зі статичними зображеннями, "комп’ютерна анімація" має справи з зображеннями, які динамічно змінюються [21].

Сучасний етап розвитку технологій обумовив швидкий ріс графічних додатків, що використовують технологію трьохвимірного відображення. Це і тривимірне телебачення, тривимірні програми моделювання різноманітних пристроїв, деталей. Тривимірність швидко увійшла в наше життя у вигляді мультфільмів, фільмів із героями створеними у редакторах об’ємних фігур. Іграшки на даний час все більше і більше вражають нас своєю реалістичністю, і почасти дуже важко знайти різницю між реальністю і вигадкою, реалізованою на екранах монітора і телевізора [24].

Розвитку трьохмірного графічного проектування, в першу чергу передувало створення нових потужних процесорів, відеокарт та іншого апаратного забезпечення, що дозволяло швидше обробляти більші масиви даних, та відображення їх у реальному часі. Також із часом змінилися програмні засоби, які дозволяли прискорити обробку, винайшли більш швидкі алгоритми роботи, в чомусь відмовилися від несуттєвого акцентуючи увагу на основному.

На даний час основними є дві бібліотеки для роботи із графікою, це бібліотека DirectX та OpenGL. Хоча вони і по різному реалізовані, виконують практично ідентичні функції. Програмування 3d-графіки з їх допомогою значно полегшується, необхідно знати, звичайно, основні команди, поняття і вміти ними користуватися. Проте вони не надають учням основних понять у програмуванні. Так, вони служать в певному роді графічним двигуном, що обробляє дані, проте не надає відповіді, як же проходить перехід від 3d до 2d координат, яким чином відбувається обрахунок нових координат вершини тетраедра при його повороті, як відбувається його масштабування. Всі ці поняття вже закладені у бібліотеці і вважаються зрозумілими [22].

Проте, для початківців було б позитивним моментом знати всі ці нюанси, розуміти їх і вміти запрограмувати.

Метою курсової роботи є надати основні математичні поняття по роботі із 3d-графікою. Вказати шляхи реалізації основних алгоритмів, як то поворот, рух, проекція та відображення та розробити наочні приклади побудови фігур.

Актуальність мети – випливає із того, що програмування 3d-об’єктів є перспективним напрямком у створенні ігор, технічного ПЗ для створення об’ємних фігур, середовища. Набуття навиків у створенні об’ємної графіки передбачає взаємодію із математичними методами, їх розумінням та можливістю застосування на практиці. Показує зв’язок математики та інформатики.

Об’єкт роботи: є прикладне програмне забезпечення, середовище програмування та засоби математичного моделювання.

Предмет роботи: трьохмірна графіка та її алгоритми програмування.

Мета роботи: є розробка методичного матеріалу, реалізованих програмних продуктів з програмування графічних процесів.

 



Поделиться:


Последнее изменение этой страницы: 2020-03-02; просмотров: 89; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.219.166 (0.12 с.)