ФУНКЦИИ МНОГОГРАННИКОВ OpenGL

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

ФУНКЦИИ OpenGL ЗАПОЛНЕНИЯ ОБЛА-ТИ МНОГОУГОЛЬНИКА

Чтобы ввести набор многоугольных участков для фрагмента поверхности объекта или полное описание многогранника, можно использовать константы (примитивы) OpenGL GL_POLYGON, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS и GL_QUAD_STRIP. Таким образом можно, например, представить боковую поверхность цилиндра в виде мозаичной структуры с помощью четырехугольной полоски. Аналогично все стороны параллелограмма можно описать набором многоугольников, а все грани треугольной пирамиды задать с помощью набора связанных треугольных поверхностей.

ФУНКЦИИ GLUT ПРАВИЛЬНЫХ МНОГОГРАННИКОВ

В процедурах библиотеки GLLTT предопределены некоторые стандартные формы (пять правильных многогранников). Отличительной особенностью данных многогранников, также называемых телами Платона, является то, что все грани любого правильного многогранника - идентичные правильные многоугольники. -ледовательно, все стороны правильного многогранника равны, все плоские углы при вершинах равны, и все углы между гранями также равны. Многогранники названы согласно числу граней: правильный тетраэдр (или треугольная пирамида, 4 грани), правильный гексаэдр (или куб, 6 граней), правильный октаэдр (8 граней), правильный додекаэдр (12 граней) и правильный икосаэдр (20 граней).

Библиотека GLUT предлагает 10 функций генерации названных тел: пять функций дают каркасные объекты, пять отображают грани многогранников как затененные закрашенные области. Характеристики закрашиваемой области определяются свойствами материала и условиями освещения, заданными для сцены. Все правильные многогранники описываются в модельных координатах, так что все они центрированы в начале внешней системы координат.

Рис. 8.1. Перспективная проекция пяти многогранников GLUT, масштабированных и размещенных в окне на экране дисплея с помощью процедуры displayWirePoly-hedra

ПРИМЕР ПРОГРАММЫ GLUT ПО-ТРОЕНИЯ МНОГОГРАННИКОВ

В приведенной ниже программе с помощью функций GLUT вывода на экран тел Платона генерируются преобразованные каркасные перспективные изображения данных многогранников. Все пять тел размещаются в пределах одного окна (рис. 8.1).

♦include <GL/glut.h>

GLsizei winWidth = 500, winHeight = 500;

/* Исходный размер окна. */ void init (void)

{

glClearColor (1.0, 1.0, 1.0, 0.0); // Белое окно на экране.

}

void displayWirePolyhedra (void)

{

glClear (GL_COLOR_BUFFER_BIT); // Очистить окно. glColor3f (0.0, 0.0, 1.0); // -делать цвет линий синим.

/* Задать преобразование точки наблюдения. */ gluLookAt (5.0, 5.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

/* Масштабировать куб и отобразить его в виде

* каркасного параллелепипеда.


⇐ вернуться назад | | далее ⇒