14573

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

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

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

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

Русский

2013-06-08

81.5 KB

9 чел.

Лабораторная работа №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. Для перемещения камеры использовать клавиатуру.


 

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

45319. Содержание, форма и основные свойства конституции 25.12 KB
  Правовой статус главы муниципального образования. Закона об общих принципах организации местного самоуправления уставом муниципального образования может быть предусмотрена должность главы муниципального образования – выборного должностного лица возглавляющего деятельность по осуществлению местного самоуправления на территории муниципального образования. Глава муниципального образования соединяет в своем правовом и фактическом статусе черты префекта департамента Франции и председателя исполкома местного Совета. Термин глава муниципального...
45320. Механизм защиты Конституции РФ 22.96 KB
  В конституционной практике Российской Федерации давно сложился ряд правовых форм способов защиты Конституции:1 процесс охраны Конституции Президентом Российской Федерации. Во-первых в качестве гаранта федеральной Конституции Президент Российской Федерации который наделяется прерогативами по защите конституционного строя прав и свобод человека и гражданина осуществлению мер по охране суверенитета РФ ее независимости и государственной целостности обеспечению согласованного функционирования органов государственной власти. Суд наделен...
45321. Конституционный строй 19.94 KB
  Одним из ключевых институтов гражданской службы определенных Федеральным законом О государственной гражданской службе Российской Федерации является институт должности гражданской службы. Прохождение гражданской службы возможно только на должности государственной службы. При освобождении от должности и не будучи назначенным на другую должность лицо увольняется с гражданской службы. Должности федеральной государственной гражданской службы учреждаются федеральным законом или указом Президента Российской Федерации должности...
45322. ИНСТИТУТ ОСНОВНЫХ ПРАВ И СВОБОД ЧЕЛОВЕКА И ГРАЖДАНИНА 27.9 KB
  Правовой статус депутата представительного органа мсу Закон об общих принципах организации местного самоуправления развивая нормы Конституции РФ весьма удачно решил проблему политикоправового статуса депутата других членов выборных органов. Представительный орган местного самоуправления состоит из депутатов избираемых на основе всеобщего равного и прямого избирательного права при тайном голосовании п. Известно что в мировой истории становления демократических начал императивный мандат сыграл решающую роль при формировании парламентского...
45323. Конституционно-правовой механизм обеспечения прав и свобод человека и гражданина 19.09 KB
  Основные принципы государственной службы в Российской Федерации. Вопрос о принципах государственной службы является важнейшим в структуре института государственной службы правовой системы не только Российской Федерации но и других стран мира. Термин принципы государственной службы указывает на основополагающие черты сущностные характеристики важнейшее содержание и значение самой государственной службы а также на главнейшие юридические положения в структуре одноименного правового института. Анализируя принципы государственной службы...
45324. Принципы российского федерализма 27.75 KB
  Российская Федерация состоит из республик краев областей городов федерального значения автономной области автономных округов равноправных субъектов Российской Федерации. В составе Российской Федерации в соответствии со ст. Государственная целостность Российской Федерации. Государственная целостность федеративного государства гарантируется тем что государственный суверенитет как верховенство и независимость государственной власти на всей своей территории и в международных отношениях принадлежит только Федерации но...
45325. Избирательный процесс в РФ: общая характеристика 25.17 KB
  Представительный орган муниципального образования Представительный орган муниципального образования может осуществлять свои полномочия в случае избрания не менее двух третей от установленной численности депутатов. Уставом муниципального образования определяется правомочность заседания представительного органа муниципального образования. Заседание представительного органа муниципального образования не может считаться правомочным если на нем присутствует менее 50 процентов от числа избранных депутатов.
45326. Право на объединение, многопартийность и правовой статус политических партий в РФ 25.91 KB
  Политическая партия определяется как общественное объединение созданное в целях участия граждан Российской Федерации в политической жизни общества посредством формирования и выражения их политической воли участия в общественных и политических акциях в выборах и референдумах а также в целях представления интересов граждан в органах государственной власти и органах местного самоуправления. Деятельность политических партий должна осуществляться на принципах добровольности равноправия самоуправления законности и гласности. Иначе...
45327. Гражданство РФ - принципы, основания его приобретения и прекращения 22.21 KB
  Основы конституционного строя детальная же регламентация этого конституционно-правового института закреплена в Федеральном законе О гражданстве Российской Федерации. Конституция РФ и Закон о гражданстве закрепляют следующие принципы гражданства Российской Федерации: Единство гражданства. В соответствии с этим принципом республики – субъекты РФ не могут устанавливать собственное гражданство предусматривающее изъятия из общего единого статуса гражданина Российской Федерации; гражданин республики одновременно является...