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

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





моделі, представленої у вигляді дерева з коренем this */

{(this- gt; n_children == 0)/* ознака листового вузла */

{

/* саме в листових вузлах зберігаються корисні дані (відомості про полігонах) */

/* щоб накладалося потрібне нам зображення */

glEnable (GL_TEXTURE_2D); (GL_TEXTURE_2D, TEXTURE_ID + this- gt; texture_type);

/* а тут накладаємо це зображення на полігон, малюємо його */(GL_QUADS);

/* пов'язуємо кути зображення і вершини полігону; малюємо полігон з картинкою на ньому */

glTexCoord2f (0.0f, 0.0f); this- gt; Square [0] .Vertex (); f (0.0f, 1.0f); this- gt; Square [1] .Vertex (); f (1.0f, 1.0f); this- gt; Square [3] .Vertex (); f (1.0f, 0.0f); this- gt; Square [2] .Vertex (); (); (GL_TEXTURE_2D);

return;

}

/* цей код виконується тільки якщо вузол внутрішній;

тут рекурсивно викликаємо функцію отрисовки для нащадків вузла */

for (int i=0; i lt; this- gt; n_children; i ++) gt; Children [i] - gt; Draw ();

}


Додаток Б


Ефект снігопаду

Генерація випадкової колекції «сніжинок» може бути виконана таким чином.

Тут xmin, xmax, ymin, ymax, zmin, zmax описують підпростір, в якому генеруються «сніжинки» («Верхній шар атмосфери» в розділі 3.4).


/* генерація випадкової цілої величини на [xmin; xmax] */

int RandomF (int xmin, int xmax) {return xmin + rand ()% (xmax - xmin + 1); }

/* генерація сніжинок випадковим чином в заданому підпросторі */

void SetSnow (int snow_x [], int snow_y [], int snow_z [], int n, int xmin, int xmax, int ymin, int ymax, int zmin, int zmax)

{(int i=0; i lt; n; i ++)

{

/* координати сніжинки задаються випадковим чином */

snow_x [i]=RandomF (xmin, xmax); _ y [i]=RandomF (ymin, ymax); _ z [i]=RandomF (zmin, zmax);

}

}


Наступні функції виконують відповідно отрисовку і за перерахунок координат «сніжинок» при падінні.


/* отрисовка сніжинок; малюються тільки ті, у яких Y знаходиться в [min_y; max_y] */

void Draw (int snow_x [], int snow_y [], int snow_z [], int n, int min_y, int max_y)

{

/* якщо Y поза [min_y; max_y], щось не отрісовиваємих сніжинку;

це потрібно, щоб не малювати ті сніжинки, які свідомо вище нашого огляду */

for (int i=0; i lt; n; i ++) (snow_y [i] gt;=min_y amp; amp; snow_y [i] lt;=max_y) f (snow_x [i] , snow_y [i], snow_z [i]);

}

/* імітація падіння сніжинок */Fall (int snow_y [], int n, int min_y, int max_y)

{(int i=0; i lt; n; i ++)

{_ y [i] -=15;/* Зменшуємо висоту сніжинки */

/* якщо сніжинка досягла землі raquo ;, то вона знову починає падати з неба - Коли їх багато, користувач не побачить такої деталі */

if (snow_y [i] lt;=min_y) snow_y [i]=max_y;

}

}

Колекція генерується в функції вікна програми при отриманні повідомлення WM_CREATE і сообщеня від пункту меню, що включає ефект снігопаду. Падіння імітується за тиками таймера (повідомлення WM_TIMER).

Для отрисовки «сніжинок» в обробнику повідомлення WM_PAINT передбачений наступний фрагмент коду:


glColor3f (1, 1, 1), (2); (GL_POINTS); (snow_x, snow_y, snow_z, nSnow, - 200, 400);

glEnd ();



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





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

  • Реферат на тему: Розробка програми з використанням OpenGL для динамічного зображення тривимі ...
  • Реферат на тему: Russell Square garden
  • Реферат на тему: Як бути, якщо контрагент за договором - нерезидент?
  • Реферат на тему: Арттерапевтіческіе техніки для роботи з тілесним чином «я» і з психосоматич ...
  • Реферат на тему: Дослідження впливу параметрів руху об'єкта, що знаходиться за перешкодо ...