Міністерство освіти і науки України
Курсова робота:
"Програмування трьохмірної графіки та анімації засобами 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-об’єктів є перспективним напрямком у створенні ігор, технічного ПЗ для створення об’ємних фігур, середовища. Набуття навиків у створенні об’ємної графіки передбачає взаємодію із математичними методами, їх розумінням та можливістю застосування на практиці. Показує зв’язок математики та інформатики.
Об’єкт роботи: є прикладне програмне забезпечення, середовище програмування та засоби математичного моделювання.
Предмет роботи: трьохмірна графіка та її алгоритми програмування.
Мета роботи: є розробка методичного матеріалу, реалізованих програмних продуктів з програмування графічних процесів.
РОЗДІЛ І. МАТЕМАТИЧНЕ МОДЕЛЮВАННЯТРЬОХМІРНОЇ ГРАФІКИ ТА АНІМАЦІЇ
1.1 Операції над векторами й матрицями
Вирішуючи завдання відображення складних геометричних об’єктів у просторі, необхідно встановити відповідність між точками поверхні геометричного об’єкта й точками плоскої поверхні екрана дисплея. При цьому деякі частині поверхні можуть бути не видимі, можуть відрізнятися умови висвітлення поверхонь, їхні кольори, відбивна здатність і т.п. Все це варто враховувати для побудови реалістичних зображень. Зображення можуть бути нерухомими (статичними) або мінливими в часі (динамічними).
Розглянемо основні математичні поняття, які дозволяють задати положення точки в просторі, ребра об’єкта, його поверхню і властивість поверхні. Положення точки в просторі задається за допомогою координат. Значення координат залежать від вибору системи координат і точки початку її відліку. В прямокутній (декартовій системі) координат положення точки задається трьома числами — координатами x, y та z (Рис. 1.1).
Ці координати є компонентами вектора, що йде з початку системи координат у задану точку:
Рис. 1.1. Декартова система координат
У загальному випадку осі системи координат можуть розташовуватися під довільними, хоча й фіксованих кутах одна до іншої. Для практичних розрахунків набагато зручніше коли ці осі розташовані взаємно перпендикулярно. Така система координат називається ортогональної. В ортогональній системі координат проекцією точки
на вісь є єдина точка на осі така, що відрізок прямої, проведеної із цієї точки до точки є перпендикулярним до даної осі [17].Таким чином, положення в просторі точки
описується її координатами, що записується як . Взаємне розташування осей в ортогональній системі координат у тривимірному просторі може бути двох видів. Проведемо вісь з ліва на право, а вісь знизу вгору, як показано на Рис. 1.2.Рис. 1.2. Лівостороння й правобічна системи координат
Вісь
при цьому може проходити як у напрямку від спостерігача в площину листа, так і від площини листа до спостерігача. У першому випадку система координат буде називатися лівої або лівосторонньої, а в другому випадку – правої або правобічної. Існує також легкий спосіб визначення виду системи координат по правій або лівій руці, як показано на Рис. 1.3. Для лівої руки великий, вказівний і середній пальці формують ліву трійку ортогональних векторів. Те ж відноситься і до їхніх циклічних перестановок.Рис. 1.3. Визначення лівосторонньої системи координат по лівій руці
Будь-яка точка в 3d програмуванні задається набором з 3-х координат по ортогональним (взаємноперпендикулярним) осях (x, y, z) відповідно [15].
Точками задаються також координати вершин об’єкта.
Відрізок - частина прямої, що з’єднує дві точки. Задається координатами кінців. Взаємне положення двох точок також задається вектором, спрямованим з однієї точки в іншу.
Нехай є крапка A з координатами (Ax, Ay, Az), і точка B з координатами (Bx, By, Bz),тоді вектор з початком у точці A і кінцем у точці B є
(1.1)Норма (довжина) вектора визначається в такий спосіб:
. (1.2)Довжина вектора є корінь суми квадратів його координат, тобто відстань від початку координат до вершини.
Сума векторів – це вектор, координати якого є сумою відповідних координат обох векторів:
. (1.3)Різниця векторів – це вектор, координати якого є різницею відповідних координат обох векторів.
Добуток вектораА і скаляра а – це вектор з наступними компонентами:
(1.4)Скалярний добуток двох векторів – число, що визначається в такий спосіб:
. (1.5)або
. (1.6)де b - кут між векторами.
Проекція вектора на вектор – це вектор, що має той самий або протилежний напрямок, що й вектор, на який проводиться проектування. Довжина проекції визначається як відстань між підставам і перпендикулярів, проведених з початкової й кінцевої точок проектованого вектора на другий вектор. Проекція вектора А на вектор В визначається так:
(1.7)Векторний добутокдвох векторів — це вектор, компоненти якого рівні
. (1.8)Векторний добуток спрямований перпендикулярно обом співмножникам.
Перенесеннямназивається наступне перетворення:
(1.9)