14573

Модель разноцветного куба. Способы получения плоских проекций трехмерных объектов. Задание положения и ориентации камеры

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа №4 Модель разноцветного куба. Способы получения плоских проекций трехмерных объектов. Задание положения и ориентации камеры. 1.Рисование трехмерного куба. Куб следует рассматривать как шесть многоугольников которые определяют его грани. Мас

Русский

2013-06-08

81.5 KB

12 чел.

Лабораторная работа №4

Модель разноцветного куба.  Способы получения плоских проекций трехмерных объектов. Задание положения и ориентации камеры.

1.Рисование трехмерного куба.

Куб следует рассматривать как шесть многоугольников, которые определяют его грани. Массив вершин куба может быть представлен в следующем виде:

GLfloat vertices[][3]={{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},

{1.0,1.0,-1.0},{-1.0,1.0,-1.0},{-1.0,-1.0,1.0},

{1.0,-1.0,1.0},{1.0,1.0,1.0},{-1.0,1.0,1.0}};

Для определения граней куба можно использовать список точек- элементов массива вершин. Например, одна грань куба в тексте программы определяется следующим образом:

glBegin(GL_POLYGON);

glVertex3fv(vertices[0]);

glVertex3fv(vertices[3]);

glVertex3fv(vertices[2]);

glVertex3fv(vertices[1]);

glEnd();

 Другие пять граней определяются аналогично. При определении трехмерных многогранников порядок перечисления вершин имеет большое значение. Следует учитывать, что многоугольник имеет две стороны- внутреннюю и внешнюю. Будем называть грань внешней, если при взгляде  с внешней стороны объекта на эту грань ее вершины «обходятся» против часовой стрелки. Этот метод известен как «правило правой руки», поскольку, если расположить четыре согнутых пальца павой руки вдоль направления обхода контура, большой палец будет указывать наружную сторону грани.

Список вершин можно использовать и для хранения информации, необходимой для раскрашивания куба. С вершинами в данном примере будут ассоциироваться чистые цвета вершин цветового куба (черный, белый, красный, зеленый, синий, голубой, фиолетовый, желтый):

GLfloat colors[][3]={{0.0,0.0,0.0},{1.0,0.0,0.0},

{1.0,1.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},

{1.0,0.0,1.0},{1.0,1.0,1.0},{0.0,1.0,1.0}};

 Для управления режимом интерполяции цветов используется команда void glShadeModel(GLenummode) вызов которой с параметром GL_SMOOTH включает интерполяцию (установка по умолчанию), а с GL_FLAT отключает.

Функция quad() вычерчивает четырехугольник, заданный точками в списке вершин, а функция colorcube() задает шесть граней таким образом, чтобы все они были внешними.

GLfloat vertices[][3]={{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},

{1.0,1.0,-1.0},{-1.0,1.0,-1.0},{-1.0,-1.0,1.0},

{1.0,-1.0,1.0},{1.0,1.0,1.0},{-1.0,1.0,1.0}};

GLfloat colors[][3]={{0.0,0.0,0.0},{1.0,0.0,0.0},

{1.0,1.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},

{1.0,0.0,1.0},{1.0,1.0,1.0},{0.0,1.0,1.0}};

void polygon(int a, int b, int c, int d)

{

glBegin(GL_POLYGON);

glColor3fv(colors[a]);

glVertex3fv(vertices[a]);

glColor3fv(colors[b]);

glVertex3fv(vertices[b]);

glColor3fv(colors[c]);

glVertex3fv(vertices[c]);

glColor3fv(colors[d]);

glVertex3fv(vertices[d]);

glEnd();

}

void colorcube()

{

polygon(0,3,2,1);

polygon(2,3,7,6);

polygon(0,4,7,3);

polygon(1,2,6,5);

polygon(4,5,6,7);

 polygon(0,1,5,4);

}

Проективные преобразования в OpenGL

