Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Міністерство освіти і науки УкраїниСтр 1 из 5Следующая ⇒
Міністерство освіти і науки України Курсова робота: "Програмування трьохмірної графіки та анімації засобами 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 с.) |