Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Створення 3D-моделі лабіринту з вертикальними стінами

Реферат Створення 3D-моделі лабіринту з вертикальними стінами





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

ModelInfo/* структура ДАНІ ПРО МОДЕЛЬ ЛАБІРИНТУ */

{Nx, Nz;/* Розміри (всього буде Nx * Nz клітин) */FIELDS [10] [10];/* Дані про клітинах */

.../* методи */

};


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

Node/* структура даних ВУЗОЛ ДЕРЕВА МОДЕЛІ */

{D Square [4];/* Вершини відповідного полігону (потрібні тільки для листя) */texture_type;/* Номер зображення, яке слід накласти на полігон (потрібен тільки для листя) */n_children;/* Кількість дітей (для листя дорівнює 0, для інших вузлів чого завгодно) */* Children [100];/* Діти (не використовується при обробки листя) */Draw ();/* Отрисовка для поддерева, де поточний вузол - корінь */() {n_children=0; }/* Конструктор */

};


У файлі лабіринт, що містить mxn клітин, доцільно зберігати як таблицю з mxn четвірок номерів. У кожній четвірці - номери зображень стін відповідної клітини. Якщо якась стіна відсутня, відповідний номер набуває спеціальне значення (в даній роботі - нульове).


2.3 Переваги та недоліки підходу


Переваги запропонованого представлення моделі у вигляді дерева наступні:

) одноманітна обробка різних частин моделі;

) простота програмної реалізації;

) простота отримання самих різних даних про моделі - все можна звести до обходу дерева;

) простота модифікації моделі до більш складної - складність ієрархії об'єктів і число рівнів ієрархії обмежено лише об'ємом доступної пам'яті.

Недолік також є - це далеко не оптимальне використання пам'яті. Навіть при оптимальній організації окремих вузлів дерева внутрішні вузли самі по собі не зберігають корисних даних. При розмірі лабіринту mxn є (3 + mn) внутрішніх вузлів. Кількість корисних вузлів не менше mn і не більше 5mn. Якщо ж врахувати, що будь-яка клітина лабіринту не може бути оточена стінами з усіх боків (інакше в неї не можна потрапити), то кількість корисних вузлів може досягати 4mn, тобто частка допоміжних вузлів складе не менше 20% від загального числа вузлів.


3. Розробка графічних алгоритмів


.1 Управління оглядом сцени


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

(DX, DY, DZ, DX + d * sin (fi), 0, DZ - d * cos (fi), 0, 1, 0);


Тут (DX, DY, DZ) - точка, звідки ми дивимося, d - відстань до точки, в яку ми дивимося. DY слід вибрати так, щоб камера була трохи вище стін лабіринту - тоді ми бачимо, що знаходиться всередині лабіринту. Варіюючи параметр fi, ми можемо «облетіти» лабіринт, побачивши його з усіх боків.

Для пересування по сцені вводимо поняття точки глядача, що задається вектором, цільової точки, що задається вектором, швидкості переміщення v і кута повороту w. Точка E визначає, де знаходиться глядач (перші 3 параметра функції gluLookAt), крапка C - куди він дивиться (друга три параметри gluLookAt), від параметра v залежить зсув координат E і C при імітації кроків вперед і назад. Параметр w визначає мінімальний кут повороту напрямку руху і повинен бути досить малий, в іншому випадку повороти будуть різкими і неприродними. Напрямок руху визначається як вектор, проведений між точками E і C, і буде позначатися як.

Щоб зміститися вперед, потрібно змістити вперед координати x і z точок E і C на величини і. Очевидно, що зміщення назад - зворотна операція. Для повороту напрямку руху потрібно виконати перетворення



Для повороту в інший бік потрібно замінити w на -w.

Найпростіше виконується зміна висоти огляду - потрібно лише змінити ey на фіксовану величину...


Назад | сторінка 2 з 4 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Проектування джерела опорного напруги, моделювання одного з його вузлів
  • Реферат на тему: Розробка технологічного процесу виготовлення жіночого костюма з детальним о ...
  • Реферат на тему: Розробка технологічного процесу виготовлення пальто жіночого з джинсової тк ...
  • Реферат на тему: Розрахунок двигуна і його основних вузлів
  • Реферат на тему: Створення віртуальної мережі з віддаленім Завантажени вузлів