В составе OpenGL имеются две функции для задания перспективных проекций и одна для задания параллельных проекций. Каждая из функций определяет зону видимости- пирамиду или параллелепипед. Объекты, не попадающие в эту зону, отсекаются и не включаются в отображаемую сцену.

Перспективные преобразования в OpenGL

Параметры пирамиды видимости задаются функцией glFrustum(), смысл аргументов которой поясняет рис.4.1.

 

Рис.4.1.

void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); 

Значения аргументов near и far, задающих положение передней и задней отсекающих плоскостей, должны быть положительными  и отсчитываться от  центра проецирования вдоль оси проецирования.

Поскольку матрица проецирования умножается на текущую матрицу, сначала нужно задать режим работы с этой матрицей. Типичная последовательность операций представлена ниже.

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glFrustum(xmin, xmax, ymin, ymax, near, far);

Во многих приложениях предпочтительнее задавать не линейные параметры, характеризующие положение углов усеченной пирамиды видимости, а угол и поле зрения. Однако, если картинная плоскость является прямоугольником, а не квадратом, то нужно задавать пару углов зрения: один в вертикальной плоскости, другой- в горизонтальной (рис.4.2).

Рис.4.2.

  void gluPerspective(GLdouble fovy, GLdouble aspect,
GLdouble
near, GLdouble far); 

Аргументы этой функции имеют следующий смысл:

  •  fovy- угол зрения в вертикальной плоскости;
  •  aspect- отношение ширины окна картинной плоскости к его высоте;
  •  near и far- расстояние от центра проецирования до передней и задней отсекающих плоскостей.

Параллельное проецирование в OpenGL

В составе OpenGL имеется только одна функция для задания параметров параллельного проецирования, которая формирует ортогональную проекцию. Зона видимости при этом превращается в параллелепипед (рис.4.3.)

Рис.4.3.

void glOrtho(GLdouble left, GLdouble right, GLdouble bottom,
GLdouble
top, GLdouble near, GLdouble far);

Аргументы вызова имеют тот же геометрический смысл, что и одноименные аргументы функции glFrustum().

Задание положения и ориентации камеры.

В составе OpenGL имеется функция gluLookAt(), которая позволяет задать положение и ориентацию камеры (рис.4.4).

Рис 4.4.

void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz); 

Аргументы функции имеют следующий вид:

  •  eyex, eyey, eyez – координаты точки наблюдения;
  •  centerx, centery, centerz - координаты контрольной точки объекта, указывающей центр сцены;
  •  upx, upy, upz- компоненты точки, которая задает положительное направления оси Y сцены.

 Порядок выполнения работы

  1.  Составить программу рисования куба.
  2.  Получить перспективную и параллельную проекцию куба.
  3.  Организовать перемещение камеры вокруг куба, изменяя координаты точки наблюдения – eyex, eyey, eyez. Для перемещения камеры использовать клавиатуру.


 

А также другие работы, которые могут Вас заинтересовать

35148. редства удалённого выполнения заданий в Windows 38 KB
  Планировщик заданий Windows осуществляет настройку как для локального компьютера так и для удаленной системы. На удаленных системах эта возможность обеспечивается совместной работой нескольких служб и программ: Планировщик заданий это стандартная служба Windows управляющая планировщиком заданий. Создание заданий на локальном компьютере осуществляется через: ПускВсе программыСтандартныеНазначенные задания Создание заданий на удаленном компьютере осуществляется через: Сетевое окружениеОтобразить компьютеры рабочей группывыбираем...
35149. Средства удалённого доступа к сети в Windows 40 KB
  в ОС Windows XP имеются встроенные инструменты для организации таких подключений : Remote Desktop Удаленный рабочий стол Remote ssistnce Удаленный помощник. Remote ssistnce Remote ssistnce позволяет пригласить другого пользователя друга знакомого специалиста для оказания помощи. При этом приглашенный участник в отличие от использования Remote Desktop может наблюдать за действиями пользователя. При этом Remote ssistnt самостоятельно управляет настройками соединения подстраивая объем передаваемых данных под возможности канала...
