OpenGL. Компьютерная графика. Васильев С.А. - 19 стр.

UptoLike

Составители: 

21
able() с таким же аргументом. Напомним, логическая операция выполняется побитно над данными.
6 РИСОВАНИЕ ГОТОВЫХ 3D ОБЪЕКТОВ
Рассмотренные выше графические примитивы являются базовыми элементами для построения
графических замыслов. Но в библиотеке GLU, которая реализована в виде модуля glu32.dll, описаны
более сложные графические объекты, такие как сфера, цилиндр, диск и часть диска.
Для построения подобных примитивов необходимо создать указатель на quadric-объект с помощью
команды gluNewQuadric(), а после рисования удалить вызовом функции gluDeleteQuadric. Схема рисо-
вания выглядит следующим образом:
GLUquadricObj *quadric_obj;
quadric_obj=gluNewQuadric();
...
// вызов команды рисования графического объекта GLU
gluDeleteQuadric(quadric_obj).
Рассмотрим команды рисования графических объектов отдельно:
void gluSphere (GLUquadricObj *quadric_obj,
GLdouble radius,
GLint slices,
GLint stacks)
Данная команда строит сферу с центром в начале координат и радиусом radius. Число разбиений
сферы вокруг оси z задается параметром slices, а вдоль оси z параметром stacks. Внимание! Интересный
эффект можно получить от сферы если задавать значения последних двух параметров из ряда величин:
2, 3, 4 и т.д.
void gluCylinder (GLUquadricObj *quadric_obj,
GLdouble baseRadius, GLdouble topRadius,
GLdouble height,
GLint slices,
GLint stacks)
Эта команда строит цилиндр без оснований (кольцо), продольная ось параллельна оси z, заднее ос-
нование имеет радиус baseRadius, и расположено в плоскости z = 0, переднее основание имеет радиус
topRadius и расположено в плоскости z = height. Внимание! Если задать один из радиусов равным нулю,
то будет построен конус. Параметры slices и stacks имеют тот же смысл, что и в команде gluSphere.
Внимание! при увеличении значения stacks (больше двух) улучшается эффект сглаживания интерполя-
ционной закраски поверхности.
void gluDisk (GLUquadricObj *quadric_obj,
GLdouble innerRadius, GLdouble outerRadius,
GLint slices,
GLint loops)
Данная команда строит плоский диск (т.е. круг) с центром в начале координат и радиусом
outerRadius. Если значение innerRadius ненулевое, то в центре диска будет находиться отверстие радиу-
сом innerRadius. Параметр slices задает число разбиений диска вокруг оси z, а параметр loops число кон-
центрических окружностей, перпендикулярных оси z.
void gluPartialDisk (GLUquadricObj *quadric_obj,
GLdouble innerRadius, GLdouble outerRadius,
GLint slices,
GLint loops,
GLdouble startAngle, GLdouble sweepAngle);
Отличие этой команды от предыдущей заключается в том, что она строит сектор круга, начальный
и конечный углы которого отсчитываются против часовой стрелки от положительного направления оси
y и задаются параметрами startAngle и sweepAngle. Внимание! Углы задаются в градусах.
Кроме этих готовых графических объектов в OpenGL можно использовать объекты предоставлен-
ные библиотекой GLUT: сфера, куб, конус, тор, тетраэдр, додекаэдр, икосаэдр, октаэдр и чайник. Для
детального изучения команд моделирования подобных объектов рекомендуем обратиться к соответст-
вующей документации.