35150. Виртуальные частные сети. Архитектура и протоколы 42.5 KB
  VPN англ. В зависимости от применяемых протоколов и назначения VPN может обеспечивать соединения трёх видов: узелузел узелсеть и сетьсеть. Уровни реализации Обычно VPN развёртывают на уровнях не выше сетевого так как применение криптографии на этих уровнях позволяет использовать в неизменном виде транспортные протоколы такие как TCP UDP. Пользователи Microsoft Windows обозначают термином VPN одну из реализаций виртуальной сети PPTP причём используемую зачастую не для создания частных сетей.
35151. Методы повышения надёжности хранения данных. Технология RAID 50.5 KB
  Технология RID Одна из причин ведущих к утрате информации аппаратные сбои и поломки. RID это акроним от Redundnt rry of Independent Disks. Этим набором устройств управляет специальный RIDконтроллер контроллер массива который инкапсулирует в себе функции размещения данных по массиву; а для всей остальной системы позволяет представлять весь массив как одно логическое устройство ввода вывода. В зависимости от уровня RID проводится или зеркалирование или распределение данных по дискам.
35152. Цели и задачи администрирования 25 KB
  чтобы предоставить пользователям ИС наилучшее возможности по эффективному использованию ресурсов ИС при объективных ограничениях. 3 квалифицируемая помощь пользователям. Здесь задача состоит в том чтобы реализовать в ИС выбранную стратегию ИБ на базе 1 или нескольких политик безопасности обеспечить использование ИС только санкционированным пользователям предусмотреть резервное копирование и восстановления отдельных ресурсов или всей ИС.
35153. Сетевое администрирование. Основные понятия. Сетевые ОС 26.5 KB
  Компьютерные сети это совокупность компьютеров связанных коммуникационной системой необходимым программным обеспечением позволяющей пользователям и приложениям получить доступ к ресурсам компьютеров сети. клиентская часть средство запроса на доступ к удаленным серверам транспортные средства сетевой ОС обеспечивающие передачу доступных между компьютерами Среди компонентов сети выделяют сетевые службы это программные модули работающие в установленном режиме которые предоставляют доступ к конкретным ресурсам компа через сеть....
35154. Модели управления доступом к ресурсам 27 KB
  Основными компонентами ролевой модели разрешения права пользователя Разрешение определяет тип доступа к объекту или его свойству дается пользователям или группам . разрешения применяются к защищенным объектам Рекомендуется назначать разрешения группам. Существуют группы разрешений которые являются основными или обязательными чтение разрешения смена разрешения смена владельца удаление разрешения Существует специальный вид разрешения владения которое назначается при создании объектов. Какие бы разрешения не были установлены для...
35155. Администрирование сетей Microsoft. Средства анализа состояния сети в Windows 29 KB
  Средства анализа состояния сети в Windows. Базовые принципы: 1 необходимо иметь точную схему и документацию сети: текущая топологическая схема подробная информация обо всем его сетевом оборудовании его конфигурации и использующихся протоколах IPадресах каналах связи WU сервера и сегментах пользовательских локальных сетей. 2 перед изменениями в сети а так же после этих изменений необходимо оценивать работу в сети для того чтобы делать выводы об отрицательном или положительном влиянии внешних изменений . В Windows отдается приоритет...
35156. Службы каталогов. Пространство имен X.500 и протокол LDAP 30 KB
  Службы каталогов. Основная цель объединения компов в вычислительную сеть это обеспечение совместного использования ресурсов при администрировании вычислительной сети 1 из основных задач это реализация оптимального метода организации общих ресурсов одним из методов эффективного управления множеством ресурсов и множеством потребителей вычислительной сети является разветвленная служба каталогов Служба каталогов это сетевая служба позволяющая получать доступ без знания точного местоположения ресурса При использовании службы каталогов вся...